Arduino Portenta H7 Pinout: GPIO, ADC, DAC, PWM, CAN, UART, SPI, I2C, USB and Ethernet

Arduino Portenta H7 pinout guide: STM32H747 M7/M4 GPIO, ADC, DAC, PWM, UART, SPI, I2C, CAN, USB-C, Ethernet, camera, display, SD and the two 80-pin high-density connectors explained.

The Arduino Portenta H7 is a high-performance dual-core board based on the STM32H747XI.

Its architecture combines:

The board keeps the narrow Arduino MKR-style header layout, but most of its capability is exposed through the two high-density connectors underneath.

Quick Portenta H7 Specifications

Feature Portenta H7
Main MCU STM32H747XI
High-performance core Cortex-M7 up to 480 MHz
Real-time core Cortex-M4 up to 240 MHz
Internal MCU Flash 2 MB class STM32H747 internal Flash
Internal MCU RAM 1 MB class STM32H747 SRAM
External SDRAM 8 MB
External NOR Flash 16 MB
Logic voltage 3.3 V
MKR-style digital pins D0-D14
MKR analogue pins A0-A6
Additional analogue pin A7 on high-density connector
Default ADC resolution in current Arduino core 12-bit
STM32 ADC capability Up to 16-bit, 3 ADCs, up to 36 channels
DAC 2 × 12-bit in MCU; one user-accessible as A6
UART 4 hardware ports exposed across headers/connectors
I2C Multiple buses
SPI Main MKR SPI plus high-density SPI signals
CAN CAN TX/RX on high-density connector; external transceiver required
Ethernet 10/100 PHY; external connector/magnetics via carrier
USB-C Host/device, High/Full Speed, DisplayPort output
Wireless Murata 1DX Wi-Fi + Bluetooth
Battery Single-cell 3.7 V Li-Po, integrated charger

Portenta H7 Uses 3.3 V Logic

The most important electrical rule is:

Do not treat Portenta H7 as a 5 V Arduino simply because it exposes:

power connections.

Check voltage compatibility before connecting:

  • 5 V sensors;
  • older Arduino shields;
  • UART modules;
  • SPI devices;
  • I2C boards with 5 V pull-ups.

GPIO Current Limits

Arduino’s current full pinout warns that:

These are limits, not design targets.

For:

  • relays;
  • motors;
  • solenoids;
  • large LEDs;
  • high-current loads;

use an external transistor, MOSFET or driver.

Main MKR-Style Digital Pin Mapping

The top headers expose:

with the following current Arduino-core mappings:

Arduino pin STM32H747 pin Main documented function
D0 PH15 PWM
D1 PK1 PWM
D2 PJ11 PWM
D3 PG7 PWM
D4 PC7 PWM
D5 PC6 PWM
D6 PA8 PWM
D7 PI0 SPI chip select
D8 PC3 SPI COPI / MOSI
D9 PI1 SPI SCK
D10 PC2 SPI CIPO / MISO
D11 PH8 I2C SDA
D12 PH7 I2C SCL
D13 PA10 UART RX
D14 PA9 UART TX

PWM on the Main Header

Arduino’s full pinout marks:

as the main MKR-header PWM outputs.

The high-density connectors expose additional PWM signals.

This is useful when the normal MKR header does not provide enough timer outputs.

Analog Inputs

The main MKR-style header exposes:

and the Arduino core also defines:

on the high-density connector.

Analog pin STM32H747 pin ADC function
A0 PA0_C ADC2_INP0
A1 PA1_C ADC2_INP1
A2 PC2_C ADC3_INP0
A3 PC3_C ADC3_INP1
A4 PC2 ADC1_INP12
A5 PC3 ADC1_INP13
A6 PA4 ADC1_INP18 / DAC1_OUT1
A7 PA6 ADC1_INP7, high-density connector

Default Arduino ADC Resolution

The current Arduino Mbed core defines:

for Portenta H7.

That means ordinary:

uses a 12-bit default Arduino resolution unless changed by supported APIs.

