STM32 Nucleo-F446RE
The fastest Nucleo-64: a 180 MHz Cortex-M4F with DACs, CAN and an on-board ST-LINK, on Arduino Uno headers.
- MicrocontrollerSTM32F446RET6, Arm Cortex-M4 with FPU, up to 180 MHz
- Memory512 KB flash, 128 KB SRAM, 4 KB backup SRAM
- Chip supply1.7 V to 3.6 V
- Analog3 x 12-bit 2.4 MSPS ADC (16 channels on LQFP64); 2 x 12-bit DAC

The Nucleo-F446RE is ST's Nucleo-64 board around an STM32F446RET6, an Arm Cortex-M4F at up to 180 MHz with 512 KB of flash, 128 KB of SRAM, two 12-bit DAC channels and two CAN controllers (STM32F446xC/E datasheet, p. 1). Power and program it through the mini-USB of its on-board ST-LINK/V2-1, which also carries Serial (USART2) as a virtual COM port, or feed 7 V to 12 V into VIN (UM1724, pp. 16, 21, 25). Its Arduino Uno headers run at 3.3 V: I2C on D14/D15 (PB9/PB8), LD2 on D13 (PA5), the user button on PC13 (UM1724, pp. 23, 47).
The NUCLEO-F446RE is the top of ST's F4 range on the Nucleo-64 board (MB1136, documented in UM1724). It pairs an STM32F446RET6 in LQFP64 with a snap-off ST-LINK/V2-1 that programs, debugs and powers it over one mini-USB cable, and exposes the chip through Arduino Uno V3 headers and two ST morpho headers that reach every MCU pin (UM1724, pp. 15, 16).
The STM32F446 runs its Cortex-M4 core with FPU at up to 180 MHz, 225 DMIPS, from 512 KB of flash and 128 KB of SRAM plus 4 KB of backup SRAM. Its peripherals go well beyond the F401's: three 12-bit 2.4 MSPS ADCs, two 12-bit DAC channels, two CAN 2.0B controllers, two SAI audio interfaces, Quad-SPI, SDIO and USB OTG (STM32F446xC/E datasheet, p. 1). In LQFP64 it gives 50 GPIOs and 16 ADC channels (p. 14).
The board layout is the same as every Nucleo-64: Serial is USART2 on PA2/PA3, routed to the ST-LINK's virtual COM port rather than to D0/D1 as shipped, I2C is on D14/D15, and A4/A5 are PC1/PC0 (UM1724, pp. 25, 47). The DAC outputs land on A2 (PA4) and D13 (PA5), so analogWrite on those pins gives a true voltage. It is a common choice for audio, motor control and CAN bus projects in STM32CubeIDE, Arduino (STM32duino), PlatformIO or Mbed.
STM32 Nucleo-F446RE pinout
| Pin | Function | Type |
|---|---|---|
| IOREF | IOREF (3.3 V) | power out |
| NRST | RESET (NRST) | input |
| 3V3 | +3.3V3.3 V | power out |
| 5V | +5V5 V | power out |
| GND | GND | power in |
| GND_2 | GND | power in |
| VIN | VIN (7-12 V) | power in |
| A0 | Digital, ADC123_IN0, PWM, UART4 TX, UART USART2 CTS3.3 V, 5 V tolerant | bidirectional |
| A1 | Digital, ADC123_IN1, PWM, UART4 RX, UART USART2 RTS3.3 V, 5 V tolerant | bidirectional |
| A2 | Digital, ADC12_IN4, DAC DAC1 OUT1, I2S I2S1 WS, I2S I2S3 WS, SPI1 NSS, SPI3 NSS3.3 V | bidirectional |
| A3 | Digital, ADC12_IN8, I2S I2S3 SD, SDIO SDIO D1, SPI3 MOSI, PWM, UART4 CTS3.3 V, 5 V tolerant | bidirectional |
| A4 | Digital, ADC123_IN11, I2S I2S2 SD, I2S I2S3 SD, SPI2 MOSI, SPI3 MOSI3.3 V, 5 V tolerant | bidirectional |
| A5 | Digital, ADC123_IN103.3 V, 5 V tolerant | bidirectional |
| D8 | Digital, I2S I2S2 CK, SPI2 SCK, PWM, UART USART1 TX3.3 V, 5 V tolerant | bidirectional |
| D9 | Digital, I2S I2S2 CK, I2S I2S3 MCK, SDIO SDIO D7, SPI2 SCK, PWM, UART USART6 RX3.3 V, 5 V tolerant | bidirectional |
| D10 | Digital, CAN CAN2 TX, I2C1 SCL, PWM, UART USART1 TX3.3 V, 5 V tolerant | bidirectional |
| D11 | Digital, ADC12_IN7, I2S I2S1 SD, SPI1 MOSI, PWM3.3 V, 5 V tolerant | bidirectional |
| D12 | Digital, ADC12_IN6, I2S I2S2 MCK, SPI1 MISO, PWM3.3 V, 5 V tolerant | bidirectional |
| D13 | Digital, ADC12_IN5, DAC DAC1 OUT2, I2S I2S1 CK, SPI1 SCK, PWM3.3 V | bidirectional |
| GND_3 | GND | power in |
| AREF | AREF (AVDD) | power out |
| D14 | Digital, CAN CAN1 TX, I2C1 SDA, I2S I2S2 WS, SDIO SDIO D5, SPI2 NSS, PWM3.3 V, 5 V tolerant | bidirectional |
| D15 | Digital, CAN CAN1 RX, I2C1 SCL, SDIO SDIO D4, PWM3.3 V, 5 V tolerant | bidirectional |
| D0 | D0 (not connected: PA3 through SB62, open as shipped) | bidirectional |
| D1 | D1 (not connected: PA2 through SB63, open as shipped) | bidirectional |
| D2 | Digital, PWM, UART USART1 RX3.3 V, 5 V tolerant | bidirectional |
| D3 | Digital, I2C2 SDA, I2S I2S1 CK, I2S I2S3 CK, SPI1 SCK, SPI3 SCK, PWM3.3 V, 5 V tolerant | bidirectional |
| D4 | Digital, CAN CAN2 RX, I2S I2S1 SD, I2S I2S3 SD, SPI1 MOSI, SPI3 MOSI, PWM3.3 V, 5 V tolerant | bidirectional |
| D5 | Digital, I2C3 SDA, I2S I2S2 WS, SPI1 MISO, SPI2 NSS, SPI3 MISO, PWM3.3 V, 5 V tolerant | bidirectional |
| D6 | Digital, I2C2 SCL, I2S I2S2 CK, SPI2 SCK, PWM, UART USART3 TX3.3 V, 5 V tolerant | bidirectional |
| D7 | Digital, I2C3 SCL, PWM3.3 V, 5 V tolerant | bidirectional |
| CN7_1 | Digital, I2S I2S3 CK, SDIO SDIO D2, SPI3 SCK, UART4 TX, UART USART3 TX3.3 V, 5 V tolerant | bidirectional |
| CN7_2 | Digital, SDIO SDIO D3, SPI3 MISO, UART4 RX, UART USART3 RX3.3 V, 5 V tolerant | bidirectional |
| CN7_3 | Digital, I2C2 SDA, I2S I2S3 SD, SDIO SDIO CK, SPI3 MOSI, UART5 TX3.3 V, 5 V tolerant | bidirectional |
| CN7_4 | Digital, SDIO SDIO CMD, UART5 RX3.3 V, 5 V tolerant | bidirectional |
| CN7_5 | CN7-5 (VDD) | power out |
| CN7_6 | CN7-6 (E5V) | power in |
| CN7_7 | strapping | input |
| CN7_8 | CN7-8 (GND) | power in |
| CN7_9 | CN7-9 (NC) | no connect |
| CN7_10 | CN7-10 (NC) | no connect |
| CN7_11 | CN7-11 (NC) | no connect |
| CN7_12 | CN7-12 (IOREF) | power out |
| CN7_13 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_14 | Digital3.3 V | input |
| CN7_15 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_16 | CN7-16 (+3.3V) | power out |
| CN7_17 | Digital, I2S I2S1 WS, I2S I2S3 WS, SPI1 NSS, SPI3 NSS, PWM, UART4 RTS3.3 V, 5 V tolerant | bidirectional |
| CN7_18 | CN7-18 (+5V) | power out |
| CN7_19 | CN7-19 (GND) | power in |
| CN7_20 | CN7-20 (GND) | power in |
| CN7_21 | Digital, I2C1 SDA, PWM, UART USART1 RX3.3 V, 5 V tolerant | bidirectional |
| CN7_22 | CN7-22 (GND) | power in |
| CN7_23 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_24 | CN7-24 (VIN) | power in |
| CN7_25 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_26 | CN7-26 (NC) | no connect |
| CN7_27 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_28 | Digital, ADC123_IN0, PWM, UART4 TX, UART USART2 CTS3.3 V, 5 V tolerant | bidirectional |
| CN7_29 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_30 | Digital, ADC123_IN1, PWM, UART4 RX, UART USART2 RTS3.3 V, 5 V tolerant | bidirectional |
| CN7_31 | Digital3.3 V, 5 V tolerant | bidirectional |
| CN7_32 | Digital, ADC12_IN4, DAC DAC1 OUT1, I2S I2S1 WS, I2S I2S3 WS, SPI1 NSS, SPI3 NSS3.3 V | bidirectional |
| CN7_33 | CN7-33 (VBAT) | power in |
| CN7_34 | Digital, ADC12_IN8, I2S I2S3 SD, SDIO SDIO D1, SPI3 MOSI, PWM, UART4 CTS3.3 V, 5 V tolerant | bidirectional |
| CN7_35 | Digital, ADC123_IN12, SPI2 MISO3.3 V, 5 V tolerant | bidirectional |
| CN7_36 | Digital, ADC123_IN11, I2S I2S2 SD, I2S I2S3 SD, SPI2 MOSI, SPI3 MOSI3.3 V, 5 V tolerant | bidirectional |
| CN7_37 | Digital, ADC123_IN13, I2S I2S2 SD, SPI2 MOSI3.3 V, 5 V tolerant | bidirectional |
| CN7_38 | Digital, ADC123_IN103.3 V, 5 V tolerant | bidirectional |
| CN10_1 | Digital, I2C3 SDA, SDIO SDIO D1, PWM, UART5 CTS3.3 V, 5 V tolerant | bidirectional |
| CN10_2 | Digital, SDIO SDIO D0, PWM, UART5 RTS3.3 V, 5 V tolerant | bidirectional |
| CN10_3 | Digital, CAN CAN1 RX, I2C1 SCL, SDIO SDIO D4, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_4 | Digital, I2S I2S2 MCK, SDIO SDIO D6, PWM, UART USART6 TX3.3 V, 5 V tolerant | bidirectional |
| CN10_5 | Digital, CAN CAN1 TX, I2C1 SDA, I2S I2S2 WS, SDIO SDIO D5, SPI2 NSS, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_6 | Digital, ADC12_IN15, UART USART3 RX3.3 V, 5 V tolerant | bidirectional |
| CN10_7 | CN10-7 (AVDD) | power out |
| CN10_8 | CN10-8 (U5V) | power in |
| CN10_9 | CN10-9 (GND) | power in |
| CN10_10 | CN10-10 (NC) | no connect |
| CN10_11 | Digital, ADC12_IN5, DAC DAC1 OUT2, I2S I2S1 CK, SPI1 SCK, PWM3.3 V | bidirectional |
| CN10_12 | Digital, CAN CAN1 TX, UART USART1 RTS, USB USB D+3.3 V, 5 V tolerant | bidirectional |
| CN10_13 | Digital, ADC12_IN6, I2S I2S2 MCK, SPI1 MISO, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_14 | Digital, CAN CAN1 RX, PWM, UART USART1 CTS, USB USB D-3.3 V, 5 V tolerant | bidirectional |
| CN10_15 | Digital, ADC12_IN7, I2S I2S1 SD, SPI1 MOSI, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_16 | Digital, CAN CAN2 RX, I2S I2S2 WS, SPI2 NSS3.3 V, 5 V tolerant | bidirectional |
| CN10_17 | Digital, CAN CAN2 TX, I2C1 SCL, PWM, UART USART1 TX3.3 V, 5 V tolerant | bidirectional |
| CN10_18 | CN10-18 (NC) | no connect |
| CN10_19 | Digital, I2S I2S2 CK, I2S I2S3 MCK, SDIO SDIO D7, SPI2 SCK, PWM, UART USART6 RX3.3 V, 5 V tolerant | bidirectional |
| CN10_20 | CN10-20 (GND) | power in |
| CN10_21 | Digital, I2S I2S2 CK, SPI2 SCK, PWM, UART USART1 TX3.3 V, 5 V tolerant | bidirectional |
| CN10_22 | Digital, I2S I2S3 SD, SDIO SDIO CK, SPI3 MOSI, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_23 | Digital, I2C3 SCL, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_24 | Digital, ADC12_IN9, SDIO SDIO D2, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_25 | Digital, I2C2 SCL, I2S I2S2 CK, SPI2 SCK, PWM, UART USART3 TX3.3 V, 5 V tolerant | bidirectional |
| CN10_26 | Digital, I2S I2S2 SD, SPI2 MOSI, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_27 | Digital, I2C3 SDA, I2S I2S2 WS, SPI1 MISO, SPI2 NSS, SPI3 MISO, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_28 | Digital, SPI2 MISO, PWM, UART USART3 RTS3.3 V, 5 V tolerant | bidirectional |
| CN10_29 | Digital, CAN CAN2 RX, I2S I2S1 SD, I2S I2S3 SD, SPI1 MOSI, SPI3 MOSI, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_30 | Digital, CAN CAN2 TX, I2S I2S2 CK, SPI2 SCK, PWM, UART USART3 CTS3.3 V, 5 V tolerant | bidirectional |
| CN10_31 | Digital, I2C2 SDA, I2S I2S1 CK, I2S I2S3 CK, SPI1 SCK, SPI3 SCK, PWM3.3 V, 5 V tolerant | bidirectional |
| CN10_32 | CN10-32 (AGND) | power in |
| CN10_33 | Digital, PWM, UART USART1 RX3.3 V, 5 V tolerant | bidirectional |
| CN10_34 | Digital, ADC12_IN14, I2S I2S1 MCK3.3 V, 5 V tolerant | bidirectional |
| CN10_35 | Digital, ADC123_IN2, PWM, UART USART2 TX3.3 V, 5 V tolerant | bidirectional |
| CN10_36 | CN10-36 (NC) | no connect |
| CN10_37 | Digital, ADC123_IN3, PWM, UART USART2 RX3.3 V, 5 V tolerant | bidirectional |
| CN10_38 | CN10-38 (NC) | no connect |
Before you wire it
- Never put 5 V on PA4 or PA5 (A2 and D13): they are not 5 V tolerant
- Logic is 3.3 V. Most of the F446's I/Os are 5 V tolerant (up to 112 of 114 in the largest package, datasheet p. 1), but PA4 and PA5, the DAC and ADC pins on A2 and D13, are TTa pins, tolerant to 3.3 V only (datasheet, pp. 45, 48). Keep 5 V signals off them and off every analog input.
- From USB, the board and shields share 300 mA once the PC has enumerated it (UM1724, p. 19). For more, use VIN at 7 V to 12 V or E5V at 5 V with JP5 on E5V/VIN and JP1 removed (p. 21).
- The DAC channels are on PA4 (A2) and PA5 (D13). D13 also drives LD2 through SB21, so the LED lights with the DAC's output on PA5; open SB21 for a clean DAC2 output (UM1724, p. 26).
- Serial is USART2 on PA2/PA3, connected to the ST-LINK by SB13/SB14 with SB62/SB63 open, so D0/D1 are not connected as shipped (UM1724, p. 25). USART1 is free on D8 (PA9, TX) and D2 (PA10, RX).
- I2C1 is on D14 (PB9, SDA) and D15 (PB8, SCL); A4/A5 are PC1/PC0 (UM1724, p. 47).
- CAN needs an external transceiver such as a 3.3 V CAN PHY between the chip's CAN_TX/CAN_RX pins and the bus; the STM32F446 contains only the controllers (datasheet, p. 1).
Specifications
- Microcontroller
- STM32F446RET6, Arm Cortex-M4 with FPU, up to 180 MHzSTM32F446xC/E datasheet (DS10693 Rev 11), p. 1
- Memory
- 512 KB flash, 128 KB SRAM, 4 KB backup SRAMSTM32F446xC/E datasheet, p. 1
- Chip supply
- 1.7 V to 3.6 VSTM32F446xC/E datasheet, p. 1
- Analog
- 3 x 12-bit 2.4 MSPS ADC (16 channels on LQFP64); 2 x 12-bit DACSTM32F446xC/E datasheet, pp. 1, 14
- Buses
- 2 x CAN 2.0B, up to 4 x I2C, 4 x SPI (3 with I2S), 2 x SAI, SDIO, USB OTGSTM32F446xC/E datasheet, p. 1
- Board power inputs
- USB (U5V), VIN 7 V to 12 V, E5V 4.75 V to 5.25 V, or +3.3V 3 V to 3.6 VUM1724 Rev 14, pp. 19, 21, 22
- Current over USB
- 300 mA for the whole board and shields after enumerationUM1724 Rev 14, pp. 19, 20
- 3.3 V output
- Limited by regulator U4, 500 mA maxUM1724 Rev 14, p. 22
- On-board programmer
- ST-LINK/V2-1 (SWD), virtual COM port on USART2 (PA2/PA3), mass storageUM1724 Rev 14, pp. 16, 25
- User LED and button
- LD2 green on D13 (PA5), lit HIGH; B1 USER on PC13UM1724 Rev 14, p. 23
- Logic level
- 3.3 V
- Clock speed
- 180 MHz
- Flash
- 512 KB
- RAM
- 128 KB
- GPIO pins
- 50
- ADC channels
- 16
- ADC resolution
- 12 bits
- PWM channels
- 17
- Dimensions
- 82.5 × 20.3 × 70 mm
- Weight
- 37 g
From the STMicroelectronics's datasheet, published by STMicroelectronics.
Common mistakes
Putting 5 V on PA4 or PA5
PA4 and PA5 are TTa pins, 3.3 V tolerant only, because they connect straight to the ADC and DAC (F446 datasheet, pp. 45, 48). A 5 V sensor output on A2 or D13 can damage them.
Wiring a module to D0/D1 for Serial
As shipped, D0/D1 are not connected: USART2 goes to the ST-LINK's virtual COM port through SB13/SB14 (UM1724, p. 25). Use USART1 on D8/D2, or move the solder bridges.
Looking for I2C on A4/A5
On the Nucleo, A4 and A5 are PC1 and PC0. I2C1 is on D14 (PB9, SDA) and D15 (PB8, SCL) (UM1724, p. 47).
Wiring CAN_TX and CAN_RX straight to a bus
The F446 has two CAN controllers but no transceiver. CANH and CANL come from an external transceiver chip; without one, nothing is sent on the bus.
Running motors from the USB supply
Over USB the board and shields get 300 mA at most (UM1724, p. 20). Power servos and motors from their own supply, sharing ground with the Nucleo.
STM32 Nucleo-F446RE questions
Is the Nucleo-F446RE 5 V tolerant?
Mostly. ST rates up to 112 of the F446's I/Os 5 V tolerant (datasheet, p. 1), but PA4 and PA5 are TTa pins, tolerant to 3.3 V only (pp. 45, 48), and analog inputs must stay within 0 to 3.3 V. Outputs swing to 3.3 V, so a 5 V part that needs a 5 V high may need a level shifter.
Why won't my Nucleo-F446RE upload?
Check that both CN2 jumpers are on, the default for programming the on-board chip (UM1724, p. 16), that the mini-USB cable carries data, and that the ST-LINK/V2-1 driver is installed on Windows (p. 17). LD1 turns green when the ST-LINK reaches the target and orange on a communication failure (p. 23). If LD3 stays off on a USB charger, fit JP1 (p. 20).
Does the Nucleo-F446RE have a DAC?
Yes. The STM32F446 has two 12-bit DAC channels (datasheet, p. 1), on PA4 (A2) and PA5 (D13). With the STM32duino core, analogWrite on those pins sets a voltage rather than PWM.
How do I power the Nucleo-F446RE from a battery or adapter?
Feed 7 V to 12 V into VIN, or a regulated 4.75 V to 5.25 V into E5V, with JP5 on E5V/VIN and JP1 removed (UM1724, p. 21). VIN can deliver up to 800 mA at 7 V, 450 mA up to 9 V and 250 mA up to 12 V.
Nucleo-F446RE vs Nucleo-F401RE: what is the difference?
Same board, different chip. The F446RE runs at 180 MHz with 128 KB of SRAM, two DACs and two CAN controllers (F446 datasheet, p. 1); the F401RE runs at 84 MHz with 96 KB of SRAM and has no DAC or CAN (F401 datasheet, p. 1).
Nucleo-F446RE vs Blue Pill: why pay more?
The Nucleo carries its own ST-LINK/V2-1 debugger, virtual COM port and drag-and-drop programming on one USB cable (UM1724, p. 16), plus Arduino Uno headers. A Blue Pill needs a separate USB-to-serial adapter or ST-LINK to program it, and its STM32F103 is a slower Cortex-M3 without an FPU.
Build something with the STM32 Nucleo-F446RE
- Build this
CAN bus node
Add a transceiver and read or send car and robot CAN frames with the F446's two CAN 2.0B controllers.
- Build this
Audio synthesizer
Generate waveforms on the 12-bit DAC or stream audio over I2S and SAI to a codec or amplifier.
- Build this
Motor control with encoders
Use the advanced timers for PWM and quadrature inputs on a closed-loop DC or BLDC motor controller.
- Build this
DSP and FFT experiments
Run CMSIS-DSP filters and FFTs on the 180 MHz Cortex-M4F's FPU and DSP instructions.
- Build this
Arduino shield projects
Stack displays, motor drivers or sensor shields on the Uno headers at 3.3 V logic.
This page as plain Markdown, for ChatGPT, Claude or your own agent. /components/stm32-nucleo-f446re.md