You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
383 lines
13 KiB
383 lines
13 KiB
.. _96b_carbon_board: |
|
|
|
96Boards Carbon |
|
############### |
|
|
|
Overview |
|
******** |
|
|
|
The 96Boards is based on the STMicroelectronics STM32F401RET Cortex-M4 CPU and |
|
also contains a nRF51822 chip connected over SPI for BLE connectivity. |
|
|
|
The 96Boards Carbon board is built with two chips: an STMicroelectronics |
|
STM32F401RET Cortex-M4 CPU and an nRF51822 chip connected to |
|
the Cortex-M4 CPU over SPI for Bluetooth LE connectivity. Even though |
|
both chips exist on the same physical board, they must be programmed |
|
separately: |
|
|
|
- The ``96b_carbon/stm32f401xe`` configuration is used when developing programs for |
|
the main chip on the board, the STM32F401RET. Users will likely want to |
|
write applications targeting this chip, using the ``96b_carbon`` |
|
configuration, since it is connected to all of the breakout |
|
I/O headers. |
|
|
|
- The ``96b_carbon/nrf51822`` configuration should be used for programming |
|
the secondary nRF51822 chip. Most users will likely not develop |
|
applications for this chip, since Zephyr already provides a |
|
sample application that can be flashed onto the nRF51822 |
|
to provide Bluetooth functionality to applications on the main |
|
STM32F401RET chip. |
|
|
|
For instructions on how to set up the nRF51822 to develop Bluetooth |
|
applications, see :ref:`96b_carbon_nrf51_bluetooth`. |
|
|
|
After you have flashed your nRF51, you can perform basic validation |
|
of this Bluetooth setup using the instructions |
|
:ref:`below <96b_carbon_verify_bluetooth>`. |
|
|
|
.. figure:: img/96b_carbon.jpg |
|
:align: center |
|
:alt: 96Boards Carbon |
|
|
|
96Boards Carbon |
|
|
|
Hardware |
|
******** |
|
|
|
96Boards Carbon provides the following hardware components: |
|
|
|
- STM32F401RET6 in LQFP64 package |
|
- ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU |
|
- 84 MHz max CPU frequency |
|
- VDD from 1.7 V to 3.6 V |
|
- 512 KB Flash |
|
- 96 KB SRAM |
|
- GPIO with external interrupt capability |
|
- 12-bit ADC with 16 channels |
|
- RTC |
|
- Advanced-control Timer |
|
- General Purpose Timers (7) |
|
- Watchdog Timers (2) |
|
- USART/UART (4) |
|
- I2C (3) |
|
- SPI (3) |
|
- SDIO |
|
- USB 2.0 OTG FS |
|
- DMA Controller |
|
- Bluetooth LE over SPI, provided by nRF51822 |
|
|
|
More information about STM32F401RE can be found here: |
|
- `STM32F401RE on www.st.com`_ |
|
- `STM32F401 reference manual`_ |
|
|
|
Supported Features |
|
================== |
|
|
|
The Zephyr ``96b_carbon/stm32f401xe`` 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 | |
|
+------------+------------+-------------------------------------+ |
|
| USB OTG FS | on-chip | USB device | |
|
+------------+------------+-------------------------------------+ |
|
|
|
More details about the board can be found at `96Boards website`_. |
|
|
|
The default configuration can be found in |
|
:zephyr_file:`boards/96boards/carbon/96b_carbon_stm32f401xe_defconfig` |
|
|
|
Connections and IOs |
|
=================== |
|
|
|
LED |
|
--- |
|
|
|
- LED1 / User1 LED = PD2 |
|
- LED2 / User2 LED = PA15 |
|
- LED3 / BT LED = PB5 |
|
- LED4 / Power LED = VCC |
|
|
|
Push buttons |
|
------------ |
|
|
|
- BUTTON = BOOT0 (SW1) |
|
- BUTTON = RST |
|
|
|
External Connectors |
|
------------------- |
|
|
|
Low Speed Header |
|
|
|
+--------+-------------+----------------------+ |
|
| PIN # | Signal Name | STM32F401 Functions | |
|
+========+=============+======================+ |
|
| 1 | UART2_CTS | PA0 | |
|
+--------+-------------+----------------------+ |
|
| 3 | UART2_TX | PA2 | |
|
+--------+-------------+----------------------+ |
|
| 5 | UART2_RX | PA3 | |
|
+--------+-------------+----------------------+ |
|
| 7 | UART2_RTS | PA1 | |
|
+--------+-------------+----------------------+ |
|
| 9 | GND | GND | |
|
+--------+-------------+----------------------+ |
|
| 11 | USB5V | USB5V | |
|
+--------+-------------+----------------------+ |
|
| 13 | AIN12 | PC2 | |
|
+--------+-------------+----------------------+ |
|
| 15 | AIN14 | PC4 | |
|
+--------+-------------+----------------------+ |
|
| 17 | UART6_TX | PC6 | |
|
+--------+-------------+----------------------+ |
|
| 19 | GPIO | PC8 | |
|
+--------+-------------+----------------------+ |
|
| 21 | I2C1_SCL | PB6 | |
|
+--------+-------------+----------------------+ |
|
| 23 | I2C1_SCA | PB7 | |
|
+--------+-------------+----------------------+ |
|
| 25 | I2C2_SCA | PB3 | |
|
+--------+-------------+----------------------+ |
|
| 27 | I2C2_SCL | PB10 | |
|
+--------+-------------+----------------------+ |
|
| 29 | RST_BTN | RST_BTN | |
|
+--------+-------------+----------------------+ |
|
|
|
+--------+-------------+----------------------+ |
|
| PIN # | Signal Name | STM32F401 Functions | |
|
+========+=============+======================+ |
|
| 2 | SPI2_SS | PB12 | |
|
+--------+-------------+----------------------+ |
|
| 4 | SPI2_MOSI | PB15 | |
|
+--------+-------------+----------------------+ |
|
| 6 | SPI2_MISO | PB14 | |
|
+--------+-------------+----------------------+ |
|
| 8 | SPI2_SCK | PB13 | |
|
+--------+-------------+----------------------+ |
|
| 10 | GND | GND | |
|
+--------+-------------+----------------------+ |
|
| 12 | VCC2 | VCC2 | |
|
+--------+-------------+----------------------+ |
|
| 14 | AIN13 | PC3 | |
|
+--------+-------------+----------------------+ |
|
| 16 | AIN15 | PC5 | |
|
+--------+-------------+----------------------+ |
|
| 18 | UART6_RX | PC7 | |
|
+--------+-------------+----------------------+ |
|
| 20 | GPIO | PC9 | |
|
+--------+-------------+----------------------+ |
|
| 22 | I2C1_SCL | PB8 | |
|
+--------+-------------+----------------------+ |
|
| 24 | I2C1_SDA | PB9 | |
|
+--------+-------------+----------------------+ |
|
| 26 | AIN10 | PC0 | |
|
+--------+-------------+----------------------+ |
|
| 28 | AIN11 | PC1 | |
|
+--------+-------------+----------------------+ |
|
| 30 | NC | NC | |
|
+--------+-------------+----------------------+ |
|
|
|
More detailed information about the connectors can be found in |
|
`96Boards IE Specification`_. |
|
|
|
External Clock Sources |
|
---------------------- |
|
|
|
STM32F4 has two external oscillators. The frequency of the slow clock is |
|
32.768 kHz. The frequency of the main clock is 16 MHz. |
|
|
|
Serial Port |
|
----------- |
|
|
|
96Boards Carbon board has up to 4 U(S)ARTs. The Zephyr console output is |
|
assigned to USART1. Default settings are 115200 8N1. |
|
|
|
I2C |
|
--- |
|
|
|
96Boards Carbon board has up to 2 I2Cs. The default I2C mapping for Zephyr is: |
|
|
|
- I2C1_SCL : PB6 |
|
- I2C1_SDA : PB7 |
|
- I2C2_SCL : PB10 |
|
- I2C2_SDA : PB3 |
|
|
|
SPI |
|
--- |
|
|
|
96Boards Carbon board has up to 2 SPIs. SPI1 is used for Bluetooth communication |
|
over HCI. The default SPI mapping for Zephyr is: |
|
|
|
- SPI1_NSS : PA4 |
|
- SPI1_SCK : PA5 |
|
- SPI1_MISO : PA6 |
|
- SPI1_MOSI : PA7 |
|
- SPI2_NSS : PB12 |
|
- SPI2_SCK : PB13 |
|
- SPI2_MISO : PB14 |
|
- SPI2_MOSI : PB15 |
|
|
|
USB |
|
=== |
|
|
|
96Boards Carbon board has a USB OTG dual-role device (DRD) controller that |
|
supports both device and host functions through its mini "OTG" USB connector. |
|
Only USB device functions are supported in Zephyr at the moment. |
|
|
|
- USB_DM : PA11 |
|
- USB_DP : PA12 |
|
|
|
Programming and Debugging |
|
************************* |
|
|
|
There are 2 main entry points for flashing STM32F4X SoCs, one using the ROM |
|
bootloader, and another by using the SWD debug port (which requires additional |
|
hardware). Flashing using the ROM bootloader requires a special activation |
|
pattern, which can be triggered by using the BOOT0 pin. The ROM bootloader |
|
supports flashing via USB (DFU), UART, I2C and SPI. You can read more about |
|
how to enable and use the ROM bootloader by checking the application |
|
note `AN2606`_, page 109. |
|
|
|
Flashing |
|
======== |
|
|
|
Installing dfu-util |
|
------------------- |
|
|
|
It is recommended to use at least v0.8 of `dfu-util`_. The package available in |
|
debian/ubuntu can be quite old, so you might have to build dfu-util from source. |
|
|
|
Flashing an Application to 96Boards Carbon |
|
------------------------------------------ |
|
|
|
Connect the micro-USB cable to the USB OTG Carbon port and to your computer. |
|
The board should power ON. Force the board into DFU mode by keeping the BOOT0 |
|
switch pressed while pressing and releasing the RST switch. |
|
|
|
Confirm that the board is in DFU mode: |
|
|
|
.. code-block:: console |
|
|
|
$ sudo dfu-util -l |
|
dfu-util 0.8 |
|
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. |
|
Copyright 2010-2014 Tormod Volden and Stefan Schmidt |
|
This program is Free Software and has ABSOLUTELY NO WARRANTY |
|
Please report bugs to dfu-util@lists.gnumonks.org |
|
Found DFU: [0483:df11] ver=2200, devnum=15, cfg=1, intf=0, alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="3574364C3034" |
|
Found DFU: [0483:df11] ver=2200, devnum=15, cfg=1, intf=0, alt=2, name="@OTP Memory /0x1FFF7800/01*512 e,01*016 e", serial="3574364C3034" |
|
Found DFU: [0483:df11] ver=2200, devnum=15, cfg=1, intf=0, alt=1, name="@Option Bytes /0x1FFFC000/01*016 e", serial="3574364C3034" |
|
Found DFU: [0483:df11] ver=2200, devnum=15, cfg=1, intf=0, alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*064Kg,03*128Kg", serial="3574364C3034" |
|
Found Runtime: [05ac:8290] ver=0104, devnum=2, cfg=1, intf=5, alt=0, name="UNKNOWN", serial="UNKNOWN" |
|
|
|
You should see following confirmation on your Linux host: |
|
|
|
.. code-block:: console |
|
|
|
$ dmesg |
|
usb 1-2.1: new full-speed USB device number 14 using xhci_hcd |
|
usb 1-2.1: New USB device found, idVendor=0483, idProduct=df11 |
|
usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 |
|
usb 1-2.1: Product: STM32 BOOTLOADER |
|
usb 1-2.1: Manufacturer: STMicroelectronics |
|
usb 1-2.1: SerialNumber: 3574364C3034 |
|
|
|
Then build and flash an application. Here is an example for the |
|
:ref:`hello_world` application. |
|
|
|
.. zephyr-app-commands:: |
|
:zephyr-app: samples/hello_world |
|
:board: 96b_carbon/stm32f401xe |
|
:goals: build flash |
|
|
|
Connect the micro-USB cable to the USB UART (FTDI) port and to your computer. |
|
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 Carbon |
|
can be found. For example, under Linux, :code:`/dev/ttyUSB0`. |
|
The ``-b`` option sets baud rate ignoring the value from config. |
|
|
|
Press the Reset button and you should see the following message in your |
|
terminal: |
|
|
|
.. code-block:: console |
|
|
|
Hello World! arm |
|
|
|
.. _96b_carbon_verify_bluetooth: |
|
|
|
Verifying Bluetooth Functionality |
|
--------------------------------- |
|
|
|
This section contains instructions for verifying basic Bluetooth |
|
functionality on the board. For help on Zephyr applications |
|
in general, see :ref:`build_an_application`. |
|
|
|
1. Flash the nRF51 with the hci_spi sample application as described in |
|
:ref:`96b_carbon_nrf51_bluetooth`. |
|
|
|
#. Install the dfu-util flashing app, as described above. |
|
|
|
#. Build and flash the ``samples/bluetooth/ipsp`` application for |
|
96b_carbon. See the instructions above for how to put your board |
|
into DFU mode if you haven't done this before: |
|
|
|
.. zephyr-app-commands:: |
|
:zephyr-app: samples/bluetooth/ipsp |
|
:board: 96b_carbon/stm32f401xe |
|
:goals: build flash |
|
|
|
#. Refer to the instructions in :ref:`bluetooth-ipsp-sample` for how |
|
to verify functionality. |
|
|
|
Congratulations! Your 96Boards Carbon now has Bluetooth |
|
connectivity. Refer to :ref:`bluetooth` for additional information on |
|
further Bluetooth application development. |
|
|
|
Debugging |
|
========= |
|
|
|
The ``96b_carbon/stm32f401xe`` board can be debugged by installing a 100 mil (0.1 inch) header |
|
into the header at the bottom right hand side of the board, and |
|
attaching an SWD debugger to the 3V3 (3.3V), GND, CLK, DIO, and RST |
|
pins on that header. Then apply power to the 96Boards Carbon via one |
|
of its USB connectors. You can now attach your debugger to the |
|
STM32F401RET using an SWD scan. |
|
|
|
.. _dfu-util: |
|
http://dfu-util.sourceforge.net/build.html |
|
|
|
.. _AN2606: |
|
https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf |
|
|
|
.. _96Boards website: |
|
http://www.96boards.org/documentation |
|
|
|
.. _STM32F401RE on www.st.com: |
|
https://www.st.com/en/microcontrollers/stm32f401re.html |
|
|
|
.. _STM32F401 reference manual: |
|
https://www.st.com/resource/en/reference_manual/dm00096844.pdf |
|
|
|
.. _96Boards IE Specification: |
|
https://linaro.co/ie-specification
|
|
|