STM32H747 ADC Hardware Is More Capable

The MCU itself contains:

according to Arduino’s Portenta specification.

The exact resolution, sampling rate and channel availability depend on the selected ADC instance and software configuration.

A6 Is a True DAC Output

The STM32H747 contains:

but Arduino exposes one DAC channel to the user as:

This is a genuine analogue voltage output, not PWM.

Why Only One DAC Appears on the Header

The MCU has two DAC channels internally, but the Portenta board routing exposes only one through the normal external user connection.

So for normal Arduino use:

is the important mapping.

SPI on the MKR Header

The default Arduino SPI mapping is:

Use:

SPI Example

Additional SPI Signals on the High-Density Connector

The J2 connector also exposes a dedicated set labelled:

These signals are useful for carrier boards and custom hardware.

Do not assume every exposed hardware bus automatically has a pre-created Arduino object with the same printed bus number.

Check the current Arduino core when using non-default buses.

I2C on the Main Header

The normal Arduino:

bus uses:

I2C Example

Multiple I2C Buses

The high-density connectors expose additional I2C signals labelled:

while the MKR-header D11/D12 connection is labelled:

on Arduino’s physical pinout.

The Arduino software objects do not necessarily use the same numbering convention as the board silkscreen/STM32 peripheral labels.

Use the current core definitions when selecting:

UART on the Main Header

The default hardware serial port is:

and is exposed in the current core as:

USB Serial

The USB-C virtual serial interface is:

and is the normal USB monitor connection.

Additional UARTs

The Portenta high-density connectors expose multiple additional UART groups:

Arduino’s product specification describes:

CAN Bus

The high-density connector exposes:

The current Arduino Mbed core creates a:

interface using those pins.

CAN Requires a Transceiver

The Portenta pins are MCU-level:

not:

You still need an external CAN transceiver or a carrier board that provides one.

Ethernet

Portenta H7 includes an onboard:

but there is no RJ45 socket directly on the module.

The differential Ethernet signals are exposed through the high-density connector.

A carrier board provides:

  • RJ45 connector;
  • magnetics;
  • mechanical interface;
  • other supporting hardware.

Ethernet High-Density Signals

Arduino’s current pinout exposes signals including:

on J1.

USB-C Is a Multipurpose Port

The Portenta USB-C connector supports:

  • programming;
  • USB device mode;
  • USB host mode;
  • High-Speed / Full-Speed USB;
  • DisplayPort video output;
  • power.

This is much more capable than a simple USB-to-serial connector.

Additional USB Signals on the High-Density Connector

The high-density connectors also expose additional USB signals such as:

which allow carrier boards to expose additional USB functions.

Display Interface

The J1 high-density connector exposes:

for a MIPI DSI display interface.

This allows high-bandwidth display connections without consuming a large parallel GPIO bus.

DisplayPort over USB-C

The board can also output:

through the USB-C connector.

This is supported by the STM32H747 graphics/display architecture and the board’s USB-C routing.

Camera Interface

The J2 connector exposes an 8-bit camera interface:

Arduino rates the camera interface at up to:

for suitable external camera hardware.

Portenta Vision Shield

The Arduino Portenta Vision Shield makes these high-density interfaces easier to use by adding:

  • 320 × 320 camera;
  • two microphones;
  • SD-card connector;
  • Ethernet on the Ethernet version;
  • JTAG connector.

This is often the easiest path for machine-vision experiments.

SD Card Interface

The high-density connector exposes a native SD interface:

A carrier board or Vision Shield can turn these signals into a physical SD-card socket.

I2S and SAI Audio

The high-density connectors expose digital-audio signals including:

and another:

group.

These are useful for:

  • audio codecs;
  • digital microphones;
  • multi-channel audio;
  • DSP applications.

Digital Microphone Interface

The J1 connector also exposes:

for digital microphone applications.

High-Density GPIO

J2 includes additional general-purpose signals labelled:

plus extra PWM and analogue signals.

This is why the two 80-pin connectors are the real expansion interface for Portenta.

High-Density PWM

