Home References NUCLEO-F446RE Board Pinout and Functions

NUCLEO-F446RE Board Pinout and Functions

by shedboy71

Board Identification

The NUCLEO-F446RE is an STMicroelectronics Nucleo-64 development board fitted with an STM32F446RET6 microcontroller (Arm Cortex-M4 with floating-point unit, LQFP64 package). It provides Arduino Uno V3-style connectors, ST morpho expansion headers and an on-board ST-LINK debugger/programmer. The board is not an Arduino Uno: the STM32 GPIO signals operate in a 3.3 V domain.

Item Reference
MCU STM32F446RET6
CPU Arm Cortex-M4F
On-chip Flash 512 KB
On-chip SRAM 128 KB
Board expansion Arduino Uno V3-compatible connector layout; ST morpho headers
Programming/debug Integrated ST-LINK, SWD
User LED LD2 PA5 (active high)
User push-button B1 PC13
Default virtual COM port USART2, PA2 TX / PA3 RX, subject to solder-bridge routing
Main GPIO logic domain 3.3 V; individual 5 V tolerance is pin- and mode-dependent

Board revision matters. Connector labels, solder-bridge defaults, clock routing and ST-LINK implementation must be checked against the schematic and user manual for the actual NUCLEO-F446RE board revision. The pin tables below describe the usual Nucleo-64 Arduino connector assignments, not every alternate function supported by the MCU.

Arduino Digital Connector Mapping

The Arduino D names are board connector labels. STM32 firmware normally refers to the corresponding GPIO port and pin. Alternate peripheral functions require the correct STM32 alternate-function configuration.

Arduino label STM32 GPIO Common role or observation
D0 PA3 USART2_RX; shared with ST-LINK VCP routing on standard configuration
D1 PA2 USART2_TX; shared with ST-LINK VCP routing on standard configuration
D2 PA10 Digital I/O; alternate peripheral functions available
D3 PB3 Digital I/O; timer function available
D4 PB5 Digital I/O
D5 PB4 Digital I/O; timer function available
D6 PB10 Digital I/O; timer function available
D7 PA8 Digital I/O; timer function available
D8 PA9 Digital I/O
D9 PC7 Digital I/O; timer function available
D10 PB6 Common Arduino SPI chip-select position; GPIO unless configured otherwise
D11 PA7 SPI1_MOSI alternate function
D12 PA6 SPI1_MISO alternate function
D13 PA5 SPI1_SCK alternate function; also LD2 user LED
D14 / SDA PB9 I2C1_SDA alternate function
D15 / SCL PB8 I2C1_SCL alternate function

D13 conflict: PA5 is connected to LD2. Using SPI1_SCK on D13 can toggle the LED, and the LED circuit adds a small load. Avoid assuming that D13 is an otherwise unconnected clock signal.

D0/D1 conflict: The on-board ST-LINK virtual COM port normally uses USART2 on PA2/PA3. An external UART device connected to these pins can conflict with the debugger’s UART connections, particularly if two outputs drive the same line. Check solder bridges before rerouting USART2.

Arduino Analogue Connector Mapping

Arduino label STM32 GPIO ADC channel on STM32F446
A0 PA0 ADC input channel 0
A1 PA1 ADC input channel 1
A2 PA4 ADC input channel 4
A3 PB0 ADC input channel 8
A4 PC1 ADC input channel 11
A5 PC0 ADC input channel 10

These labels refer to MCU ADC-capable pins, not to a separate analogue converter on the board. STM32F446 ADCs support up to 12-bit conversion resolution. Select the correct ADC instance and channel in the device configuration; conversion timing, source impedance and sampling time affect measured accuracy.

Analogue input limits: Keep input voltages within the permitted range for the selected pin and the MCU’s analogue supply/reference arrangement. Do not apply 5 V to an ADC input. Analogue-capable pins are not automatically 5 V tolerant in analogue mode.

Power, Ground and Control Connections

