Arduino GIGA R1 GPIO Voltage and Shield Compatibility: 3.3V Logic, IOREF and 5V Shields

Arduino GIGA R1 GPIO voltage and shield compatibility guide: understand 3.3 V logic, IOREF, the 5 V power rail, GPIO current limits, level shifting and which Mega/Due-style shields can be reused safely.

The Arduino GIGA R1 WiFi deliberately keeps the familiar physical size and header layout of the Arduino Mega and Due.

That makes it tempting to assume:

but electrical compatibility is not guaranteed.

The most important rule is:

It also exposes a:

but that does not mean its GPIO operates at 5 V.

Arduino explicitly states that shields using the UNO, Mega or Due form factor should support:

before being considered compatible with GIGA.

Quick Voltage Reference

Feature Arduino GIGA R1 WiFi
Main logic voltage 3.3 V
IOREF 3.3 V
3.3 V power rail Available
5 V power rail Available
VIN 6-24 V
Recommended GPIO current 8 mA per pin on Arduino store specification
Maximum individual I/O current 20 mA according to official full pinout
Maximum total I/O/control current 140 mA according to official full pinout
Blanket 5 V GPIO compatibility No

IOREF Is the Key Shield-Compatibility Pin

The GIGA power header includes:

and the current Arduino datasheet states that it is connected to:

IOREF exists so a properly designed shield can detect the logic voltage used by the host Arduino board.

A modern shield can therefore be designed to operate like:

and adapt its signal-level circuitry accordingly.

A Shield That Uses IOREF Properly Is Much Safer

A well-designed shield may use IOREF to configure:

  • level shifters;
  • logic buffers;
  • pull-up voltages;
  • transceiver logic supply;
  • bidirectional bus interfaces.

A legacy shield that ignores IOREF and simply assumes:

needs much more careful inspection.

The 5 V Pin Is a Power Rail, Not the GPIO Voltage

GIGA exposes:

on the power header.

You can use it to power suitable peripherals.

For example:

is perfectly possible if the shield’s logic interface accepts 3.3 V signalling.

The dangerous assumption is:

That does not follow.

Check Signal Voltage Separately from Supply Voltage

A module can be powered from:

while using:

or it may produce full:

toward the MCU.

You must check both:

  • power-supply requirement;
  • signal-level requirement.

Do Not Treat Every GIGA Pin as 5 V Tolerant

The STM32H747 datasheet identifies individual MCU pins using I/O structures such as:

That means some STM32H747 pins can tolerate higher input voltages under specific datasheet conditions.

However:

Why Blanket 5 V Assumptions Are Unsafe

Several factors matter:

  • the exact STM32 pin behind the Arduino header;
  • whether that pin is FT or TT;
  • whether the pin is in input or output mode;
  • whether an analogue function is enabled;
  • board-level circuitry connected to that pin;
  • power sequencing;
  • current-injection limits.

For normal shield design, the safe rule is still:

5 V Tolerance Normally Applies to Inputs, Not 5 V Output

Even when an STM32 pin is marked FT, that does not mean it can generate:

as a push-pull output.

The MCU is powered from:

so its normal logic HIGH output is in the 3.3 V domain.

A 5 V shield input must therefore recognise a 3.3 V HIGH level.

Check VIH on Legacy 5 V Shields

A common compatibility problem is not damage—it is logic threshold.

Suppose GIGA outputs approximately:

to a 5 V shield.

If the shield requires a minimum HIGH input voltage greater than that, communication may be unreliable.

This can happen with some:

  • older CMOS logic;
  • 5 V buffers;
  • certain display interfaces;
  • custom shields built around strict 5 V thresholds.

Many TTL-Compatible 5 V Inputs Work with 3.3 V

Some 5 V logic families recognise a voltage around:

as HIGH.

Those inputs may work perfectly from a 3.3 V GIGA output.

But this should come from the peripheral datasheet, not from guesswork.

I2C Shields Need Special Attention

I2C uses open-drain signals with pull-up resistors.

So the question is:

If an old shield contains pull-ups to:

then attaching it to GIGA can put 5 V onto the bus.

The shield should instead:

  • pull up to IOREF;
  • pull up to 3.3 V;
  • use a bidirectional level shifter;
  • or be explicitly verified against the exact GIGA pins.