Arduino’s full pinout labels additional PWM outputs:

across the high-density connection.

These are particularly useful in carrier-board designs.

Debug Signals

The connector exposes:

for low-level debugging and programming.

These are valuable when developing:

  • custom bootloaders;
  • real-time firmware;
  • dual-core applications;
  • production test fixtures.

Dual-Core STM32H747

The Portenta H7 contains:

The cores can run separate workloads and communicate through an inter-core mechanism such as Arduino’s RPC facilities.

Typical Dual-Core Split

A practical architecture is:

This is not mandatory, but it is a natural way to use the two processors.

Peripheral Ownership Matters

Do not blindly initialise the same peripheral from both cores.

A sensible design gives each shared resource one clear owner:

and exchanges data between cores instead.

External Memory

The default Portenta H7 configuration includes:

in addition to the STM32H747’s internal memories.

This gives far more room than a conventional microcontroller board for:

  • framebuffers;
  • TensorFlow Lite models;
  • large filesystems;
  • network buffers;
  • image processing;
  • MicroPython.

Wireless Connectivity

The board uses the:

module for:

Arduino documents Wi-Fi throughput up to around:

under the module’s supported conditions.

External Antenna

The default Portenta H7 configuration includes an external antenna connection for the wireless module.

Use the intended antenna and connector rather than assuming the PCB itself is a complete high-performance RF antenna system.

Secure Element

The current default Portenta H7 configuration uses an:

for hardware-assisted:

  • device identity;
  • private keys;
  • certificates;
  • secure cloud authentication.

Battery Support

The board supports a:

with integrated charging.

Arduino specifies a recommended minimum capacity of:

VIN Power

Portenta VIN expects a:

with Arduino specifying approximately:

for that input.

Do not treat VIN like the 7-12 V input of a classic UNO.

5 V Pin

The 5 V header pin is an:

when the board is powered from USB or VIN.

Arduino notes that it is taken directly from the input supply and is not a separately regulated 5 V logic rail.

Common Mistake 1: Applying 5 V to GPIO

Portenta H7 is fundamentally a:

Use appropriate level shifting where required.

Common Mistake 2: Assuming the MKR Headers Expose Everything

The small top headers expose only a subset of the STM32H747.

Major features such as:

  • Ethernet;
  • CAN;
  • camera;
  • DSI;
  • SDIO;
  • additional UARTs;
  • extra GPIO;

are primarily available through the high-density connectors.

Common Mistake 3: Connecting CANH/CANL Directly

CAN TX/RX are logic-level controller signals.

A physical CAN transceiver is still required.

Common Mistake 4: Expecting an RJ45 Socket on the Module

The Portenta includes the Ethernet PHY, but a carrier board is needed to expose the physical network connector and magnetics.

Common Mistake 5: Assuming Every Hardware Bus Has a Matching Arduino Object

The STM32H747 exposes many peripherals through the high-density connector.

The standard Arduino core creates default objects for the common buses, but custom carrier-board work may require:

  • additional Mbed objects;
  • custom pin assignments;
  • lower-level STM32 configuration.

Common Mistake 6: Treating the Second Core as Automatic Extra Speed

Two cores only help if the firmware is deliberately partitioned.

A single-threaded sketch does not automatically become:

just because both cores exist.

Common Mistake 7: Sharing a Peripheral Between Cores Without Coordination

Give each peripheral one owner and exchange data through RPC/shared-memory mechanisms.

Quick Main-Header Reference

Quick Analog Reference

Quick High-Density Interface Reference

Final Thoughts

The Arduino Portenta H7 is best understood as:

The main MKR header is convenient for conventional Arduino work:

but the Portenta’s real capability appears on the underside:

For industrial carrier-board design, those two 80-pin connectors are more important than the familiar MKR pins.

For a direct comparison with Arduino’s larger maker-oriented STM32H747 board, see our Arduino GIGA R1 WiFi vs Portenta H7 comparison. For the related STM32H747 main-header mappings, see the Arduino GIGA R1 WiFi pinout guide.

Share your love