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:
|
1 2 3 4 5 6 |
Mega shield → plugs into GIGA → therefore it is compatible |
but electrical compatibility is not guaranteed.
The most important rule is:
|
1 2 3 4 |
Arduino GIGA R1 WiFi uses 3.3 V logic. |
It also exposes a:
|
1 2 3 4 |
5 V power rail |
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:
|
1 2 3 4 |
3.3 V logic |
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:
|
1 2 3 4 |
IOREF |
and the current Arduino datasheet states that it is connected to:
|
1 2 3 4 |
3.3 V |
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:
|
1 2 3 4 5 6 7 8 |
UNO / Mega → IOREF = 5 V GIGA / Due → IOREF = 3.3 V |
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:
|
1 2 3 4 |
Arduino = 5 V |
needs much more careful inspection.
The 5 V Pin Is a Power Rail, Not the GPIO Voltage
GIGA exposes:
|
1 2 3 4 |
+5V |
on the power header.
You can use it to power suitable peripherals.
For example:
|
1 2 3 4 5 6 7 8 |
GIGA 5V → shield power GIGA 3.3V GPIO → shield signals |
is perfectly possible if the shield’s logic interface accepts 3.3 V signalling.
The dangerous assumption is:
|
1 2 3 4 5 |
shield powered from 5 V → therefore its outputs are safe for GIGA |
That does not follow.
Check Signal Voltage Separately from Supply Voltage
A module can be powered from:
|
1 2 3 4 |
5 V |
while using:
|
1 2 3 4 |
3.3 V logic |
or it may produce full:
|
1 2 3 4 |
5 V logic outputs |
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:
|
1 2 3 4 5 6 7 8 |
FT → 5 V-tolerant input structure TT → 3.3 V-tolerant structure |
That means some STM32H747 pins can tolerate higher input voltages under specific datasheet conditions.
However:
|
1 2 3 4 5 6 |
some FT pins ≠ all GIGA pins are 5 V tolerant |
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:
|
1 2 3 4 |
design for 3.3 V logic |
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:
|
1 2 3 4 |
5 V HIGH |
as a push-pull output.
The MCU is powered from:
|
1 2 3 4 |
3.3 V |
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:
|
1 2 3 4 |
3.3 V HIGH |
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:
|
1 2 3 4 |
2 V |
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:
|
1 2 3 4 |
what voltage are SDA and SCL pulled up to? |
If an old shield contains pull-ups to:
|
1 2 3 4 |
5 V |
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:
|
1 2 3 4 5 6 7 8 |
4.7 kΩ parallel 4.7 kΩ parallel 4.7 kΩ |
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:
|
1 2 3 4 5 6 7 |
SCK COPI / MOSI CIPO / MISO CS |
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:
|
1 2 3 4 |
3.3 V TTL logic |
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:
|
1 2 3 4 5 |
CAN RX CAN TX |
not:
|
1 2 3 4 5 |
CANH CANL |
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:
|
1 2 3 4 5 6 |
voltage divider or analogue signal conditioner |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
5 V signal | 10k | +---- GIGA input | 20k | GND |
The output is approximately:
|
1 2 3 4 5 |
5 × 20 / (10 + 20) ≈ 3.33 V |
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:
|
1 2 3 4 |
I2C |
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:
|
1 2 3 4 |
8 mA per I/O pin |
for GIGA.
The official full pinout also states absolute board guidance of:
|
1 2 3 4 5 |
20 mA maximum per individual I/O/control pin |
and:
|
1 2 3 4 5 6 |
140 mA maximum total sourced or sunk by all I/O/control pins |
Do Not Design to the 20 mA Maximum
Treat:
|
1 2 3 4 |
8 mA |
as the sensible Arduino-level design target.
The 20 mA figure should not be interpreted as:
|
1 2 3 4 |
every pin may continuously supply 20 mA |
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:
|
1 2 3 4 |
Arduino Motor Shield Rev3 |
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:
|
1 2 3 4 5 6 7 |
UNO Mega or Due |
form factor is expected to work with GIGA if it supports:
|
1 2 3 4 |
3.3 V |
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:
|
1 2 3 4 5 6 |
PORTB |= ... TCCR1A = ... ISR(TIMER1_COMPA_vect) |
which is specific to AVR hardware.
GIGA uses:
|
1 2 3 4 5 |
STM32H747 Arduino Mbed OS core |
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:
|
1 2 3 4 |
AVR |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
1. Does it support 3.3 V logic? 2. Does it use IOREF correctly? 3. Are any signals pulled to 5 V? 4. Does it return 5 V on SPI/UART/I2C? 5. Are analog outputs limited to GIGA-safe levels? 7. Does it rely on AVR registers or timers? 8. Does it use pins that conflict with another GIGA peripheral? 9. Is the total GPIO current reasonable? 10. Does the manufacturer explicitly list GIGA/Due/3.3 V support? |
Example 1: Simple Relay Shield
Suppose a shield:
|
1 2 3 4 5 6 |
takes 5 V power but uses 3.3 V-compatible driver inputs |
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:
|
1 2 3 4 |
Ethernet Shield Rev2 |
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:
|
1 2 3 4 |
VCC 3.3-5 V |
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:
|
1 2 3 4 5 |
SDA → 4.7k → 5 V SCL → 4.7k → 5 V |
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:
|
1 2 3 4 |
IOREF |
as the logic-voltage reference rather than hard-wiring logic pull-ups to 5 V.
A good architecture is:
|
1 2 3 4 5 6 7 8 9 10 11 |
5 V → power loads/peripherals where required IOREF → logic-level reference level translators → where interfaces cross voltage domains |
Use 3.3 V as the Native Logic Domain
For a new GIGA-specific design, the simplest rule is:
|
1 2 3 4 |
all logic signals = 3.3 V |
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
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
GIGA logic: 3.3 V IOREF: 3.3 V Power rails: 3.3 V 5 V VIN: 6-24 V Arduino recommended I/O current: 8 mA per pin Official full-pinout maximum: 20 mA per individual I/O/control pin Total I/O/control maximum: 140 mA Design rule: do not assume 5 V GPIO compatibility |
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:
|
1 2 3 4 |
Does it physically fit? |
It is:
|
1 2 3 4 5 |
Does it operate correctly with 3.3 V IOREF and 3.3 V logic? |
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.