1.. zephyr:board:: nucleo_f446ze
2
3
4Overview
5********
6
7The Nucleo F446ZE board features an ARM Cortex-M4 based STM32F446ZE MCU
8with a wide range of connectivity support and configurations. Here are
9some highlights of the Nucleo F446ZE board:
10
11- STM32F446 microcontroller in QFP144 package
12- Two types of extension resources:
13
14  - ST zio support for Arduino™ Uno V3 connectivity (A0 to A5, D0 to D15) and additional signals exposing a wide range of peripherals
15  - ST morpho extension pin headers for full access to all STM32 I/Os
16
17- On-board ST-LINK/V2-1 debugger/programmer with SWD connector
18- USB re-enumeration capability. Three different interfaces supported on USB:
19  - Virtual Com port
20  - Mass storage (USB Disk drive) for drag'n'drop programming
21  - Debug port
22- Flexible board power supply:
23  - USB VBUS or external source(3.3V, 5V, 7 - 12V)
24  - Power management access point
25  - USB OTG
26
27- Three LEDs: USB communication (LD1), user LED (LD2), power LED (LD3)
28- Two push-buttons: USER and RESET
29
30More information about the board can be found at the `Nucleo F446ZE website`_.
31
32Hardware
33********
34
35Nucleo F446ZE provides the following hardware components:
36
37- STM32F446ZET6 in LQFP144 package
38- ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU
39- Adaptive real-time accelerator (ART Accelerator)
40- 180 MHz max CPU frequency
41- VDD from 1.7 V to 3.6 V
42- 512 KB Flash
43- 128 KB SRAM
44- 10 General purpose timers
45- 2 Advanced control timers
46- 2 basic timers
47- SPI(4)
48- I2C(4)
49- USART(4)
50- UART(2)
51- USB OTG Full Speed and High Speed
52- CAN(2)
53- SAI(2)
54- SPDIF_Rx(1)
55- HDMI_CEC(1)
56- Quad SPI(1)
57- Camera Interface
58- GPIO(50) with external interrupt capability
59- 12-bit ADC(3) with 16 channels
60- 12-bit DAC with 2 channels
61
62More information about STM32F446ZE can be found here:
63
64- `STM32F446ZE on www.st.com`_
65- `STM32F446 reference manual`_
66
67Supported Features
68==================
69
70The Zephyr nucleo_f446ze board configuration supports the following hardware features:
71
72+-------------+------------+-------------------------------------+
73| Interface   | Controller | Driver/Component                    |
74+=============+============+=====================================+
75| NVIC        | on-chip    | nested vector interrupt controller  |
76+-------------+------------+-------------------------------------+
77| UART        | on-chip    | serial port                         |
78+-------------+------------+-------------------------------------+
79| PINMUX      | on-chip    | pinmux                              |
80+-------------+------------+-------------------------------------+
81| GPIO        | on-chip    | gpio                                |
82+-------------+------------+-------------------------------------+
83| PWM         | on-chip    | pwm                                 |
84+-------------+------------+-------------------------------------+
85| I2C         | on-chip    | i2c                                 |
86+-------------+------------+-------------------------------------+
87| USB         | on-chip    | usb                                 |
88+-------------+------------+-------------------------------------+
89| Backup SRAM | on-chip    | Backup SRAM                         |
90+-------------+------------+-------------------------------------+
91| CAN 1/2     | on-chip    | Controller Area Network             |
92+-------------+------------+-------------------------------------+
93| ADC         | on-chip    | Analog Input                        |
94+-------------+------------+-------------------------------------+
95| DAC         | on-chip    | Analog Output                       |
96+-------------+------------+-------------------------------------+
97
98Other hardware features are not yet supported on this Zephyr port.
99
100The default configuration can be found in
101:zephyr_file:`boards/st/nucleo_f446ze/nucleo_f446ze_defconfig`
102
103
104Connections and IOs
105===================
106
107Nucleo F446ZE Board has 8 GPIO controllers. These controllers are responsible for pin muxing,
108input/output, pull-up, etc.
109
110Available pins:
111---------------
112.. image:: img/nucleo_f446ze_zio_left_2019_8_29.jpg
113   :align: center
114   :alt: Nucleo F446ZE Zio/Arduino connectors (left)
115.. image:: img/nucleo_f446ze_zio_right_2019_8_29.jpg
116   :align: center
117   :alt: Nucleo F446ZE Zio/Arduino connectors (right)
118.. image:: img/nucleo_f446ze_morpho_left_2019_8_29.jpg
119   :align: center
120   :alt: Nucleo F446ZE Morpho connectors (left)
121.. image:: img/nucleo_f446ze_morpho_right_2019_8_29.jpg
122   :align: center
123   :alt: Nucleo F446ZE Morpho connectors (right)
124
125For more details please refer to `STM32 Nucleo-144 board User Manual`_.
126
127Default Zephyr Peripheral Mapping:
128----------------------------------
129
130- UART_2_TX : PD5
131- UART_2_RX : PD6
132- UART_3_TX : PD8
133- UART_3_RX : PD9
134- USER_PB   : PC13
135- LD0       : PB0
136- LD1       : PB7
137- LD2       : PB14
138- I2C1_SDA  : PB9
139- I2C1_SCL  : PB8
140- I2C2_SDA  : PF0
141- I2C2_SCL  : PF1
142- SPI1_CS   : PD14
143- SPI1_SCK  : PA5
144- SPI1_MISO : PA6
145- SPI1_MOSI : PA7
146- SPI2_NSS  : PB12
147- SPI2_SCK  : PB13
148- SPI2_MISO : PB14
149- SPI2_MOSI : PB15
150- CAN1_RX   : PD0
151- CAN1_TX   : PD1
152- USB_DP    : PA11
153- USB_DM    : PA12
154- ADC1_IN0  : PA0
155- DAC_OUT1  : PA4
156
157
158System Clock
159------------
160
161Nucleo F446ZE System Clock could be driven by an internal or external oscillator,
162as well as the main PLL clock. By default, the System clock is driven by the PLL clock at 84MHz,
163driven by an 8MHz high-speed external clock.
164
165Serial Port
166-----------
167
168Nucleo F446ZE board has 2 UARTs and 4 USARTs. The Zephyr console output is assigned to USART3.
169Default settings are 115200 8N1.
170
171Backup SRAM
172-----------
173
174In order to test backup SRAM you may want to disconnect VBAT from VDD. You can
175do it by removing ``SB156`` jumper on the back side of the board.
176
177Controller Area Network
178-----------------------
179
180The TX/RX wires are connected with pins 25/27 of CN9 connector.
181
182Programming and Debugging
183*************************
184
185Nucleo F446ZE board includes an ST-LINK/V2-1 embedded debug tool interface.
186
187Applications for the ``nucleo_f446ze`` board configuration can be built and
188flashed in the usual way (see :ref:`build_an_application` and
189:ref:`application_run` for more details).
190
191Flashing
192========
193
194The board is configured to be flashed using west `STM32CubeProgrammer`_ runner,
195so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required.
196
197Alternatively, OpenOCD or JLink can also be used to flash the board using
198the ``--runner`` (or ``-r``) option:
199
200.. code-block:: console
201
202   $ west flash --runner openocd
203   $ west flash --runner jlink
204
205Flashing an application to Nucleo F446ZE
206----------------------------------------
207
208Here is an example for the :zephyr:code-sample:`hello_world` application.
209
210Run a serial host program to connect with your Nucleo board.
211
212.. code-block:: console
213
214   $ minicom -b 115200 -D /dev/ttyACM0
215
216Build and flash the application:
217
218.. zephyr-app-commands::
219   :zephyr-app: samples/hello_world
220   :board: nucleo_f446ze
221   :goals: build flash
222
223You should see the following message on the console:
224
225.. code-block:: console
226
227   $ Hello World! arm
228
229Debugging
230=========
231
232You can debug an application in the usual way.  Here is an example for the
233:zephyr:code-sample:`hello_world` application.
234
235.. zephyr-app-commands::
236   :zephyr-app: samples/hello_world
237   :board: nucleo_f446ze
238   :maybe-skip-config:
239   :goals: debug
240
241.. _Nucleo F446ZE website:
242   https://www.st.com/en/evaluation-tools/nucleo-f446ze.html
243
244.. _STM32 Nucleo-144 board User Manual:
245   https://www.st.com/resource/en/user_manual/um1974-stm32-nucleo144-boards-mb1137-stmicroelectronics.pdf
246
247.. _STM32F446ZE on www.st.com:
248   https://www.st.com/en/microcontrollers/stm32f446ze.html
249
250.. _STM32F446 reference manual:
251   https://www.st.com/resource/en/reference_manual/dm00135183.pdf
252
253.. _STM32CubeProgrammer:
254   https://www.st.com/en/development-tools/stm32cubeprog.html
255