Arduino Due Pinout: GPIO, ADC, DAC, PWM, UART, CAN, SPI and I2C

Arduino Due pinout guide: 54 GPIO, A0-A11 as D54-D65, 12 PWM pins, 12-bit ADC, dual DAC, four UARTs, two I2C buses, CAN, SPI header, native USB, programming USB and critical 3.3 V limits.

The Arduino Due is Arduino’s classic large-format 32-bit ARM board.

It is based on the:

and provides:

The most important electrical warning is:

Applying more than 3.3 V to a Due I/O pin can damage the SAM3X8E.

Quick Pinout Reference

Function Pins
Dedicated digital GPIO D0-D53
Analog inputs A0-A11
Analog pins as digital D54-D65
PWM D2-D13
UART0 / Serial D0 RX, D1 TX
Serial1 D19 RX1, D18 TX1
Serial2 D17 RX2, D16 TX2
Serial3 D15 RX3, D14 TX3
I2C / Wire D20 SDA, D21 SCL
I2C / Wire1 SDA1, SCL1 dedicated header pins
SPI Central 6-pin SPI header
DAC DAC0, DAC1
CAN0 CANRX, CANTX
Native USB Native USB Micro-B port / SerialUSB
Programming USB Programming Micro-B port via ATmega16U2
Built-in LED D13
Logic voltage 3.3 V only

Main Processor: SAM3X8E

The Due uses the SAM3X8E, a 32-bit Cortex-M3 microcontroller running at:

This was a major step up from the 8-bit AVR boards that dominated early Arduino hardware.

Compared with an Arduino Mega 2560, the Due provides:

  • 32-bit processing;
  • far more SRAM;
  • 12-bit ADC hardware;
  • true DAC outputs;
  • native USB;
  • CAN;
  • higher clock speed.

Memory

The SAM3X8E provides:

The SRAM is organised as:

and the full 512 kB Flash is available to user applications because the bootloader is stored in dedicated ROM rather than consuming normal program Flash.

Digital GPIO: D0-D53

The Due exposes:

as dedicated digital header pins.

They can be used with normal Arduino functions:

A0-A11 Also Work as Digital Pins

The current Arduino SAM core maps:

So the core defines:

covering:

3.3 V Only: The Critical Due Rule

Unlike Arduino Mega 2560 and UNO R3, Due uses:

Arduino explicitly warns that the maximum I/O voltage is:

Do not connect a 5 V output directly to a Due GPIO.

Typical devices that may require level conversion include:

  • 5 V LCD modules;
  • older sensors;
  • 5 V UART devices;
  • legacy Arduino shields;
  • 5 V I2C pull-ups.

IOREF Helps Compatible Shields Adapt

The Due follows the Arduino 1.0 shield pinout and provides:

A correctly designed shield can read IOREF and adapt its logic level accordingly.

But not every older shield does this.

A shield physically fitting the Due does not guarantee electrical compatibility.

GPIO Current Limits

The Due does not have one simple per-pin current figure for every GPIO.

Arduino documents that individual SAM3X pins can typically source either:

depending on the pin, and sink:

depending on the pin.

The official board specification lists:

For LEDs, relays, motors and other meaningful loads, use a transistor, MOSFET or driver IC.

PWM Pins

Arduino documents 12 PWM-capable digital pins:

Use:

By default, Arduino uses 8-bit-style values:

for compatibility with AVR boards.

PWM Resolution Can Be Changed

Due supports:

so your sketch can request a different output resolution where the underlying timer/PWM peripheral supports it.

This is a major difference from classic AVR Arduino boards, where analogWrite() is normally fixed around 8-bit PWM behaviour.

PWM Does Not Mean DAC

The Due has both:

They are different.

PWM rapidly switches a digital output between HIGH and LOW.

The DAC generates a real analogue voltage level.

Analog Inputs: A0-A11

The Due provides:

The SAM3X8E ADC supports:

but Arduino defaults analog reads to:

for compatibility with older Arduino sketches.

Enable Full 12-Bit ADC Resolution

Use:

then:

can return:

ADC Input Range Is 0-3.3 V

