ATmega32U4 PCB Design Guide: Footprint, Pinout, and Alternatives
8-bit AVR MCU with 32 KB flash and native USB 2.0 full-speed device; Arduino Leonardo chip; also QFN.
The ATmega32U4 is the Arduino Leonardo's brain and the reason those boards need no separate USB-UART bridge: the USB 2.0 full-speed/low-speed device controller is on the die. 32 KB of flash, 2.5 KB of SRAM, 1 KB of EEPROM, 26 I/O lines, a 12-channel 10-bit ADC, and a JTAG debug interface—all in a 44-lead TQFP or QFN package running from 2.7 to 5.5 V.
The chip's standout feature is USB: six programmable endpoints, 832 bytes of dedicated USB DPRAM, and a 48 MHz PLL for full-speed operation. You can even run USB low-speed without a crystal (RC-suffix parts use the internal 8 MHz oscillator, though only guaranteed from 0 °C to 40 °C for USB). For full-speed USB across the full industrial range, you need an external 16 MHz crystal.
Know what you are getting into with the 32U4: it has two fewer I/O lines and 0.5 KB more SRAM than the ATmega328P, and the pinout is completely different—you cannot drop it into a 328P layout. It also has known silicon errata through Rev E, including TWI bus spikes and PWM register quirks, which are covered below.
What breaks boards
The pinout is nothing like an ATmega328P—do not try to swap them
Despite both being 32 KB AVRs, the ATmega32U4 uses a 44-pin TQFP/QFN package with a completely different pin mapping than the 328P's 28/32-pin packages. Port letters, alternate functions, and power pins are all in different places. The 32U4 also has 26 I/O lines (vs 23 on the 328P) and adds dedicated USB D+/D- pins, UCAP, UGND, and UVCC. Porting a 328P design to the 32U4 is a full relayout, not a drop-in.
RC-suffix parts have a restricted USB temperature range and no bootloader
ATmega32U4RC-AU and ATmega32U4RC-MU parts use the internal calibrated 8 MHz RC oscillator instead of an external crystal. USB operation from the internal RC oscillator is guaranteed only from 0 °C to 40 °C, not the full −40 °C to +85 °C industrial range. Additionally, RC parts ship with no USB bootloader pre-programmed; you must burn one yourself or program over ISP/JTAG. Non-RC parts (-AU, -MU) ship with a default USB bootloader and use an external crystal for full-temperature-range USB.
The internal 3.3 V regulator (UCAP) needs a 1 µF capacitor—and it has current limits
The ATmega32U4 has an on-chip 3.3 V regulator for the USB transceiver, brought out on the UCAP pin. You must connect a 1 µF ±20% capacitor from UCAP to UGND. The regulator can supply external loads, but the maximum output current drops when USB is active: 80 mA when UVCC ≥ 4.0 V with USB inactive, but only about 55 mA remains after the USB buffer's ~25 mA draw. Do not power large external circuits from UCAP.
Known silicon errata: TWI spikes, sleep-mode current, and PWM register bugs
Errata through silicon Rev E (the latest): (1) Enabling TWI produces a 100 ns negative spike on SDA and SCL—work around by enabling the 32U4's TWI before other bus nodes. (2) Executing SLEEP immediately after SEI causes elevated sleep current if a pending interrupt cannot wake the part—disable unused wake-up interrupts before sleeping. (3) The MSB of OCR4A/B/D is write-only in 11-bit enhanced PWM mode; reads always return zero. (4) Timer 4 11-bit enhanced PWM mode is non-functional on Rev B/C/D—none on Rev E but check your silicon.
JTAG shares pins with Port F and ADC—lock yourself out and recovery needs HV programming
The JTAG interface shares PF4 (TCK), PF5 (TMS), PF6 (TDO), and PF7 (TDI). If the JTAGEN fuse is programmed, these pins are not available as GPIO or ADC inputs. If you disable JTAG via the JTD bit in MCUCR and want to re-enable it, you must do so within four clock cycles or the bit locks until the next reset. Setting the wrong fuse or disabling JTAG when you need it for debugging means recovering with a high-voltage parallel programmer. Set fuses last, confirm your debug path, and leave the ISP header accessible.
Key specifications
| Parameter | Value | Source |
|---|---|---|
| Flash | 32 KB In-System Self-Programmable Flash | Datasheet Rev 7766J, Features page 1 (32U4 = 32 KB) |
| SRAM | 2.5 KB internal SRAM | Datasheet Rev 7766J, Features page 1 (32U4 = 2.5 KB) |
| EEPROM | 1 KB EEPROM | Datasheet Rev 7766J, Features page 1 (32U4 = 1 KB) |
| Max clock vs VCC | 8 MHz at 2.7 V; 16 MHz at 4.5 V; linear between 2.7 V–5.5 V per Figure 29-2 | Datasheet Rev 7766J, Features 'Maximum Frequency' + Section 29.6 'Maximum speed vs. VCC' (p. 386) |
| VCC range | 2.7–5.5 V | Datasheet Rev 7766J, Features 'Operating Voltages' |
| I/O count | 26 programmable I/O lines (CMOS outputs, LVTTL inputs) | Datasheet Rev 7766J, Features + Section 2.1 Overview |
| USB | USB 2.0 Full-speed (12 Mbps) / Low-speed (1.5 Mbps); 6 programmable endpoints, 832 bytes USB DPRAM; 48 MHz PLL for full-speed; crystal-less operation for low-speed mode | Datasheet Rev 7766J, Features (USB section) |
| ADC | 12-channel 10-bit ADC with differential inputs and programmable gain; on-chip temperature sensor | Datasheet Rev 7766J, Features (Peripheral section) + Section 24 |
| Timer/counters | Two 16-bit TC, one 10-bit high-speed TC with 64 MHz PLL; four 8-bit PWM, four 2-to-16-bit PWM, six high-speed PWM (2–11 bit) | Datasheet Rev 7766J, Features (Peripheral section) |
| Active supply current | 5 mA max at 4 MHz / 3 V; 15 mA max at 8 MHz / 5 V; 27 mA max at 16 MHz / 5 V | Datasheet Rev 7766J, Section 29.2 DC Characteristics, ICC rows (Table 29-1) |
| Power-down current | 1 µA typ / 5 µA max (WDT disabled, VCC = 3 V, regulator disabled); <10 µA typ / 12 µA max (WDT enabled, VCC = 3 V, regulator disabled) | Datasheet Rev 7766J, Section 29.2 DC Characteristics, Power-down mode ICC rows (Table 29-1) |
| Absolute maximum ratings | VCC max 6.0 V; pin voltage -0.5 to VCC+0.5 V (RESET: -0.5 to +13.0 V, VBUS: -0.5 to +6.0 V); DC current per I/O pin 40 mA; VCC/GND current 200 mA; operating temp -40 to +85°C | Datasheet Rev 7766J, Section 29.1 Absolute Maximum Ratings |
Verified against the manufacturer datasheet on 2026-07-10. Confirm the current revision before production use.
Alternatives
- ATmega328P: Same 32 KB flash AVR core, but no USB peripheral; the Uno chip. Drop to this if you do not need native USB and want a simpler 28/32-pin layout.
- AT90USB1286: 128 KB flash AVR with USB 2.0 Full-speed and OTG; larger TQFP-64 package, more I/O. Step up for more memory and USB host/OTG capability.
- ATSAMD21G18: ARM Cortex-M0+ at 48 MHz, 256 KB flash, 32 KB SRAM, native USB 2.0; Microchip's modern 32-bit alternative when you have outgrown the 8-bit AVR.
- RP2040: Dual Cortex-M0+ at 133 MHz, 264 KB SRAM, USB 1.1 device/host, PIO state machines. Massive performance leap with built-in USB, but 3.3 V only and no internal flash (external QSPI required).
Common questions
- Can the ATmega32U4 run at 16 MHz on 3.3 V?
- Not within spec. The maximum frequency scales linearly from 8 MHz at 2.7 V to 16 MHz at 4.5 V. At 3.3 V the limit is roughly 10–11 MHz. Most parts may appear to work at 16 MHz / 3.3 V on the bench, but it is outside the guaranteed operating area. Run at 8 MHz at 3.3 V, or power the board at 5 V for 16 MHz.
- What is the difference between ATmega32U4-AU and ATmega32U4RC-AU?
- The RC suffix means the part is configured to use the internal calibrated 8 MHz RC oscillator instead of an external crystal. RC parts ship without a USB bootloader and USB operation from the internal RC is guaranteed only from 0 °C to 40 °C. Non-RC parts (-AU, -MU) use an external crystal, cover the full −40 °C to +85 °C range for USB, and ship with a DFU bootloader pre-programmed.
- Do I need an external crystal for USB?
- For USB full-speed (12 Mbps) across the full industrial temperature range, yes: you need a 16 MHz external crystal. For USB low-speed (1.5 Mbps) at room temperature, the internal 8 MHz RC oscillator can work on RC-suffix parts. In practice, most designs use a 16 MHz crystal for reliable full-speed USB.
- How do I upload code to an ATmega32U4 without a bootloader?
- Use the 6-pin ISP header (MISO/MOSI/SCK/RESET/VCC/GND) or the JTAG interface. The JTAG port shares pins with Port F—if you have not disabled it via fuses, you can program and debug over JTAG directly. Either way, leave the programming header accessible on every board revision; it is also your fuse-recovery path.
- Why does my Pro Micro / Leonardo reset twice when I plug it into USB?
- The standard Arduino Leonardo/Micro bootloader performs a USB disconnect-reconnect sequence on startup (the 1200-bps-touch) to enter the bootloader for uploads. This appears as a double-reset to the host OS. It is normal behavior, not a hardware fault. On custom boards, wire the USB-UART bridge's DTR (if present) or tie the reset sequence to your upload tooling.