|  | .. _96b_nitrogen_board: | 
|  |  | 
|  | 96Boards Nitrogen | 
|  | ################# | 
|  |  | 
|  | Overview | 
|  | ******** | 
|  |  | 
|  | The 96Boards Nitrogen hardware provides support for the Nordic Semiconductor | 
|  | nRF52832 ARM Cortex-M4F CPU. | 
|  |  | 
|  | .. figure:: img/96b_nitrogen.jpg | 
|  | :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 have not been enabled yet for this board. | 
|  | 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                  | | 
|  | +--------+-------------+----------------------+ | 
|  |  | 
|  | More detailed information about the connectors can be found in | 
|  | `96Boards IE Specification`_. | 
|  |  | 
|  | 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`_. | 
|  |  | 
|  | To use ``pyOCD``, install the :ref:`pyocd-debug-host-tools` and make sure they | 
|  | are in your search path. | 
|  |  | 
|  | 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:`pyocd-debug-host-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 | 
|  |  | 
|  | .. _96Boards IE Specification: | 
|  | https://linaro.co/ie-specification |