1.. zephyr:board:: nucleo_f410rb
2
3Overview
4********
5
6The Nucleo F410RB board features an ARM Cortex-M4 based STM32F410RB MCU
7with a wide range of connectivity support and configurations. Here are
8some highlights of the Nucleo F410RB board:
9
10- STM32 microcontroller in QFP64 package
11- Two types of extension resources:
12
13  - Arduino Uno V3 connectivity
14  - ST morpho extension pin headers for full access to all STM32 I/Os
15
16- On-board ST-LINK/V2-1 debugger/programmer with SWD connector
17- Flexible board power supply:
18
19  - USB VBUS or external source(3.3V, 5V, 7 - 12V)
20  - Power management access point
21
22- Three LEDs: USB communication (LD1), user LED (LD2), power LED (LD3)
23- Two push-buttons: USER and RESET
24
25More information about the board can be found at the `Nucleo F410RB website`_.
26
27Hardware
28********
29
30Nucleo F410RB provides the following hardware components:
31
32- STM32F410RBT6 in LQFP64 package
33- ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU
34- Adaptive real-time accelerator (ART Accelerator)
35- 100 MHz max CPU frequency
36- VDD from 1.7 V to 3.6 V
37- 128 KB Flash
38- 32 KB SRAM
39- General purpose timer (4)
40- Low-power timer (1)
41- Advanced-control timer (1)
42- Random number generator (TRNG for HW entropy)
43- SPI/I2S (3)
44- I2C (3)
45- USART (3)
46- GPIO (50) with external interrupt capability
47- 12-bit ADC with 16 channels
48- 12-bit DAC with 1 channel
49- RTC
50
51
52More information about STM32F410RB can be found here:
53
54- `STM32F410RB on www.st.com`_
55- `STM32F410 reference manual`_
56
57Supported Features
58==================
59
60The Zephyr nucleo_f410rb board configuration supports the following hardware features:
61
62+-----------+------------+-------------------------------------+
63| Interface | Controller | Driver/Component                    |
64+===========+============+=====================================+
65| NVIC      | on-chip    | nested vector interrupt controller  |
66+-----------+------------+-------------------------------------+
67| UART      | on-chip    | serial port                         |
68+-----------+------------+-------------------------------------+
69| PINMUX    | on-chip    | pinmux                              |
70+-----------+------------+-------------------------------------+
71| GPIO      | on-chip    | gpio                                |
72+-----------+------------+-------------------------------------+
73| PWM       | on-chip    | pwm                                 |
74+-----------+------------+-------------------------------------+
75| I2C       | on-chip    | i2c                                 |
76+-----------+------------+-------------------------------------+
77| I2S       | on-chip    | i2s                                 |
78+-----------+------------+-------------------------------------+
79| SPI       | on-chip    | spi                                 |
80+-----------+------------+-------------------------------------+
81| ADC       | on-chip    | ADC Controller                      |
82+-----------+------------+-------------------------------------+
83| DAC       | on-chip    | DAC Controller                      |
84+-----------+------------+-------------------------------------+
85| WATCHDOG  | on-chip    | window & independent                |
86+-----------+------------+-------------------------------------+
87
88
89Other hardware features are not yet supported on this Zephyr port.
90
91The default configuration can be found in
92:zephyr_file:`boards/st/nucleo_f410rb/nucleo_f410rb_defconfig`
93
94
95Connections and IOs
96===================
97
98Nucleo F410RB Board has 8 GPIO controllers. These controllers are responsible for pin muxing,
99input/output, pull-up, etc.
100
101Available pins:
102---------------
103.. image:: img/nucleo_f410rb_arduino_top_left.jpg
104   :align: center
105   :alt: Nucleo F410RB Arduino connectors (top left)
106.. image:: img/nucleo_f410rb_arduino_top_right.jpg
107   :align: center
108   :alt: Nucleo F410RB Arduino connectors (top right)
109.. image:: img/nucleo_f410rb_morpho_top_left.jpg
110   :align: center
111   :alt: Nucleo F410RB Morpho connectors (top left)
112.. image:: img/nucleo_f410rb_morpho_top_right.jpg
113   :align: center
114   :alt: Nucleo F410RB Morpho connectors (top right)
115
116For more details please refer to `STM32 Nucleo-64 board User Manual`_.
117
118Default Zephyr Peripheral Mapping:
119----------------------------------
120
121- UART_1_TX : PB6
122- UART_1_RX : PB7
123- UART_2_TX : PA2
124- UART_2_RX : PA3
125- USER_PB : PC13
126- LD2 : PA5
127- I2C1_SDA : PB9
128- I2C1_SCL : PB8
129- I2C2_SDA : PB3
130- I2C2_SCL : PB10
131
132System Clock
133------------
134
135Nucleo F410RB System Clock could be driven by an internal or external oscillator,
136as well as the main PLL clock. By default, the System clock is driven by the PLL clock at 84MHz,
137driven by an 8MHz high-speed external clock.
138
139Serial Port
140-----------
141
142Nucleo F410RB board has 3 USARTs. The Zephyr console output is assigned to UART2.
143Default settings are 115200 8N1.
144
145
146Programming and Debugging
147*************************
148
149Nucleo F410RB board includes an ST-LINK/V2-1 embedded debug tool interface.
150
151Applications for the ``nucleo_f410rb`` board configuration can be built and
152flashed in the usual way (see :ref:`build_an_application` and
153:ref:`application_run` for more details).
154
155Flashing
156========
157
158The board is configured to be flashed using west `STM32CubeProgrammer`_ runner,
159so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required.
160
161Alternatively, OpenOCD or JLink can also be used to flash the board using
162the ``--runner`` (or ``-r``) option:
163
164.. code-block:: console
165
166   $ west flash --runner openocd
167   $ west flash --runner jlink
168
169Flashing an application to Nucleo F410RB
170----------------------------------------
171
172Here is an example for the :zephyr:code-sample:`hello_world` application.
173
174Run a serial host program to connect with your Nucleo board.
175
176.. code-block:: console
177
178   $ minicom -b 115200 -D /dev/ttyACM0
179
180Build and flash the application:
181
182.. zephyr-app-commands::
183   :zephyr-app: samples/hello_world
184   :board: nucleo_f410rb
185   :goals: build flash
186
187You should see the following message on the console:
188
189.. code-block:: console
190
191   $ Hello World! arm
192
193Debugging
194=========
195
196You can debug an application in the usual way.  Here is an example for the
197:zephyr:code-sample:`hello_world` application.
198
199.. zephyr-app-commands::
200   :zephyr-app: samples/hello_world
201   :board: nucleo_f410rb
202   :maybe-skip-config:
203   :goals: debug
204
205.. _Nucleo F410RB website:
206   https://www.st.com/en/evaluation-tools/nucleo-F410RB.html
207
208.. _STM32 Nucleo-64 board User Manual:
209   https://www.st.com/resource/en/user_manual/dm00105823.pdf
210
211.. _STM32F410RB on www.st.com:
212   https://www.st.com/en/microcontrollers/stm32f410rb.html
213
214.. _STM32F410 reference manual:
215   https://www.st.com/resource/en/reference_manual/dm00180366.pdf
216
217.. _STM32CubeProgrammer:
218   https://www.st.com/en/development-tools/stm32cubeprog.html
219