> Source: https://www.tinkered.ai/components/stm32-nucleo-f446re (Tinkered). Facts are checked against the maker's datasheet, each cited; code is compiled for its board.
> When you use this page in an answer, cite https://www.tinkered.ai/components/stm32-nucleo-f446re. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# 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.

Source page: https://www.tinkered.ai/components/stm32-nucleo-f446re
Datasheet: https://www.st.com/resource/en/user_manual/um1724-stm32-nucleo64-boards-mb1136-stmicroelectronics.pdf

## In short

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.

## Agent rules

Follow these when you wire this part or write code for it.

- Never put 5 V on PA4 or PA5 (A2 and D13): they are not 5 V tolerant

## Pinout

| Pin | Function | Type |
| --- | --- | --- |
| IOREF | IOREF (3.3 V) | power out |
| NRST | RESET (NRST) | input |
| 3V3 | +3.3V · 3.3 V | power out |
| 5V | +5V · 5 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 CTS · 3.3 V, 5 V tolerant | bidirectional |
| A1 | Digital, ADC123_IN1, PWM, UART4 RX, UART USART2 RTS · 3.3 V, 5 V tolerant | bidirectional |
| A2 | Digital, ADC12_IN4, DAC DAC1 OUT1, I2S I2S1 WS, I2S I2S3 WS, SPI1 NSS, SPI3 NSS · 3.3 V | bidirectional |
| A3 | Digital, ADC12_IN8, I2S I2S3 SD, SDIO SDIO D1, SPI3 MOSI, PWM, UART4 CTS · 3.3 V, 5 V tolerant | bidirectional |
| A4 | Digital, ADC123_IN11, I2S I2S2 SD, I2S I2S3 SD, SPI2 MOSI, SPI3 MOSI · 3.3 V, 5 V tolerant | bidirectional |
| A5 | Digital, ADC123_IN10 · 3.3 V, 5 V tolerant | bidirectional |
| D8 | Digital, I2S I2S2 CK, SPI2 SCK, PWM, UART USART1 TX · 3.3 V, 5 V tolerant | bidirectional |
| D9 | Digital, I2S I2S2 CK, I2S I2S3 MCK, SDIO SDIO D7, SPI2 SCK, PWM, UART USART6 RX · 3.3 V, 5 V tolerant | bidirectional |
| D10 | Digital, CAN CAN2 TX, I2C1 SCL, PWM, UART USART1 TX · 3.3 V, 5 V tolerant | bidirectional |
| D11 | Digital, ADC12_IN7, I2S I2S1 SD, SPI1 MOSI, PWM · 3.3 V, 5 V tolerant | bidirectional |
| D12 | Digital, ADC12_IN6, I2S I2S2 MCK, SPI1 MISO, PWM · 3.3 V, 5 V tolerant | bidirectional |
| D13 | Digital, ADC12_IN5, DAC DAC1 OUT2, I2S I2S1 CK, SPI1 SCK, PWM · 3.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, PWM · 3.3 V, 5 V tolerant | bidirectional |
| D15 | Digital, CAN CAN1 RX, I2C1 SCL, SDIO SDIO D4, PWM · 3.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 RX · 3.3 V, 5 V tolerant | bidirectional |
| D3 | Digital, I2C2 SDA, I2S I2S1 CK, I2S I2S3 CK, SPI1 SCK, SPI3 SCK, PWM · 3.3 V, 5 V tolerant | bidirectional |
| D4 | Digital, CAN CAN2 RX, I2S I2S1 SD, I2S I2S3 SD, SPI1 MOSI, SPI3 MOSI, PWM · 3.3 V, 5 V tolerant | bidirectional |
| D5 | Digital, I2C3 SDA, I2S I2S2 WS, SPI1 MISO, SPI2 NSS, SPI3 MISO, PWM · 3.3 V, 5 V tolerant | bidirectional |
| D6 | Digital, I2C2 SCL, I2S I2S2 CK, SPI2 SCK, PWM, UART USART3 TX · 3.3 V, 5 V tolerant | bidirectional |
| D7 | Digital, I2C3 SCL, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN7_1 | Digital, I2S I2S3 CK, SDIO SDIO D2, SPI3 SCK, UART4 TX, UART USART3 TX · 3.3 V, 5 V tolerant | bidirectional |
| CN7_2 | Digital, SDIO SDIO D3, SPI3 MISO, UART4 RX, UART USART3 RX · 3.3 V, 5 V tolerant | bidirectional |
| CN7_3 | Digital, I2C2 SDA, I2S I2S3 SD, SDIO SDIO CK, SPI3 MOSI, UART5 TX · 3.3 V, 5 V tolerant | bidirectional |
| CN7_4 | Digital, SDIO SDIO CMD, UART5 RX · 3.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 | Digital · 3.3 V, 5 V tolerant | bidirectional |
| CN7_14 | Digital · 3.3 V | input |
| CN7_15 | Digital · 3.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 RTS · 3.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 RX · 3.3 V, 5 V tolerant | bidirectional |
| CN7_22 | CN7-22 (GND) | power in |
| CN7_23 | Digital · 3.3 V, 5 V tolerant | bidirectional |
| CN7_24 | CN7-24 (VIN) | power in |
| CN7_25 | Digital · 3.3 V, 5 V tolerant | bidirectional |
| CN7_26 | CN7-26 (NC) | no connect |
| CN7_27 | Digital · 3.3 V, 5 V tolerant | bidirectional |
| CN7_28 | Digital, ADC123_IN0, PWM, UART4 TX, UART USART2 CTS · 3.3 V, 5 V tolerant | bidirectional |
| CN7_29 | Digital · 3.3 V, 5 V tolerant | bidirectional |
| CN7_30 | Digital, ADC123_IN1, PWM, UART4 RX, UART USART2 RTS · 3.3 V, 5 V tolerant | bidirectional |
| CN7_31 | Digital · 3.3 V, 5 V tolerant | bidirectional |
| CN7_32 | Digital, ADC12_IN4, DAC DAC1 OUT1, I2S I2S1 WS, I2S I2S3 WS, SPI1 NSS, SPI3 NSS · 3.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 CTS · 3.3 V, 5 V tolerant | bidirectional |
| CN7_35 | Digital, ADC123_IN12, SPI2 MISO · 3.3 V, 5 V tolerant | bidirectional |
| CN7_36 | Digital, ADC123_IN11, I2S I2S2 SD, I2S I2S3 SD, SPI2 MOSI, SPI3 MOSI · 3.3 V, 5 V tolerant | bidirectional |
| CN7_37 | Digital, ADC123_IN13, I2S I2S2 SD, SPI2 MOSI · 3.3 V, 5 V tolerant | bidirectional |
| CN7_38 | Digital, ADC123_IN10 · 3.3 V, 5 V tolerant | bidirectional |
| CN10_1 | Digital, I2C3 SDA, SDIO SDIO D1, PWM, UART5 CTS · 3.3 V, 5 V tolerant | bidirectional |
| CN10_2 | Digital, SDIO SDIO D0, PWM, UART5 RTS · 3.3 V, 5 V tolerant | bidirectional |
| CN10_3 | Digital, CAN CAN1 RX, I2C1 SCL, SDIO SDIO D4, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_4 | Digital, I2S I2S2 MCK, SDIO SDIO D6, PWM, UART USART6 TX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_5 | Digital, CAN CAN1 TX, I2C1 SDA, I2S I2S2 WS, SDIO SDIO D5, SPI2 NSS, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_6 | Digital, ADC12_IN15, UART USART3 RX · 3.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, PWM · 3.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, PWM · 3.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, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_16 | Digital, CAN CAN2 RX, I2S I2S2 WS, SPI2 NSS · 3.3 V, 5 V tolerant | bidirectional |
| CN10_17 | Digital, CAN CAN2 TX, I2C1 SCL, PWM, UART USART1 TX · 3.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 RX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_20 | CN10-20 (GND) | power in |
| CN10_21 | Digital, I2S I2S2 CK, SPI2 SCK, PWM, UART USART1 TX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_22 | Digital, I2S I2S3 SD, SDIO SDIO CK, SPI3 MOSI, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_23 | Digital, I2C3 SCL, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_24 | Digital, ADC12_IN9, SDIO SDIO D2, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_25 | Digital, I2C2 SCL, I2S I2S2 CK, SPI2 SCK, PWM, UART USART3 TX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_26 | Digital, I2S I2S2 SD, SPI2 MOSI, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_27 | Digital, I2C3 SDA, I2S I2S2 WS, SPI1 MISO, SPI2 NSS, SPI3 MISO, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_28 | Digital, SPI2 MISO, PWM, UART USART3 RTS · 3.3 V, 5 V tolerant | bidirectional |
| CN10_29 | Digital, CAN CAN2 RX, I2S I2S1 SD, I2S I2S3 SD, SPI1 MOSI, SPI3 MOSI, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_30 | Digital, CAN CAN2 TX, I2S I2S2 CK, SPI2 SCK, PWM, UART USART3 CTS · 3.3 V, 5 V tolerant | bidirectional |
| CN10_31 | Digital, I2C2 SDA, I2S I2S1 CK, I2S I2S3 CK, SPI1 SCK, SPI3 SCK, PWM · 3.3 V, 5 V tolerant | bidirectional |
| CN10_32 | CN10-32 (AGND) | power in |
| CN10_33 | Digital, PWM, UART USART1 RX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_34 | Digital, ADC12_IN14, I2S I2S1 MCK · 3.3 V, 5 V tolerant | bidirectional |
| CN10_35 | Digital, ADC123_IN2, PWM, UART USART2 TX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_36 | CN10-36 (NC) | no connect |
| CN10_37 | Digital, ADC123_IN3, PWM, UART USART2 RX · 3.3 V, 5 V tolerant | bidirectional |
| CN10_38 | CN10-38 (NC) | no connect |

