Перейти к содержанию

Микроконтроллеры

Справочник по микроконтроллерам: чем отличаются семейства, на что смотреть при выборе и как устроены ядро, память и периферия. Начинаем с AVR — семейства, на котором построены классические платы Arduino.

Микроконтроллер (МК) — микросхема, в которой на одном кристалле собраны процессорное ядро, флеш-память для программы, оперативная память и периферия: порты ввода-вывода, таймеры, АЦП, интерфейсы UART, I²C, SPI. Достаточно подать питание и прошить программу — и МК управляет двигателем, опрашивает датчики или обменивается данными с компьютером.

Семейства микроконтроллеров

СемействоРазрядность и ядроЧем известноПримеры
AVR (Microchip, ранее Atmel)8 бит, RISC-ядро AVRпростая архитектура, питание до 5,5 В, основа плат ArduinoATmega328P, ATtiny85, AVR128DA48
ARM Cortex-M (ST, NXP, Microchip, Nordic и другие)32 бита, ядра Cortex-M0+, M3, M4, M7, M33производительность, развитая периферия, DMASTM32F103, STM32G431, nRF52840
ESP32 (Espressif)32 бита, ядра Xtensa или RISC-Vвстроенные Wi-Fi и BluetoothESP32, ESP32-S3, ESP32-C3
PIC (Microchip)8, 16 и 32 биташирокий выбор корпусов и периферииPIC16F, PIC18F, dsPIC33
MSP430 (Texas Instruments)16 битсверхнизкое потреблениеMSP430G2553, MSP430FR2433
8051 (MCS-51)8 битархитектура Intel 1980 года, до сих пор живёт в ядрах многих производителейAT89S52, EFM8, CH552
RP2040 (Raspberry Pi)32 бита, два ядра Cortex-M0+программируемые блоки ввода-вывода PIORaspberry Pi Pico

Как выбрать микроконтроллер

  1. Периферия под задачу. Сколько нужно UART, I²C, SPI, каналов АЦП и ШИМ, нужен ли USB, CAN, Ethernet или радио. Это первое, что отсекает лишние варианты.
  2. Память. Объём флеш-памяти под программу и оперативной памяти под буферы. Программа на C с библиотеками растёт быстрее, чем кажется: берите запас в 1,5–2 раза.
  3. Питание и уровни. Питание 5 В упрощает сопряжение со старой логикой и даёт больший запас по помехам, 3,3 В и ниже — стандарт современных датчиков и модулей. Для батарейных устройств смотрите ток в режимах сна.
  4. Производительность. Обработка звука, цифровые фильтры и графика требуют 32-битного ядра, лучше с умножителем и FPU. Опрос кнопок и управление реле — нет.
  5. Инструменты и сообщество. Бесплатный компилятор, недорогой программатор, примеры и библиотеки экономят больше времени, чем разница в цене кристалла.
  6. Корпус и доступность. DIP и SOIC удобно паять вручную, QFN и BGA — нет. Проверьте наличие у поставщиков и наличие аналогов.

Что общего у всех микроконтроллеров

Программа для любого МК работает с одними и теми же понятиями: регистры периферии, порты ввода-вывода, прерывания, таймеры, тактирование, режимы пониженного потребления. Разберитесь с ними на одном семействе — и переход на другое займёт дни, а не месяцы. Как устроено ядро на уровне команд, показывает система команд AVR: 8-битный RISC-процессор с 32 регистрами общего назначения, который удобно изучать на ассемблере.

Обмен данными с датчиками, модулями и компьютером описан в разделе «Интерфейсы»: I²C, RS-232, RS-485 — с примерами кода для AVR. Схемотехника вокруг МК — подтягивающие резисторы, делители, усилители сигналов датчиков — в разделе «Теория».

Готовятся к публикации

ARM Cortex-M и STM32 · ESP32 · PIC · MSP430 · 8051 (MCS-51) · RP2040 · Отечественные микроконтроллеры

Частые вопросы

Чем микроконтроллер отличается от микропроцессора?

Микроконтроллер — законченный компьютер на одном кристалле: ядро, флеш-память программ, оперативная память и периферия (порты, таймеры, АЦП, UART, I²C, SPI). Микропроцессору для работы нужны внешняя память и микросхемы периферии, зато он быстрее и запускает операционные системы вроде Linux.

Какой микроконтроллер выбрать новичку?

Удобнее всего начать с AVR на плате Arduino Uno или Nano: простая архитектура, напряжение питания 5 В, огромное количество примеров. Следующий шаг — 32-битные ARM Cortex-M, например STM32, и ESP32, если нужен Wi-Fi. Принципы — порты, прерывания, таймеры, интерфейсы — у всех семейств общие.

Чем 8-битный микроконтроллер отличается от 32-битного?

Разрядностью арифметики и шин: 8-битный AVR складывает 32-битные числа за несколько команд, а Cortex-M — за одну. У 32-битных МК обычно больше частота, памяти и периферии, есть DMA. 8-битные проще и часто работают от 5 В — для простого управления их хватает с запасом.