Connector marking Function Engineering note
3V3 Regulated 3.3 V rail Supply capability depends on board power configuration and loading
5V Board 5 V rail Source/direction depends on USB or external power selection
VIN External supply input Use only the voltage range and jumper configuration permitted by the board manual
GND Ground reference Common ground required for external interfaces
RESET MCU reset Active-low reset signal
IOREF Expansion I/O reference Indicates the board’s 3.3 V I/O level
AREF Arduino-style analogue reference header position Do not assume an Uno-style independently adjustable ADC reference; inspect board routing

The board may be powered from its ST-LINK USB connector or supported external supply paths. Do not connect multiple supplies without checking the board’s power-selection arrangement. The 5V pin is not a general-purpose 5 V-tolerant GPIO signal. A 5 V Arduino shield may fit mechanically while driving incompatible voltage levels into the STM32.

ST Morpho Headers

The two ST morpho connectors expose additional STM32 signals beyond the Arduino headers, including GPIO, power, reset and debug-related connections. Some signals appear on both connector systems. Reusing a duplicated GPIO does not create a second independent pin.

Signal class Typical use Check before connecting
Additional GPIO ports Digital inputs, outputs and alternate functions Package availability and connector position
Timer-capable pins PWM, capture, encoder interfaces Timer instance, channel and alternate-function selection
UART / SPI / I2C Additional serial interfaces Pin multiplexing and conflicts with board circuitry
ADC inputs Analogue measurement Pin voltage, ADC channel and board loading
SWD signals Programming and debugging Avoid loading SWDIO/SWCLK during development
Power and reset External circuits and reset control Rail direction, current budget and reset polarity

For exact CN7/CN10 physical pin numbers, use the NUCLEO-F446RE schematic and board pinout for the relevant PCB revision. The Arduino D/A labels above must not be mistaken for ST morpho connector pin numbers.

Peripheral Pin Groups

Interface Common connector assignment Firmware requirement
USART2 PA2 TX / PA3 RX, D1 / D0 Enable USART2 and configure GPIO alternate functions
I2C1 PB8 SCL / PB9 SDA, D15 / D14 Open-drain operation with suitable pull-ups
SPI1 PA5 SCK / PA6 MISO / PA7 MOSI, D13 / D12 / D11 Configure SPI1 and corresponding alternate functions
SPI chip select PB6, D10 Usually controlled as ordinary GPIO
User LED PA5 Output high turns LD2 on
User button PC13 Read GPIO input; account for button polarity and debounce

These are convenient board-level combinations, not the only possible peripheral mappings. A GPIO can support several alternate functions, but only one active pin function at a time. Confirm the alternate-function number using the STM32F446 datasheet or a correctly configured STM32CubeMX project.

I2C Electrical Behaviour

I2C requires pull-up resistors to the appropriate logic rail. Do not assume the MCU’s weak internal pull-ups are suitable for the intended bus speed and capacitance. For a 3.3 V bus, use pull-ups to 3.3 V and check whether an attached module already includes them. Verify peripheral voltage compatibility before connecting a 5 V I2C breakout.

PWM Is Not Available on Every Pin

A pin produces hardware PWM only when it has an appropriate timer-channel alternate function and the chosen timer/channel is configured. An Arduino-style analogWrite() pin list from another board is not a reliable STM32 hardware reference. Timer allocation, frequency, duty-cycle resolution and shared timer periods should be checked in the MCU reference manual.

On-board Resources and Debug Routing

Resource Connection or behaviour Practical implication
LD2 user LED PA5 Can conflict with SPI1_SCK / D13 use
B1 user button PC13 Input transitions may bounce; debounce in firmware
ST-LINK SWD interface to target MCU Supports programming and breakpoints without external probe
ST-LINK VCP Usually USART2 PA2 / PA3 Serial monitor may occupy Arduino D0 / D1
Reset button Target reset Useful when firmware disables expected I/O or clocks
Oscillator/clock inputs Board-revision and solder-bridge dependent Do not assume an external crystal is fitted or enabled

