Плата на ATmega32U4 определяется компьютером как USB-устройство без дополнительного чипа-преобразователя, а плата на ATmega328P требует отдельного USB-UART моста — именно это различие чаще всего становится решающим при выборе между двумя микроконтроллерами. Оба кристалла относятся к семейству AVR и лежат в основе популярных плат Arduino: 32U4 стоит в Leonardo, Micro и Pro Micro, а 328P — в Uno и Nano.
Несмотря на внешнюю схожесть (одинаковый объём Flash-памяти, похожая тактовая частота, общая среда разработки), внутренняя архитектура периферии у них заметно отличается. Эти отличия влияют на удобство прошивки, количество доступных портов, поведение при отладке и даже на риск «окирпичить» плату неудачным скетчем. Разберём оба чипа по ключевым параметрам.
Ключевые характеристики: сравнительная таблица
Оба микроконтроллера построены на 8-битном ядре AVR и работают на частоте до 16 МГц (в типовых платах Arduino). Однако объём оперативной памяти и набор периферийных блоков различаются.
| Параметр | ATmega32U4 | ATmega328P |
|---|---|---|
| Flash-память | 32 КБ (часть занимает USB-загрузчик) | 32 КБ (загрузчик обычно меньше) |
| SRAM | 2,5 КБ | 2 КБ |
| EEPROM | 1 КБ | 1 КБ |
| USB-интерфейс | Встроенный (USB 2.0 Full-Speed) | Отсутствует |
| Аппаратный UART | 1 шт. | 1 шт. |
| Каналы АЦП | 12 | 8 (в DIP-корпусе 6) |
| Таймеры | 3 таймера, включая 16-битный с расширенными функциями | 3 таймера (два 8-битных, один 16-битный) |
Обратите внимание на строку про загрузчик: у ATmega32U4 стандартный USB-загрузчик Caterina занимает заметную часть Flash — порядка 4 КБ, поэтому фактически под скетч остаётся около 28 КБ. У ATmega328P классический загрузчик Optiboot компактнее, и пользователю доступно примерно 31,5 КБ. Для крупного проекта эта разница вполне ощутима.
💡У ATmega32U4 больше SRAM и встроенный USB, но загрузчик «съедает» около 4 КБ Flash. У ATmega328P памяти для скетча чуть больше, но нет нативного USB.