Шапка

15.3 Обзор популярных семейств микроконтроллеров

Для экспонометра взят контроллер известной 8-разрядной серии AVR фирмы Atmel. Своей популярностью она обязана простой архитектуре, большому количеству регистров и плоскому адресному пространству. В линейке имеются модели с самыми разными корпусами, включая DIP, который очень удобен для быстрого создания прототипов. Кроме того, семейство широко поддержано программными инструментами, включающими компилятор Си с открытым кодом, который, правда, не отягощён излишним учётом особенностей контроллеров.

А что ещё есть? Современную ситуацию можно охарактеризовать нижеприведённым списком и некоторыми комментариями. Это описание следует рассматривать как моментальный снимок текущего положения , потому что микроконтроллеры - одна из самых быстро меняющихся областей электроники 13 . В ходе чтения будет полезно держать в уме параметры идеального микроконтроллера.

  • Он имеет много памяти на кристалле ( и программной, и оперативной ).
  • В модельном ряде есть удобные для макетирования варианты в корпусах DIP.
  • Имеется внутренний источник тактирования.
  • Для начала работы нужен минимум дополнительных деталей.
  • Он быстрый и малопотребляющий с широким диапазоном напряжений питания.
  • Имеется недорогой программный адаптер с интерфейсом USB.
  • Есть режим внутрисхемного программирования.
  • Есть свободное ПО для программного адаптера.
  • Есть свободный ассемблер и компилятор.
  • Есть свободная среда программирования и отладки ( IDE ), которая собирает воедино все программные инструменты.
  • Возможна внутрисхемная отладка и эмуляция в IDE.
  • Имеется набор инструментальных средств с открытым кодом под Windows, Mac, Linux.
  • Есть живое сообщество пользователей.
AVR ( Atmel )
8-разрядный RISC 14 . Простая архитектура. 32 регистра общего применения. Внутрисхемная отладка. Средства разработки с открытым исходным кодом ( Linux, GCC, Arduino ) поддерживаются фирмой и интегрированы в её программные решения. Среди периферийных блоков есть USB. Много вариантов корпусов, в т.ч. DIP. Доступны в виде гибрида µC+FPGA [* похоже, уже нет ] . Младшие модели стоят менее $0.50, что сравнимо с семейством PIC фирмы Microchip. 32-разрядная серия - AVR32. Программаторы: простой под COM порт ( $12 ), AVR Dragon - внутрисхемный отладчик ( $50 ). Модули Arduino с питанием от USB и возможностью программирования $20...30. Плата AVR Butterfly с ЖК-индикатором и зуммером ( $20 ). Рекомендуется для начального обучения .
PIC (Microchip)

8-, 16- и 32-разрядные. Есть и скоростные, и малопотребляющие версии. Имеются модели с внутрисхемной отладкой и без неё. Много разных учебных наборов. Много типов корпусов ( включая DIP ). Есть решения в виде программных блоков ( soft-процессоров ) для FPGA. Долгое время были фаворитами любительской электроники. Младшие модели стоят менее $0.50.

8-разрядные серии: PIC10F, 12F, 16F, 18F.
16-разрядные серии: PIC24, dsPIC30, dsPIC33.
32-разрядные серии: PIC32MX.

Среди периферийных блоков есть USB, Ethernet MAC и PHY. Фирма предлагает бесплатные образцы. Некоторые старые 8-разрядные модели ( например, PIC16F84 ) необычайно популярны ( новые совместимые разработки имеют внутренний источник тактирования ). Ассемблер довольно необычный и отягощён периферией с переключаемыми банками регистров, один аккумулятор, условный пропуск команды ( вместо условного перехода ) и 8-уровневый аппаратный стек вызовов [* недоступный программисту ] , зато время обработки или входа в прерывание легко подсчитать.

Серии с PIC10F по PIC16F [* цифра указывает на разрядность программной памяти ]   имеют ограниченную поддержку в компиляторах Си фирм SourceBoost и Hi-Tech с ценой от $0 до $3000. Для программ на Си подходит только серия 18F и старше, и именно их поддерживает компилятор Си самой фирмы Microchip ( ограниченная бесплатная версия доступна студентам ). 16-разрядные модели имеют стек в оперативной памяти и обходятся без переключения банков, поэтому для них можно программировать, используя компилятор GCC. 32-разрядные модели используют вычислительное ядро MIPS и обеспечены компилятором Microchip, построенном на основе GCC.

ARM (лицензированное ядро)

32-разрядный RISC с опциональными 16-разрядными инструкциями у некоторых версий ядра. Во встраиваемых системах применяют Cortex M3, ARM7 и ARM9. Младшие модели недороги: около $2. Высокая производительность. Изначально есть внутрисхемная отладка. Большой выбор периферийных блоков и портов ввода-вывода [* стандартизовано только ядро и контроллер прерываний, а периферию каждый лицензиат приделывает свою, поэтому взаимозаменяемости между разными изготовителями нет ] . Есть компилятор C/C++ с открытым исходным кодом и среда разработки Eclipse. В наличии библиотеки Arduino для платы Due , построенной вокруг ARM. Плоская модель памяти. Корпуса от 28 ног ( DIP отсутствует ). Некоторые модели могут грузить программу по USB, но отладка требует программного адаптера ( $50 ). Доступны в составе собранных мезонинных модулей ( $30 ), в виде готовых плат общего применения ( $60 ), Arduino Due ( произносится «doo-way» ) ( $50 ), UDOO (udoo.org, $99), Raspberry Pi ($30), Odroid ($65) и др.