The MCU can use internal oscillators. High-speed external clock arrangements differ across Nucleo board configurations, including ST-LINK-generated clock options. Select the clock source that is actually connected and enabled on the board, and check PLL settings against the STM32F446 clock limits.

GPIO Configuration Reference

For STM32Cube HAL, a GPIO output must have its peripheral clock enabled before initialisation. The following example controls LD2 on PA5 using STM32F4 HAL. It assumes the project already supplies the device startup code and HAL timebase.

#include "stm32f4xx_hal.h"

void led_init(void)
{
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_InitTypeDef pin = {0};
    pin.Pin = GPIO_PIN_5;
    pin.Mode = GPIO_MODE_OUTPUT_PP;
    pin.Pull = GPIO_NOPULL;
    pin.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &pin);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
}

void led_set(uint8_t on)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,
                      on ? GPIO_PIN_SET : GPIO_PIN_RESET);
}

The same PA5 pin can be configured for SPI1_SCK, but doing so replaces the GPIO output function. Do not attempt to operate LD2 independently while PA5 is assigned to the SPI peripheral.

Pin Selection Checklist

  1. Locate the connector label on the NUCLEO-F446RE silkscreen or schematic.
  2. Translate the connector label to its STM32 GPIO name, such as D11 to PA7.
  3. Check that the signal is actually available in the STM32F446RET6 LQFP64 package.
  4. Confirm the required peripheral instance and alternate-function assignment.
  5. Identify any shared on-board connection: LED, user button, VCP, oscillator or debug.
  6. Verify input voltage, output drive and any external pull-up or level-shifting requirements.
  7. Configure the GPIO clock, pin mode, pull setting, speed and peripheral clocks.
  8. Test the signal at the intended connector, not merely at a similarly named MCU pad.

Fault-Finding Reference

Symptom Likely cause Specific check or correction
LD2 does not toggle PA5 clock or output mode missing Enable GPIOA clock and initialise PA5 as push-pull output
Serial monitor shows nothing Wrong USART instance, baud rate or VCP routing Confirm USART2 PA2/PA3, terminal settings and board solder bridges
External UART gives corrupted data Voltage or common-ground issue; two TX outputs connected Confirm 3.3 V logic, shared ground and correct TX-to-RX crossing
I2C devices not detected Missing pull-ups or wrong SDA/SCL assignment Check PB9 SDA, PB8 SCL, pull-up voltage and bus idle levels
SPI transfer fails Incorrect alternate function, mode or chip-select handling Check PA5/PA6/PA7 AF mapping, CPOL/CPHA and D10 CS control
ADC reads full scale or erratically Input outside range, high source impedance or insufficient sampling time Measure input voltage and review ADC sampling configuration
PWM absent on chosen pin Pin lacks selected timer channel or AF is incorrect Check MCU alternate-function table and timer channel selection
Debugger loses target SWD pins repurposed, reset held or power absent Check SWD routing, target supply and connect-under-reset option
Shield fits but behaves incorrectly Assumed 5 V I/O or Uno-specific peripheral mapping Verify every shield signal and level-shift where required
Clock initialisation fails Firmware expects an unavailable external oscillator Compare board oscillator routing with RCC clock-source settings

Document and Naming Conventions

Identifier Meaning
PA5 STM32 port A, bit 5
GPIOA GPIO peripheral register block for port A
D13 Arduino digital connector position, mapped here to PA5
A0 Arduino analogue connector position, mapped here to PA0
AF GPIO alternate-function selection
USART2 STM32 serial peripheral instance 2
CN7, CN10 ST morpho connector designators on Nucleo-64 boards
SWD Serial Wire Debug programming/debug interface

Use the STM32F446 device datasheet for electrical characteristics, package pin functions and alternate-function assignments; the STM32F446 reference manual for peripheral register behaviour; and the NUCLEO-F446RE board schematic/user manual for connector pin numbers, solder bridges and on-board wiring. A family-level pinout does not replace any of these device- and board-specific references.

Share