Multiple I2C Pull-Ups Also Add in Parallel

If the GIGA project includes several sensor boards, each may contain its own pull-up resistors.

For example:

gives a much lower effective pull-up resistance.

This increases sink current and can distort bus behaviour.

Check both:

  • pull-up voltage;
  • combined pull-up resistance.

SPI Shields

SPI normally uses push-pull signals:

For a 5 V shield, check:

  • whether 3.3 V from GIGA is accepted as HIGH;
  • whether the shield’s CIPO/MISO output returns 3.3 V or 5 V;
  • whether CS has a 5 V pull-up;
  • whether the library supports STM32H747.

UART Shields and Modules

GIGA’s hardware UART pins use:

Do not directly connect them to:

  • RS-232 voltage levels;
  • 5 V TTL outputs unless verified safe;
  • RS-485 A/B differential lines.

Use the correct:

  • level shifter;
  • RS-232 transceiver;
  • RS-485 transceiver.

CAN Requires a Transceiver

The GIGA exposes logic-level:

not:

Use a 3.3 V-compatible CAN transceiver.

Do not connect CANH/CANL directly to the GPIO pins.

Analogue Inputs Are Especially Important

Do not apply 5 V to GIGA analogue inputs just because a corresponding STM32 GPIO might be 5 V-tolerant in digital mode.

Analogue operation has its own input-voltage and protection limits.

For a 0-5 V analogue signal, use a:

to reduce the signal to the GIGA ADC range.

Simple 5 V to 3.3 V Divider

For a slow unidirectional digital or analogue signal, a resistor divider can be used.

Example:

The output is approximately:

This is suitable for some low-speed signals, but not for every bus.

Use Proper Level Shifters for Fast Digital Buses

For:

  • SPI;
  • fast UART;
  • parallel buses;
  • direction-changing signals;

use a suitable logic-level translator rather than an arbitrary resistor divider.

Choose the device based on:

  • direction;
  • speed;
  • logic thresholds;
  • drive strength;
  • bus topology.

BSS138-Style Level Shifters Are Mainly for Open-Drain Buses

The common MOSFET level shifter circuit works well for:

and similar open-drain interfaces.

It is not automatically the best choice for:

  • fast SPI;
  • push-pull clocks;
  • high-speed UART;
  • parallel buses.

GPIO Current: 8 mA Is the Sensible Design Figure

Arduino’s current store specification lists:

for GIGA.

The official full pinout also states absolute board guidance of:

and:

Do Not Design to the 20 mA Maximum

Treat:

as the sensible Arduino-level design target.

The 20 mA figure should not be interpreted as:

because the total current limit would be exceeded very quickly.

Use Drivers for Relays, Motors and Large LEDs

Do not drive loads such as:

  • relay coils;
  • motors;
  • solenoids;
  • high-power LEDs;
  • large LED strips;

directly from GIGA GPIO.

Use:

  • MOSFETs;
  • transistors;
  • ULN2803-style drivers;
  • motor-driver ICs;
  • relay-driver stages.

Motor Shields Need Logic-Level and Current Checks

A motor shield can be mechanically compatible while still having:

  • 5 V logic;
  • 5 V pull-ups;
  • library dependencies;
  • timer dependencies.

Arduino currently lists the:

as officially compatible with GIGA.

That is much more useful than assuming every third-party Mega motor shield is equivalent.

Officially Listed Compatible Shields

Arduino currently lists these shields and their libraries as compatible with GIGA R1 WiFi:

  • Arduino Ethernet Shield Rev2;
  • Arduino Motor Shield Rev3;
  • Arduino 4 Relays Shield;
  • Arduino 9 Axis Motion Shield.

That does not mean they are the only compatible shields.

It means Arduino has specifically identified them as supported examples.

UNO, Mega and Due Form-Factor Shields

Arduino’s current FAQ states that a shield using the:

form factor is expected to work with GIGA if it supports:

but Arduino still recommends checking with the shield manufacturer.

Mechanical Compatibility Is Only Step One

A shield can physically fit while failing because of:

  • wrong logic voltage;
  • wrong pin assignment;
  • SPI header assumptions;
  • timer dependency;
  • AVR-specific direct-register code;
  • library architecture restrictions.