The analog pins measure between:

Applying more than 3.3 V to an analog input can damage the SAM3X8E.

This is especially important when moving a sensor circuit from Mega 2560, where 5 V ADC signals are normal.

AREF Behaviour Is Different from AVR

Arduino notes that:

is ignored on Due in normal use.

The AREF pin is connected to the SAM3X analogue reference through a resistor bridge.

Using an external analogue reference requires hardware modification rather than the simple AVR-style software selection.

Two True DAC Outputs

The Due provides:

with:

Use:

for up to 4096 software levels.

The DAC Does Not Swing from 0 to 3.3 V

This is an important Due detail.

Arduino documents the practical DAC output range as approximately:

not a full:

range.

This matters for:

  • waveform generation;
  • analogue control;
  • audio;
  • reference generation.

Four Hardware UARTs

The Due provides four hardware serial ports.

Arduino object RX TX
Serial D0 D1
Serial1 D19 D18
Serial2 D17 D16
Serial3 D15 D14

All use:

so external 5 V serial devices may require level conversion.

Serial Is Shared with the Programming Interface

D0/D1 are connected to the board’s ATmega16U2 USB-to-serial interface.

This means hardware connected to:

can interfere with uploads or serial communication through the Programming USB port.

For external peripherals, prefer:

where possible.

Programming USB Port

The Due has two Micro-B USB connectors.

The:

uses an:

USB interface to communicate with the SAM3X8E.

It is the familiar choice for:

  • sketch uploads;
  • serial monitor;
  • automatic reset.

Native USB Port

The:

connects directly to the SAM3X8E USB peripheral.

In Arduino code it is associated with:

rather than the normal UART-backed:

Native USB Supports USB OTG

The SAM3X8E USB interface can operate in:

  • USB device mode;
  • USB host mode;
  • USB OTG roles.

This enables projects involving:

  • keyboard;
  • mouse;
  • USB peripherals;
  • custom USB device behaviour.

Keyboard and Mouse Support

Arduino explicitly documents Due support for USB keyboard/mouse functionality through the native USB system.

This is something the ATmega2560-based Mega cannot do directly from its main application MCU.

Which USB Port Should You Use?

For the simplest programming workflow:

is generally easiest.

Use the:

port when your application specifically needs:

  • SerialUSB;
  • USB device functions;
  • USB host/OTG capability.

I2C / TWI Bus 1: Wire

The main Arduino I2C bus is:

Use:

This bus includes onboard/internal pull-up support as documented by Arduino.

I2C / TWI Bus 2: Wire1

The Due also provides a second independent I2C bus on dedicated:

header pins.

Use:

Wire1 Needs External Pull-Ups

Arduino specifically notes:

so an I2C bus using Wire1 requires suitable external pull-up resistors unless the connected breakout boards already provide them.

Why Two I2C Buses Are Useful

Two buses allow you to:

  • separate high-speed and low-speed sensors;
  • use devices with conflicting fixed addresses;
  • isolate long cable runs;
  • keep display traffic separate from sensor traffic.

SPI Is on the Central 6-Pin Header

This is one of the most important Due pinout differences from Mega 2560.

Due hardware SPI is exposed on the:

with:

signals.

Do Not Use Mega D50-D53 SPI Assumptions

On Mega 2560:

On Due, those header numbers are not the primary SPI signal location.

The central SPI header is the correct standard connection point.

SPI Chip Select Pins

The Due’s SAM core supports hardware SPI chip-select handling and maps common board SS selections such as:

to SPI peripheral chip-select channels.

Most Arduino libraries still allow any suitable digital GPIO to be used as a software-controlled chip-select.

CAN Bus

The SAM3X8E contains:

and the Arduino Due hardware exposes the primary:

signals.

A CAN transceiver is still required.

The MCU generates logic-level CAN TX/RX signals; it does not directly drive the differential CANH/CANL bus.

CAN Requires an External Transceiver

A typical connection is:

Use a 3.3 V-compatible transceiver or verify logic-level compatibility carefully.

Arduino API Support for Due CAN

Arduino’s classic Due product documentation notes that the CAN pins are present but were not covered by the standard Arduino API in the same way as basic GPIO or Wire.