Производители [*] : ADI, Atmel, Broadcom, Cypress, Freescale, Infineon, Microsemi, NXP, Renesas, Samsung, Silicon Labs, ST, TI, Toshiba. Доступны в виде гибридов для FPGA: серия SoC фирмы Altera и серия Zynq Xilinx.

Перекрывают задачи от уровня 8-разрядных кристаллов до iPhone. Конвейер команд и сложные схемы адресации дают увеличение скорости, но снижают предсказуемость времени выполнения. ARM можно порекомендовать для начального обучения, если есть возможность упростить прототипирование устройства .

[*]
[* Здесь самое время отметить возможные уровни совместимости внутреннего программного обеспечения встраиваемых систем. Если речь идёт о разработке на одном языке под один кристалл конкретного производителя, то код или совместим или легко приводится к совместимости. Следующий уровень: если язык один, периферия одинаковая ( один производитель, или стандартизована в определённой степени, как в i8051, или одинаковая внешняя, подключённая по стандартному интерфейсу ) и архитектура памяти одинаковая, то, возможно, совместимо; скорее всего потребуются костыли в виде заголовочных файлов и скриптов линкера. Наконец, если периферийные блоки различаются, то хоть тресни, но совместимости нет, одинаковое ядро и система команд тут никак не поможет, и придётся пересматривать алгоритмы и переписывать код.

Это к тому, что не стоит расчитывать на лёгкую миграцию с одного кристалла на другой, ориентируясь только на модель ядра. ARM здесь хороший пример. Те же проблемы будут и с набирающем популярность RISC-V ].

i8051 ( множество производителей )
8 разрядов. Эволюционное развитие исходной разработки Intel. Давно устоявшиеся средства разработки и отладки. Сложная организация адресного пространства вынуждает к разным выкрутасам в коде на Си. Некоторые модели имеют встроенный отладчик ( Silicon Labs ). Сложный асимметричный набор команд. Большой выбор корпусов ( включая DIP ). Имеются программные блоки для FPGA. Очень хорошие средства разработки, например, “Ride” IDE (www.raisonance.com): компилятор, ассемблер и симулятор. [* Рискну предложить в качестве процессора начального обучения. Обоснования: один из первых контроллеров, активно использующийся с 1980 и по сию пору, т.е. имеется огромная кодовая база под самые разные задачи и масса книг, обучающих схемотехнике и программированию на примере i8051; приятный ассемблер и достаточное количество самых разных компиляторов Си; очень широкая номенклатура кристаллов самых разных производителей; активно выпускается китайцами, часто без какой-либо рекламы, типа, «кому надо и так знают»; «китайские» цены начинаются с единиц (!) центов ] .
Rabbit (Rabbit)
Упор на Ethernet и WiFi, доступны в виде модулей и в виде обычных микросхем. Имеются IDE, компилятор Си, наборы разработки.
MSP430 (TI)
Малопотребляющий 16-разрядный RISC. Активно используется в малопотребляющих контроллерах для построения радиоканалов. Много вариантов корпусов ( есть DIP ). Программирование и отладка через JTAG ( $75...100 ). Есть компилятор MSPGCC с открытым исходным кодом и коммерческие компиляторы. [* И вновь, отличный кристалл для начального обучения. Отличная система команд и периферия, много примеров и литературы ] .
SH-4 (Renesas, ранее Hitachi)
32-разрядный RISC. Самый малоногий корпус QFP-208 . Часто используется для управления двигателями и трансмиссиями. [* Наравне с прочими разработками Hitachi ( M16C/R8C, SH-2 ) и других «японцев» поставляется исключительно железнодорожными вагонами. В отсутствие производственной необходимости изучать не стоит, хотя средства разработки доступны ] .
Coldfire (NXP, ранее Freescale, а до того Motorola)
Встраиваемый вариант архитектуры 68000. Нет корпусов менее 64 ног. GNU компилятор. [* NXP, поглотившая Freescale, активно чистит линейку от недостаточно популярных моделей и, похоже, вычистит таки Coldfire в ноль. Изучать не стоит ] .
ST6/7 (STMicroelectronics)
8 разрядов, есть DIP.
ST9/10 (STMicroelectronics)
16 разрядов, DIP отсутствует.

