| .. _96b_neonkey: |
| |
| 96Boards Neonkey |
| ################ |
| |
| Overview |
| ******** |
| |
| 96Boards Neonkey board is based on the STMicroelectronics STM32F411CE |
| Cortex M4 CPU. |
| |
| .. figure:: img/96b_neonkey.jpg |
| :width: 500px |
| :align: center |
| :height: 330px |
| :alt: 96Boards Neonkey |
| |
| 96Boards Neonkey |
| |
| This board acts as a sensor hub platform for all 96Boards compliant |
| family products. It can also be used as a standalone board. |
| |
| Hardware |
| ******** |
| |
| 96Boards Neonkey provides the following hardware components: |
| |
| - STM32F411CE in UFQFPN48 package |
| - ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU |
| - 84 MHz max CPU frequency |
| - 1.8V work voltage |
| - 512 KB Flash |
| - 128 KB SRAM |
| - On board sensors: |
| |
| - Temperature/Humidity: SI7034-A10 |
| - Pressure: BMP280 |
| - ALS/Proximity: RPR-0521RS |
| - Geomagnetic: BMM150 |
| - Acclerometer/Gyroscope: BMI160 |
| - AMR Hall sensor: MRMS501A |
| - Microphone: SPK0415HM4H-B |
| |
| - 4 User LEDs |
| - 15 General purpose LEDs |
| - GPIO with external interrupt capability |
| - I2C (3) |
| - SPI (1) |
| - I2S (1) |
| |
| Supported Features |
| ================== |
| |
| The Zephyr 96b_neonkey board configuration supports the following hardware |
| features: |
| |
| +-----------+------------+-------------------------------------+ |
| | Interface | Controller | Driver/Component | |
| +===========+============+=====================================+ |
| | NVIC | on-chip | nested vector interrupt controller | |
| +-----------+------------+-------------------------------------+ |
| | SYSTICK | on-chip | system clock | |
| +-----------+------------+-------------------------------------+ |
| | UART | on-chip | serial port | |
| +-----------+------------+-------------------------------------+ |
| | GPIO | on-chip | gpio | |
| +-----------+------------+-------------------------------------+ |
| | PINMUX | on-chip | pinmux | |
| +-----------+------------+-------------------------------------+ |
| | FLASH | on-chip | flash | |
| +-----------+------------+-------------------------------------+ |
| | SPI | on-chip | spi | |
| +-----------+------------+-------------------------------------+ |
| | I2C | on-chip | i2c | |
| +-----------+------------+-------------------------------------+ |
| |
| More details about the board can be found at `96Boards website`_. |
| |
| The default board configuration can be found in the defconfig file: |
| |
| ``boards/arm/96b_neonkey/96b_neonkey_defconfig`` |
| |
| Connections and IOs |
| =================== |
| |
| LED |
| --- |
| |
| - LED1 / User1 LED = PB12 |
| - LED2 / User2 LED = PB13 |
| - LED3 / User3 LED = PB14 |
| - LED4 / User4 LED = PB15 |
| |
| Push buttons |
| ------------ |
| |
| - BUTTON = RST (SW1) |
| - BUTTON = USR (SW2) |
| |
| System Clock |
| ============ |
| |
| 96Boards Neonkey can be driven by an internal oscillator as well as the main |
| PLL clock. By default System clock is sourced by PLL clock at 84MHz, driven |
| by internal oscillator. |
| |
| Serial Port |
| =========== |
| |
| On 96Boards Neonkey Zephyr console output is assigned to USART1. |
| Default settings are 115200 8N1. |
| |
| I2C |
| --- |
| |
| 96Boards Neonkey board has up to 3 I2Cs. The default I2C mapping for Zephyr is: |
| |
| - I2C1_SCL : PB6 |
| - I2C1_SDA : PB7 |
| - I2C2_SCL : PB10 |
| - I2C2_SDA : PB3 |
| - I2C3_SCL : PA8 |
| - I2C3_SCL : PB4 |
| |
| SPI |
| --- |
| |
| 96Boards Neonkey board has one SPI. The default SPI mapping for Zephyr is: |
| |
| - SPI1_NSS : PA4 |
| - SPI1_SCK : PA5 |
| - SPI1_MISO : PA6 |
| - SPI1_MOSI : PA7 |
| |
| Programming and Debugging |
| ************************* |
| |
| Building |
| ======== |
| |
| Here is an example for building the :ref:`hello_world` application. |
| |
| .. zephyr-app-commands:: |
| :zephyr-app: samples/hello_world |
| :board: 96b_neonkey |
| :goals: build |
| |
| Flashing |
| ======== |
| |
| 96Boards Neonkey can be flashed by two methods, one using the ROM |
| bootloader and another using the SWD debug port (which requires additional |
| hardware). |
| |
| Using ROM bootloader: |
| --------------------- |
| |
| ROM bootloader can be triggered by the following pattern: |
| |
| 1. Connect BOOT0 to VDD (link JTAG pins 1 and 5 on P4 header) |
| 2. Press and hold the USR button |
| 3. Press and release the RST button |
| |
| More detailed information on activating the ROM bootloader can be found in |
| Chapter 29 of Application note `AN2606`_. The ROM bootloader supports flashing |
| via UART, I2C and SPI protocols. |
| |
| For flashing, `stm32flash`_ command line utility can be used. The following |
| command will flash the ``zephyr.bin`` binary to the Neonkey board using UART |
| and starts its execution: |
| |
| .. code-block:: console |
| |
| $ stm32flash -w zephyr.bin -v -g 0x08000000 /dev/ttyS0 |
| |
| .. note:: |
| The above command assumes that Neonkey board is connected to |
| serial port ``/dev/ttyS0``. |
| |
| Using SWD debugger: |
| ------------------- |
| |
| For flashing via SWD debug port, 0.1" male header must be soldered at P4 |
| header available at the bottom of the board, near RST button. |
| |
| Use the `Black Magic Debug Probe`_ as an SWD programmer, which can |
| be connected to the P4 header using its flying leads and its 20 Pin |
| JTAG Adapter Board Kit. When plugged into your host PC, the Black |
| Magic Debug Probe enumerates as a USB serial device as documented on |
| its `Getting started page`_. |
| |
| It also uses the GDB binary provided with the Zephyr SDK, |
| ``arm-zephyr-eabi-gdb``. Other GDB binaries, such as the GDB from GCC |
| ARM Embedded, can be used as well. |
| |
| .. code-block:: console |
| |
| $ arm-zephyr-eabi-gdb -q zephyr.elf |
| (gdb) target extended-remote /dev/ttyACM0 |
| Remote debugging using /dev/ttyACM0 |
| (gdb) monitor swdp_scan |
| Target voltage: 1.8V |
| Available Targets: |
| No. Att Driver |
| 1 STM32F4xx |
| (gdb) attach 1 |
| Attaching to Remote target |
| 0x080005d0 in ?? () |
| (gdb) load |
| |
| Debugging |
| ========= |
| |
| After flashing 96Boards Neonkey, it can be debugged using the same |
| GDB instance. To reattach, just follow the same steps above, till |
| "attach 1". You can then debug as usual with GDB. In particular, type |
| "run" at the GDB prompt to restart the program you've flashed. |
| |
| References |
| ********** |
| |
| .. _96Boards website: |
| https://www.96boards.org/product/neonkey/ |
| |
| .. _AN2606: |
| https://www.st.com/resource/en/application_note/cd00167594.pdf |
| |
| .. _stm32flash: |
| https://sourceforge.net/p/stm32flash/wiki/Home/ |
| |
| .. _Black Magic Debug Probe: |
| https://github.com/blacksphere/blackmagic/wiki |
| |
| .. _Getting started page: |
| https://github.com/blacksphere/blackmagic/wiki/Getting-Started |