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