AVR-Specific Libraries Can Fail Even When the Hardware Is Safe

A legacy Mega shield library may contain code such as:

which is specific to AVR hardware.

GIGA uses:

so that code will require rewriting.

Check Library Architecture Before Buying a Shield

Look for:

  • STM32 support;
  • mbed support;
  • Arduino GIGA support;
  • generic Arduino API use;
  • recent maintenance.

A shield can be electrically perfect but unusable because its library only compiles for:

Timer-Dependent Shields Need Testing

Some shields use:

  • Servo;
  • tone generation;
  • motor PWM;
  • IR libraries;
  • precise timer interrupts.

The STM32H747 timer architecture is completely different from Mega’s ATmega2560 timers.

Use board-independent libraries where possible.

Pin Mapping Also Matters

GIGA preserves much of the large Arduino header arrangement, but it is not a Mega internally.

For example:

  • UART mapping is similar at the Arduino-header level;
  • I2C buses differ;
  • SPI options differ;
  • extra camera/display GPIO are added;
  • CAN is native;
  • analogue features are substantially different.

A shield should use symbolic Arduino pin names rather than STM32 register assumptions.

Shield Compatibility Checklist

Before plugging an old shield into GIGA, check:

Example 1: Simple Relay Shield

Suppose a shield:

It may work perfectly.

The relays are powered by the 5 V rail while GIGA only supplies logic-level control signals.

Example 2: Old 5 V LCD Shield

An old LCD shield may:

  • run at 5 V;
  • drive data lines back toward the Arduino;
  • use 5 V pull-ups;
  • assume AVR timer behaviour.

It should not be considered GIGA-compatible until those details are checked.

Example 3: SPI Ethernet Shield

Arduino specifically lists:

as compatible.

A third-party Ethernet shield using the same physical layout may still differ in:

  • logic buffers;
  • SPI voltage;
  • reset circuitry;
  • library version.

Example 4: 5 V Sensor Module

A sensor breakout marked:

does not automatically guarantee that its output is 3.3 V when powered from 5 V.

Check the board schematic.

Sometimes the regulator only powers the sensor while pull-ups remain connected to VCC.

Example 5: I2C Module with 5 V Pull-Ups

If the module contains:

use a level shifter or modify the pull-ups to 3.3 V unless you have verified the exact GIGA pins and all operating conditions.

IOREF-Aware Custom Shield Design

If you are designing a new shield for both Mega and GIGA, use:

as the logic-voltage reference rather than hard-wiring logic pull-ups to 5 V.

A good architecture is:

Use 3.3 V as the Native Logic Domain

For a new GIGA-specific design, the simplest rule is:

Only add 5 V where a load actually needs it.

This reduces:

  • level-shifting complexity;
  • risk of accidental overvoltage;
  • I2C pull-up problems;
  • debugging effort.

Quick Compatibility Matrix

Shield / peripheral type Typical result
Native 3.3 V shield Best candidate
IOREF-aware 3.3/5 V shield Good candidate
5 V-powered shield with 3.3 V-compatible inputs May be compatible
5 V shield returning 5 V signals Needs level shifting / verification
5 V I2C pull-ups Needs attention
AVR-register-specific library Software rewrite likely
Official Arduino GIGA-compatible shield Supported starting point

Quick Electrical Reference

Final Thoughts

The GIGA R1 WiFi is mechanically friendly to the huge ecosystem of Arduino Mega, Due and UNO-style shields, but the correct compatibility question is not:

It is:

The safest migration rules are:

  • treat all external logic as 3.3 V unless specifically verified;
  • do not confuse the 5 V power rail with GPIO voltage;
  • check I2C pull-up voltage;
  • check return signals from 5 V shields;
  • use level shifting where required;
  • verify STM32/Mbed library support;
  • use external drivers for high-current loads.

The STM32H747 does contain individual 5 V-tolerant input structures on some pins, but that is a pin-specific silicon feature—not a reason to treat the GIGA as a blanket 5 V-compatible board.

For full GIGA pin mapping, see our Arduino GIGA R1 WiFi pinout guide. For CAN-level interfacing, see the GIGA R1 CAN Bus guide.

Share your love