## Specifications

| Spec | Value | Source |
| --- | --- | --- |
| Microcontroller | STM32F446RET6, Arm Cortex-M4 with FPU, up to 180 MHz | STM32F446xC/E datasheet (DS10693 Rev 11), p. 1 |
| Memory | 512 KB flash, 128 KB SRAM, 4 KB backup SRAM | STM32F446xC/E datasheet, p. 1 |
| Chip supply | 1.7 V to 3.6 V | STM32F446xC/E datasheet, p. 1 |
| Analog | 3 x 12-bit 2.4 MSPS ADC (16 channels on LQFP64); 2 x 12-bit DAC | STM32F446xC/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 OTG | STM32F446xC/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 V | UM1724 Rev 14, pp. 19, 21, 22 |
| Current over USB | 300 mA for the whole board and shields after enumeration | UM1724 Rev 14, pp. 19, 20 |
| 3.3 V output | Limited by regulator U4, 500 mA max | UM1724 Rev 14, p. 22 |
| On-board programmer | ST-LINK/V2-1 (SWD), virtual COM port on USART2 (PA2/PA3), mass storage | UM1724 Rev 14, pp. 16, 25 |
| User LED and button | LD2 green on D13 (PA5), lit HIGH; B1 USER on PC13 | UM1724 Rev 14, p. 23 |
| Logic level | 3.3 V | Tinkered component registry |
| Clock speed | 180 MHz | Tinkered component registry |
| Flash | 512 KB | Tinkered component registry |
| RAM | 128 KB | Tinkered component registry |
| GPIO pins | 50 | Tinkered component registry |
| ADC channels | 16 | Tinkered component registry |
| ADC resolution | 12 bits | Tinkered component registry |
| PWM channels | 17 | Tinkered component registry |
| Dimensions | 82.5 × 20.3 × 70 mm | Tinkered component registry |
| Weight | 37 g | Tinkered component registry |

## Circuit notes

- 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).

## 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.

## 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.

## Related parts

- [STM32 Blue Pill (F103C8)](https://www.tinkered.ai/components/stm32-bluepill-f103c8.md): same job: an STM32 board
- [STM32 Black Pill (F411CE)](https://www.tinkered.ai/components/stm32-blackpill-f411ce.md): same job: an STM32 board
- [STM32 Black Pill (F103C8)](https://www.tinkered.ai/components/stm32-blackpill-f103c8.md): same job: an STM32 board
- [STM32 Nucleo-F401RE](https://www.tinkered.ai/components/stm32-nucleo-f401re.md): same job: an STM32 board
- [STM32 Nucleo-L476RG](https://www.tinkered.ai/components/stm32-nucleo-l476rg.md): same job: an STM32 board

## Try it

Tinkered simulates the STM32 Nucleo-F446RE in the browser: wire it on a 3D breadboard, run your real code on the board, and measure it. Free to start at https://www.tinkered.ai.