In practice, Due CAN projects commonly use dedicated SAM3X CAN libraries.

So:

but:

Two CAN Controllers vs Exposed Pins

The current Arduino SAM core contains definitions for:

with primary CAN0 pins:

and complementary CAN1 mappings inside the variant definition.

For normal board-level use, follow the official Due pinout and the requirements of the CAN library you select rather than assuming both controllers have equally convenient header access.

External Interrupts

The Due’s current Arduino SAM core defines:

for the board’s digital-numbered pins.

Unlike AVR boards where only a small subset of pins support the classic external-interrupt API, interrupt handling on the SAM3X is much more flexible.

This includes the analog header pins when they are addressed digitally as:

Use digitalPinToInterrupt()

Portable Arduino code should still use:

rather than relying on architecture-specific interrupt numbers.

Built-In LED

The standard built-in LED is connected to:

and the current Due core defines:

D13 is also PWM-capable on Due.

Power Input

Arduino specifies:

The board can be powered from:

  • DC barrel jack;
  • USB;
  • VIN.

3.3 V and 5 V Power Pins

The Due provides both:

power rails on its headers.

But remember:

The SAM3X8E I/O remains 3.3 V only.

Regulator Current

Arduino’s official Due specification lists up to:

subject to the board’s power source, thermal limits and total system loading.

Do not interpret these figures as permission to draw high current from GPIO.

Erase Button

The Due includes a dedicated:

button.

Holding it for several seconds while powered erases the SAM3X Flash.

This can be useful when:

  • a sketch interferes with USB;
  • the board becomes difficult to upload;
  • you need to clear the application Flash completely.

Reset Button

The:

button restarts the SAM3X8E without erasing its Flash contents.

Reset and Erase therefore perform very different functions.

JTAG Header

The Due provides a dedicated JTAG header for low-level debugging of the SAM3X8E.

This is useful for:

  • breakpoints;
  • register inspection;
  • single stepping;
  • professional embedded debugging.

Due vs Mega 2560 Pinout Philosophy

The boards share a similar large physical form factor, but they are electrically very different.

Feature Due Mega 2560
Logic 3.3 V 5 V
CPU 32-bit Cortex-M3 8-bit AVR
Clock 84 MHz 16 MHz
SRAM 96 kB 8 kB
ADC 12-bit hardware 10-bit
DAC 2 true DAC outputs None
Native USB Yes No
CAN Yes No native controller

Common Mistake 1: Applying 5 V to GPIO

This is the biggest Due mistake.

Use level shifting where required.

Common Mistake 2: Using Mega SPI Pins

Do not assume:

are the Due’s normal SPI pins just because the board looks like a Mega.

Use the dedicated central SPI header.

Common Mistake 3: Forgetting ADC Defaults to 10 Bits

The hardware is 12-bit, but normal Arduino compatibility defaults to:

Use:

when you want the full ADC resolution.

Common Mistake 4: Assuming the DAC Is 0-3.3 V

The actual Due DAC output range is approximately:

so design analogue interfaces accordingly.

Common Mistake 5: Confusing Serial and SerialUSB

These are different paths:

Choose the one that matches the USB port and application.

Common Mistake 6: Using Wire1 Without Pull-Ups

The dedicated:

bus requires external I2C pull-ups unless your connected hardware already supplies them.

Quick Reference

Final Thoughts

The Arduino Due remains an unusual board in Arduino’s history because it combines the large Mega-style form factor with a much more capable 32-bit ARM processor.

Its strongest features are:

  • 54 dedicated digital pins;
  • 12 analog inputs;
  • 12-bit ADC hardware;
  • two true DAC outputs;
  • four UARTs;
  • two I2C buses;
  • CAN hardware;
  • native USB OTG;
  • 96 kB SRAM.

The most important rules are:

If you treat it like a 5 V Mega simply because the PCB is similar, the Due can be damaged.

If you treat it as what it actually is—a 3.3 V SAM3X ARM board with large Arduino headers—it remains a flexible platform for control, data acquisition, USB and CAN projects.

Share your love