zephyr/boards/arm/96b_nitrogen/doc/96b_nitrogen.rst

345 lines
10 KiB
ReStructuredText

.. _96b_nitrogen_board:
96Boards Nitrogen
#################
Overview
********
Zephyr applications use the 96b_nitrogen board configuration to run on the
96Boards Nitrogen hardware. It provides support for the Nordic Semiconductor
nRF52832 ARM Cortex-M4F CPU.
.. figure:: img/96b-nitrogen-front.png
:width: 487px
:align: center
:alt: 96Boards Nitrogen
96Boards Nitrogen
More information about the board can be found at the `seeed BLE Nitrogen`_
website. The `Nordic Semiconductor Infocenter`_ contains the processor's
information and the datasheet.
Hardware
********
96Boards Nitrogen provides the following hardware components:
- nRF52832 microcontroller with 512kB Flash, 64kB RAM
- ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU
- Bluetooth LE
- NFC
- LPC11U35 on board SWD debugger
- SWD debugger firmware
- USB to UART
- Drag and Drop firmware upgrade
- 7 LEDs
- USR1, BT, PWR, CDC, DAP, MSD, Battery charge
- SWD debug connectors
- nRF52832 SWD connector
- nRF52832 Uart connector
- On board chip antenna
- 1.8V work voltage
- 2x20pin 2.0mm pitch Low speed connector
Supported Features
==================
The Zephyr 96b_nitrogen board configuration supports the following hardware
features:
+-----------+------------+--------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================================+
| NVIC | on-chip | nested vectored interrupt controller |
+-----------+------------+--------------------------------------+
| RTC | on-chip | system clock |
+-----------+------------+--------------------------------------+
| UART | on-chip | serial port |
+-----------+------------+--------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+--------------------------------------+
| FLASH | on-chip | flash |
+-----------+------------+--------------------------------------+
| RADIO | on-chip | Bluetooth |
+-----------+------------+--------------------------------------+
| RTT | on-chip | console |
+-----------+------------+--------------------------------------+
Other hardware features are not supported by the Zephyr kernel.
See `Nordic Semiconductor Infocenter`_ for a complete list of nRF52-based
board hardware features.
The default configuration can be found in the defconfig file:
``boards/arm/96b_nitrogen/96b_nitrogen_defconfig``
Pin Mapping
===========
LED
---
- LED1 / User LED (green) = P0.29
- LED2 / BT LED (blue) = P0.28
Push buttons
------------
- BUTTON = SW1 = P0.27
External Connectors
-------------------
Low Speed Header
+--------+-------------+----------------------+
| PIN # | Signal Name | nRF52832 Functions |
+========+=============+======================+
| 1 | GND | GND |
+--------+-------------+----------------------+
| 3 | UART CTS | P.014 / TRACEDATA[3] |
+--------+-------------+----------------------+
| 5 | UART TX | P0.13 |
+--------+-------------+----------------------+
| 7 | UART RX | P0.15 / TRACEDATA[2] |
+--------+-------------+----------------------+
| 9 | UART RTS | P0.12 |
+--------+-------------+----------------------+
| 11 | UART TX | P0.13 |
+--------+-------------+----------------------+
| 13 | UART RX | P0.15 / TRACEDATA[2] |
+--------+-------------+----------------------+
| 15 | P0.22 | P0.22 |
+--------+-------------+----------------------+
| 17 | P0.20 | P0.20 |
+--------+-------------+----------------------+
| 19 | N/A | N/A |
+--------+-------------+----------------------+
| 21 | N/A | N/A |
+--------+-------------+----------------------+
| 23 | P0.02 | P0.02 |
+--------+-------------+----------------------+
| 25 | P0.04 | P0.04 |
+--------+-------------+----------------------+
| 27 | P0.06 | P0.06 |
+--------+-------------+----------------------+
| 29 | P0.08 | P0.08 |
+--------+-------------+----------------------+
| 31 | P0.16 | P0.16 |
+--------+-------------+----------------------+
| 33 | P0.18 | P0.18 |
+--------+-------------+----------------------+
| 35 | VCC | |
+--------+-------------+----------------------+
| 37 | USB5V | |
+--------+-------------+----------------------+
| 39 | GND | GND |
+--------+-------------+----------------------+
+--------+-------------+----------------------+
| PIN # | Signal Name | nRF52832 Functions |
+========+=============+======================+
| 2 | GND | GND |
+--------+-------------+----------------------+
| 4 | PWR BTN | |
+--------+-------------+----------------------+
| 6 | RST BTN | P0.21 / RESET |
+--------+-------------+----------------------+
| 8 | P0.26 | P0.26 |
+--------+-------------+----------------------+
| 10 | P0.25 | P0.25 |
+--------+-------------+----------------------+
| 12 | P0.24 | P0.24 |
+--------+-------------+----------------------+
| 14 | P0.23 | P0.23 |
+--------+-------------+----------------------+
| 16 | N/A | N/A |
+--------+-------------+----------------------+
| 18 | N/A | PC7 |
+--------+-------------+----------------------+
| 20 | N/A | PC9 |
+--------+-------------+----------------------+
| 22 | N/A | PB8 |
+--------+-------------+----------------------+
| 24 | P0.03 | P0.03 |
+--------+-------------+----------------------+
| 26 | P0.05 | P0.05 |
+--------+-------------+----------------------+
| 28 | P0.07 | P0.07 |
+--------+-------------+----------------------+
| 30 | P0.11 | P0.11 |
+--------+-------------+----------------------+
| 32 | P0.17 | P0.17 |
+--------+-------------+----------------------+
| 34 | P0.19 | P0.19 |
+--------+-------------+----------------------+
| 36 | NC | |
+--------+-------------+----------------------+
| 38 | NC | |
+--------+-------------+----------------------+
| 40 | GND | GND |
+--------+-------------+----------------------+
System Clock
============
nRF52 has two external oscillators. The frequency of the slow clock is
32.768 kHz. The frequency of the main clock is 32 MHz.
Serial Port
-----------
96Boards Nitrogen has one UART, which is used as Zephyr console.
Default settings is 115200 8N1.
I2C
---
96Boards Nitrogen has one I2C. The default I2C mapping for Zephyr is:
- I2C0_SCL : P0.22
- I2C0_SDA : P0.20
SPI
---
96Boards Nitrogen has one SPI. The default SPI mapping for Zephyr is:
- SPI0_NSS : P0.24
- SPI0_SCK : P0.26
- SPI0_MISO : P0.25
- SPI0_MOSI : P0.23
Flashing Zephyr onto 96Boards Nitrogen
**************************************
The 96Boards Nitrogen board can be flashed via the `CMSIS DAP`_ interface,
which is provided by the micro USB interface to the LPC11U35 chip.
Using the CMSIS-DAP interface, the board can be flashed via the USB storage
interface (drag-and-drop) and also via `pyOCD`_.
Installing pyOCD
================
The latest stable version of `pyOCD`_ can be installed via pip as follows:
.. code-block:: console
$ pip install --pre -U pyocd
To install the latest development version (master branch), do the following:
.. code-block:: console
$ pip install --pre -U git+https://github.com/mbedmicro/pyOCD.git#egg=pyOCD
You can then verify that your board is detected by pyOCD by running:
.. code-block:: console
$ pyocd-flashtool -l
Common Errors
-------------
No connected boards
-------------------
If you don't use sudo when invoking pyocd-flashtool, you might get any of the
following errors:
.. code-block:: console
No available boards are connected
.. code-block:: console
No connected boards
.. code-block:: console
Error: There is no board connected.
To fix the permission issue, simply add the following udev rule for the
NXP LPC1768 interface:
.. code-block:: console
$ echo 'ATTR{idProduct}=="0204", ATTR{idVendor}=="0d28", MODE="0666", GROUP="plugdev"' > /etc/udev/rules.d/50-cmsis-dap.rules
Finally, unplug and plug the board again.
ValueError: The device has no langid
------------------------------------
As described by `pyOCD issue 259`_, you might get the
:code:`ValueError: The device has no langid` error when not running
pyOCD as root (e.g. sudo).
To fix the above error, add the udev rule shown in the previous section
and install a more recent version of pyOCD.
Flashing an Application to 96Boards Nitrogen
============================================
Here is an example for the :ref:`hello_world` application. This
requires installing the :ref:`nxp_opensda_pyocd` tools.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: 96b_nitrogen
:goals: build flash
Run your favorite terminal program to listen for output.
.. code-block:: console
$ minicom -D <tty_device> -b 115200
Replace :code:`<tty_device>` with the port where the board 96Boards Nitrogen
can be found. For example, under Linux, :code:`/dev/ttyACM0`.
The ``-b`` option sets baud rate ignoring the value from config.
Press the Reset button and you should see the the following message in your
terminal:
.. code-block:: console
Hello World! arm
Debugging with GDB
==================
You can debug an application in the usual way. Here is an example for the
:ref:`hello_world` application. This also requires pyOCD.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: 96b_nitrogen
:maybe-skip-config:
:goals: debug
.. _pyOCD:
https://github.com/mbedmicro/pyOCD
.. _CMSIS DAP:
https://developer.mbed.org/handbook/CMSIS-DAP
.. _Nordic Semiconductor Infocenter:
http://infocenter.nordicsemi.com/
.. _seeed BLE Nitrogen:
http://wiki.seeed.cc/BLE_Nitrogen/
.. _pyOCD issue 259:
https://github.com/mbedmicro/pyOCD/issues/259