Плата на ATmega32U4 определяется компьютером как USB-устройство без дополнительного чипа-преобразователя, а плата на ATmega328P требует отдельного USB-UART моста — именно это различие чаще всего становится решающим при выборе между двумя микроконтроллерами. Оба кристалла относятся к семейству AVR и лежат в основе популярных плат Arduino: 32U4 стоит в Leonardo, Micro и Pro Micro, а 328P — в Uno и Nano.

Несмотря на внешнюю схожесть (одинаковый объём Flash-памяти, похожая тактовая частота, общая среда разработки), внутренняя архитектура периферии у них заметно отличается. Эти отличия влияют на удобство прошивки, количество доступных портов, поведение при отладке и даже на риск «окирпичить» плату неудачным скетчем. Разберём оба чипа по ключевым параметрам.

Ключевые характеристики: сравнительная таблица

Оба микроконтроллера построены на 8-битном ядре AVR и работают на частоте до 16 МГц (в типовых платах Arduino). Однако объём оперативной памяти и набор периферийных блоков различаются.

ПараметрATmega32U4ATmega328P
Flash-память32 КБ (часть занимает USB-загрузчик)32 КБ (загрузчик обычно меньше)
SRAM2,5 КБ2 КБ
EEPROM1 КБ1 КБ
USB-интерфейсВстроенный (USB 2.0 Full-Speed)Отсутствует
Аппаратный UART1 шт.1 шт.
Каналы АЦП128 (в DIP-корпусе 6)
Таймеры3 таймера, включая 16-битный с расширенными функциями3 таймера (два 8-битных, один 16-битный)

Обратите внимание на строку про загрузчик: у ATmega32U4 стандартный USB-загрузчик Caterina занимает заметную часть Flash — порядка 4 КБ, поэтому фактически под скетч остаётся около 28 КБ. У ATmega328P классический загрузчик Optiboot компактнее, и пользователю доступно примерно 31,5 КБ. Для крупного проекта эта разница вполне ощутима.

💡

У ATmega32U4 больше SRAM и встроенный USB, но загрузчик «съедает» около 4 КБ Flash. У ATmega328P памяти для скетча чуть больше, но нет нативного USB.