1.. zephyr:board:: steval_fcu001v1
2
3Overview
4********
5
6The STEVAL-FCU001V1 is a Cortex M4 MCU-based flight controller unit for toy quad-copter drones.
7
8Hardware
9********
10
11STM32 Flight Controller Unit provides the following hardware components:
12
13- STM32F401CC in UFQFPN48 package
14- ARM |reg| 32-bit Cortex |reg|-M4 MCU with FPU
15- 84MHz max MCU frequency
16- VDD from 1.7 V to 3.6 V
17- 256 KB FLASH
18- 64 KB SRAM
19- General Purpose Timers
20- Watchdog Timers (2)
21- On board sensors:
22
23  - 3D Accelerometer and 3D Gyroscope: LSM6DSL
24  - 3D Magnetometer: LIS2MDL
25  - MEMS Pressure sensor: LPS22HD
26
27- 2 User LEDS
28- USART/UART (1)
29- I2C (1)
30- Bluetooth LE over SPI
31
32More information about the STM32 Flight Controller Unit
33can be found in these documents:
34
35- `STEVAL_FCU001V1 website`_
36- `STM32F401 reference manual`_
37- `STM32F401CC on www.st.com`_
38
39Supported Features
40==================
41
42The Zephyr steval_fcu001v1 board configuration supports the following hardware features:
43
44+-----------+------------+------------------------------------+
45| Interface | Controller | Driver/Component                   |
46+===========+============+====================================+
47| NVIC      | on-chip    | nested vector interrupt controller |
48+-----------+------------+------------------------------------+
49| UART      | on-chip    | serial port-polling;               |
50|           |            | serial port-interrupt              |
51+-----------+------------+------------------------------------+
52| PINMUX    | on-chip    | pinmux                             |
53+-----------+------------+------------------------------------+
54| GPIO      | on-chip    | gpio                               |
55+-----------+------------+------------------------------------+
56| PWM       | on-chip    | pwm                                |
57+-----------+------------+------------------------------------+
58| I2C       | on-chip    | i2c                                |
59+-----------+------------+------------------------------------+
60
61
62The default configuration can be found in
63:zephyr_file:`boards/st/steval_fcu001v1/steval_fcu001v1_defconfig`
64
65Default Zephyr Peripheral Mapping:
66----------------------------------
67
68- UART_1 TX/RX : PA9/PA10
69- I2C2 SCL/SDA : PB10/PB3
70- PWM_2_CH1    : PA0
71- LD1          : PB5
72- LD2          : PB4
73
74System Clock
75============
76
77The steval_fcu001v1 system clock can be driven by an internal or external oscillator,
78as well as by the main PLL clock. By default, the system clock is driven by the PLL clock at 84MHz,
79driven by a 16MHz high-speed external clock.
80
81Serial Port
82===========
83
84The steval_fcu001v1 board has one UART. The Zephyr console output is assigned to UART1.
85Default settings are 115200 8N1.
86
87I2C
88===
89
90The steval_fcu001v1 board has one I2C. The default I2C mapping for Zephyr is:
91
92- I2C2_SCL : PB10
93- I2C2_SDA : PB3
94
95Programming and Debugging
96*************************
97
98Applications for the ``steval_fcu001v1`` board configuration can be built and
99flashed in the usual way (see :ref:`build_an_application` and
100:ref:`application_run` for more details).
101
102Flashing
103========
104
105Flashing Zephyr onto the steval_fcu001v1 board requires an external ST-LINK/V2-1 programmer.
106The programmer is attached to the P8 programming header with ARM-JTAG-20-10-Plug-in Adapter.
107
108Flashing an application to STEVAL_FCU001V1
109------------------------------------------
110
111Connect the FT232-to-USB port to host system, and RX, TX, Gnd pins to
112the P7 header of the steval_fcu001v1 board.  Then run a serial host
113program to connect with your steval_fcu001v1 via the FT232 board:
114
115.. code-block:: console
116
117   $ minicom -D /dev/ttyUSB0
118
119Now build and flash an application. Here is an example for :zephyr:code-sample:`hello_world`
120
121.. zephyr-app-commands::
122   :zephyr-app: samples/hello_world
123   :board: steval_fcu001v1
124   :goals: build flash
125
126You should see the following message on the console:
127
128.. code-block:: console
129
130   Hello World! steval_fcu001v1
131
132Debugging
133=========
134
135You can debug an application in the usual way. Here is an example for the
136:zephyr:code-sample:`hello_world` application.
137
138.. zephyr-app-commands::
139   :zephyr-app: samples/hello_world
140   :board: steval_fcu001v1
141   :maybe-skip-config:
142   :goals: debug
143
144.. _STEVAL_FCU001V1 website:
145   https://www.st.com/en/evaluation-tools/steval-fcu001v1.html
146
147.. _STM32F401CC on www.st.com:
148   https://www.st.com/en/microcontrollers-microprocessors/stm32f401cc.html
149
150.. _STM32F401 reference manual:
151    https://www.st.com/resource/en/reference_manual/dm00096844.pdf
152