PowerPC и MIPS (много производителей)
Используются в требовательных к вычислительной мощности встраиваемых системах: автомобилях, сетевом оборудовании, ARM, между тем, доминирует в сотовых телефонах.
Blackfin (Analog Devices)
16/32-разрядные RISC ядра с DSP сопроцессором. Быстрые, производительные. Оптимизированы для аудио, видео и обработки изображений. Проще, чем другие высокопроизводительные модели. GNU компилятор, uClinux, FreeRTOS.
Propeller (Parallax)
8-ядерный 32-разрядный параллельный процессор со скоростью работы 0...80 MHz . Младшие модели упаковываются в DIP-40/44 и поверхностные корпуса. Основная идея, на которую опирается конструкция: «Зачем создавать разную аппаратную периферию, вроде UART или SPI, если можно взять несколько одинаковых процессоров, дать им доступ к портам ввода-вывода и написать хорошие библиотеки, с помощью которых можно переключать уровни на ножках для любого интерфейса от мыши до аналогового видео». [* Первым (?) на этом пути был Ubisoft ( Scenix ). Они делали клон какого-то младшего процессора PIC, который работал в 10 раз быстрее оригинала. Но там было только вычислительное ядро: ни периферии ( её предлагалось заменять библиотекой ногодрыга ), ни флэш-памяти ( программная память была в статическом ОЗУ и загружалась из внешней микросхемы при подаче питания ). Microchip не оценил прыти новичка, и удавил начинание ] .
PSoC (Cypress)
8-разрядный микроконтроллер с конфигурируемым аналоговым блоком: ОУ, АЦП/ЦАП, фильтр, модулятор, коррелятор, пиковый детектор и т.п.
XMOS (XMOS Ltd.)
Событийный многопоточный 32-разрядный процессор, способный обрабатывать события и потоки на скорости до 400 MIPS . Программируется на XC, C/C++, ассемблере. Средства разработки свободные.

15.3.1 Внутренняя периферия

Все микроконтроллеры имеют в своём распоряжении программную и оперативную память и счётчики-таймеры. В опциональный список входят компараторы, АЦП, ЦАПы, I2C, SPI, CAN, UART, USB, Ethernet, поддержка внешних ЖКИ, ШИМ, видео и беспроводных устройств. Ниже приведён список некоторых периферийных блоков, которые встречаются в современных микроконтроллерах в порядке увеличения сложности функций.

15.3.1.A Низкая сложность

  • ADC, DAC, аналоговый компаратор
  • CAN [* Ну, может кому и не сложно ]
  • Отладочные интерфейсы ( JTAG или фирменные 1-, 2-проводные )
  • I2C/SMBus/TWI
  • Прерывания
  • Клавиатурные матрицы
  • Внешние последовательные интерфейсы клавиатуры и мыши
  • LCD ( без контроллера )
  • ШИМ
  • Real-Time Clock
  • Интерфейс SIM/Smart карт
  • Синхронные последовательные порты ( SSP ): SSI, SPI, Microwire
  • Счётчики-таймеры, сторожевой таймер
  • UART ( RS232, RS485 ), плюс линии управления модемом

15.3.1.B Промежуточная сложность

  • AC97 ( Intel Audio стерео PCM: 20 бит 96 ksps )
  • Bluetooth
  • CF карты
  • Ethernet, GPS
  • Внешняя синхронная SRAM
  • I2S ( цифровой звук до 2.8 Mbps )
  • IrDA ( до 4 Mbps )
  • Управление двигателями, PCMCIA 15 ( “PC card” )
  • S/PDIF (AES/EBU) аудио ( Dolby Digital, DTS )
  • SD/MMC-карты. [* Интересно у них: SIM/Smart карты просто, а SD/MMC сложно ]
  • USB 1.1 ( задатчик или периферия до 12 Mbps )
  • ZigBee

15.3.1.C Высокая сложность

  • Камеры и датчики изображений ( CMOS, CCD )
  • Внешняя динамическая память DRAM/SDRAM, Цветные графические дисплеи
  • Блоки управления памятью ( MMU )
  • MPEG4 кодер/декодер
  • Операционные системы ( Linux, Windows CE, Palm )
  • Шины PCI, PCIe
  • Накопители: ATA, IDE, SATA USB 2.0 high speed ( 480 Mbps )
  • Video ( NTSC, PAL, VGA, DVI, DV )
  • WiFi (802.11)

Можно утверждать, что с высокой вероятностью список будет увеличиваться, хотя какие-то позиции исчезнут.

Разберём ещё четыре примера, которые позволят понять типичные пути использования микроконтроллеров при разработке электроники.

  1. Управление сетевым питанием. Микроконтроллер управляет питанием, получая команды по последовательному каналу связи.
  2. Синтезатор частоты. Контроллер обеспечивает связь между пользователем и микросхемой синтезатора частоты, которая управляется исключительно в командном режиме через последовательный канал.
  3. Термостат.
  4. Стабилизированная 2-колёсная платформа - подражание Segway ( pseudo-Segway™ - “Psegué” ).

13 Оставаться в курсе последних тенденций, можно просматривая сетевые журналы Circuit Cellar, EDN, Electronic Products, предложения DigiKey, Mouser или запуская поиск по фразам «<µC-name> tutorial» или «getting started with µC-name>». <-

14 RISC - компьютер с сокращённым набором команд, как противоположность CISC - компьютеру со сложным набором команд. <-

15 Её иногда расшифровывают как «Personal Computer Manufacturers Can’t Invent Acronyms» - "Производители персональных компьютеров не могут изобретать сокращения". <-

Previous part:

Next part: