| .. _96b_aerocore2_board: |
| |
| 96Boards Aerocore2 |
| ################## |
| |
| Overview |
| ******** |
| |
| The 96Boards Aerocore2 Mezzanine is based on the STMicroelectronics |
| STM32F427VIT6 Cortex-M4 CPU primarily designed for use in drones. |
| This board acts as a mezzanine platform for all 96Boards CE compliant |
| boards. It can also be used as a standalone board. |
| |
| |
| .. figure:: img/96b_aerocore2.jpg |
| :width: 487px |
| :align: center |
| :alt: 96Boards Aerocore2 |
| |
| 96Boards Aerocore2 |
| |
| Hardware |
| ******** |
| |
| 96Boards Aerocore2 provides the following hardware components: |
| |
| - STM32F427VIT6 in LQFP100 package |
| - ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU |
| - 168 MHz max CPU frequency |
| - VDD from 1.7 V to 3.6 V |
| - 2048 KB Flash |
| - 256 KB SRAM |
| - GPIO with external interrupt capability |
| - 12-bit ADC with 16 channels |
| - RTC |
| - Advanced-control Timers (2) |
| - General Purpose Timers (10) |
| - Watchdog Timers (2) |
| - USART/UART (4) |
| - I2C (3) |
| - SPI (3) |
| - SDIO |
| - USB 2.0 OTG FS |
| - DMA Controller |
| |
| More information about STM32F427VIT6 can be found here: |
| - `STM32F427 on www.st.com`_ |
| |
| Supported Features |
| ================== |
| |
| The Zephyr 96b_aerocore2 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 | |
| +------------+------------+-------------------------------------+ |
| | PWM | on-chip | timers / pwm | |
| +------------+------------+-------------------------------------+ |
| | USB OTG FS | on-chip | USB device | |
| +------------+------------+-------------------------------------+ |
| | ADC | on-chip | adc | |
| +------------+------------+-------------------------------------+ |
| |
| More details about the board can be found at `96Boards website`_. |
| |
| The default configuration can be found in the defconfig file: |
| |
| ``boards/arm/96b_aerocore2/96b_aerocore2_defconfig`` |
| |
| Connections and IOs |
| =================== |
| |
| LED |
| --- |
| |
| - LED1 / User1 LED = PE10 |
| - LED2 / User2 LED = PE9 |
| |
| External Connectors |
| ------------------- |
| |
| Octal PWM Header (J1) |
| |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | PIN # | Signal Name | STM32F427 Functions Pin | PIN # | Signal Name | Pin # | Signal Name | |
| +=======+=============+=========================+=======+=============+=======+=============+ |
| | 1 | PWM4_CH1 | PD12 | 2 | 5.0v | 3 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 4 | PWM4_CH2 | PD13 | 5 | 5.0v | 6 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 7 | PWM4_CH3 | PD14 | 8 | 5.0v | 9 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 10 | PWM4_CH4 | PD15 | 11 | 5.0v | 12 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 13 | PWM5_CH1 | PA0 | 14 | 5.0v | 15 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 16 | PWM5_CH2 | PA1 | 17 | 5.0v | 18 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 19 | PWM5_CH3 | PA2 | 20 | 5.0v | 21 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| | 22 | PWM5_CH4 | PA3 | 23 | 5.0v | 24 | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------+-------------+ |
| |
| |
| IO Header J11 |
| |
| +-------+-------------+-------+-------------+ |
| | PIN # | Signal Name | PIN # | Signal Name | |
| +=======+=============+=======+=============+ |
| | 1 | PB9 | 2 | PB8* | |
| +-------+-------------+-------+-------------+ |
| | 3 | PC9 | 4 | PB0 | |
| +-------+-------------+-------+-------------+ |
| | 5 | PE5 | 6 | NA | |
| +-------+-------------+-------+-------------+ |
| | 7 | PE6 | 8 | NA | |
| +-------+-------------+-------+-------------+ |
| | 9 | PC6 | 10 | NA | |
| +-------+-------------+-------+-------------+ |
| | 11 | PC7 | 12 | NA | |
| +-------+-------------+-------+-------------+ |
| | 13 | PC8 | 14 | NA | |
| +-------+-------------+-------+-------------+ |
| | 15 | PA8 | 16 | GND | |
| +-------+-------------+-------+-------------+ |
| | 17 | PA9 | 18 | 3v3 | |
| +-------+-------------+-------+-------------+ |
| | 19 | PA10 | 20 | GND | |
| +-------+-------------+-------+-------------+ |
| |
| * PB8 is connected to a watchdog buzzer, It needs to be pulsed every 10 seconds to keep the buzzer silent. |
| |
| IO Header J5 |
| |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | PIN # | Signal Name | STM32F427 Functions Pin | PIN # | Signal Name | STM32F427 Functions Pin | |
| +=======+=============+=========================+=======+=============+=========================+ |
| | 1 | AGND | AGND | 2 | ADC1_13 | PC3 | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 3 | ADC1_12 | PC2 | 4 | ADC1_11 | PC1 | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 5 | I2C_SDA | PB11 | 6 | GND | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 7 | I2C_SCL | PB10 | 8 | VCC 3v3 | VCC 3v3 | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 9 | NC | NC | 10 | NC | NC | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 11 | NC | NC | 12 | NC | NC | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 13 | UART_TX 7 | PE8 | 14 | GND | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 15 | UART_RX 7 | PE7 | 16 | GND | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 17 | UART_TX 2 | PD5 | 18 | GND | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 19 | UART_TX 2 | PD6 | 20 | GND | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 21 | NC | NC | 10 | NC | NC | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 23 | NC | NC | 10 | NC | NC | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 25 | SPI1_NIRQ | PC5 | 26 | GND | GND | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 27 | SPI1_CLK | PA5 | 28 | SPI1_MISO | PA6 | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 29 | SPI1_CS0 | PA4 | 30 | SPI1_MOSI | PA7 | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 31 | CAN_TX | PD1 | 32 | CANH | NC | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| | 33 | CAN_RX | PD0 | 34 | CANL | NC | |
| +-------+-------------+-------------------------+-------+-------------+-------------------------+ |
| |
| |
| GPS connector J15 |
| |
| +-------+-------------+-------------------------+ |
| | PIN # | Signal Name | STM32F427 Functions Pin | |
| +=======+=============+=========================+ |
| | 1 | V_OUT 5v | NC | |
| +-------+-------------+-------------------------+ |
| | 2 | UART1_TX | PB6 | |
| +-------+-------------+-------------------------+ |
| | 3 | UART1_RX | PB7 | |
| +-------+-------------+-------------------------+ |
| | 4 | VCC 3v3 | NC | |
| +-------+-------------+-------------------------+ |
| | 5 | GND | GND | |
| +-------+-------------+-------------------------+ |
| |
| |
| Spektrum connector J3 |
| |
| +-------+-------------+-------------------------+ |
| | PIN # | Signal Name | STM32F427 Functions Pin | |
| +=======+=============+=========================+ |
| | 1 | VCC 3v3 | NC | |
| +-------+-------------+-------------------------+ |
| | 2 | GND | GND | |
| +-------+-------------+-------------------------+ |
| | 3 | UART8_RX | PE0 | |
| +-------+-------------+-------------------------+ |
| |
| |
| External Clock Sources |
| ---------------------- |
| |
| STM32F4 has one external oscillator. The frequency of the clock is |
| 32.768 kHz. The internal 16MHz clock is used as the main clock. |
| |
| Serial Port |
| ----------- |
| |
| 96Boards Aerocore2 board has up to 4 U(S)ARTs. The Zephyr console output is |
| assigned to USART7. Default settings are 115200 8N1. |
| |
| I2C |
| --- |
| |
| 96Boards Aerocore2 board has 1 I2C port. The default I2C mapping for Zephyr is: |
| |
| - I2C1_SCL : PB10 |
| - I2C1_SDA : PB11 |
| |
| SPI |
| --- |
| |
| 96Boards Aerocore2 board has 1 SPI port. The default SPI mapping for Zephyr is: |
| |
| - SPI1_CS0 : PA4 |
| - SPI1_SCK : PA5 |
| - SPI1_MISO : PA6 |
| - SPI1_MOSI : PA7 |
| |
| USB |
| === |
| |
| 96Boards Aerocore2 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. |
| |
| 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 Aerocore2 |
| --------------------------------------------- |
| |
| Connect the micro-USB cable to the USB OTG/STM_CONSOLE Aerocore2 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. |
| |
| The BOOT button is located at the back-side of the PCB. |
| |
| 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_aerocore2 |
| :goals: build flash |
| |
| Connect a USB-TTL dongle to the UART_7 header 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 Aerocore2 |
| 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 the following message in your |
| terminal: |
| |
| .. code-block:: console |
| |
| Hello World! arm |
| |
| .. _96Boards website: |
| https://www.96boards.org/product/aerocore2/ |
| |
| .. _STM32F427 on www.st.com: |
| https://www.st.com/en/microcontrollers-microprocessors/stm32f427vi.html |
| |
| .. _dfu-util: |
| http://dfu-util.sourceforge.net/build.html |
| |
| .. _AN2606: |
| http://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 |