15.3 Обзор популярных семейств микроконтроллеров
==1059
Для экспонометра взят контроллер известной 8-разрядной серии AVR фирмы Atmel. Своей популярностью она обязана простой архитектуре, большому количеству регистров и плоскому адресному пространству. В линейке имеются модели с самыми разными корпусами, включая DIP, который очень удобен для быстрого создания прототипов. Кроме того, семейство широко поддержано программными инструментами, включающими компилятор Си с открытым кодом, который, правда, не отягощён излишним учётом особенностей контроллеров.
==1060
А что ещё есть? Современную ситуацию можно охарактеризовать нижеприведённым списком и некоторыми комментариями. Это описание следует рассматривать как моментальный снимок текущего положения , потому что микроконтроллеры - одна из самых быстро меняющихся областей электроники 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, компилятор Си, наборы разработки.
==1061
- 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
==1062
- Накопители: ATA, IDE, SATA USB 2.0 high speed ( 480 Mbps )
- Video ( NTSC, PAL, VGA, DVI, DV )
- WiFi (802.11)
Можно утверждать, что с высокой вероятностью список будет увеличиваться, хотя какие-то позиции исчезнут.
Разберём ещё четыре примера, которые позволят понять типичные пути использования микроконтроллеров при разработке электроники.
- Управление сетевым питанием. Микроконтроллер управляет питанием, получая команды по последовательному каналу связи.
- Синтезатор частоты. Контроллер обеспечивает связь между пользователем и микросхемой синтезатора частоты, которая управляется исключительно в командном режиме через последовательный канал.
- Термостат.
- Стабилизированная 2-колёсная платформа - подражание Segway ( pseudo-Segway™ - “Psegué” ).
==1062
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» - "Производители персональных компьютеров не могут изобретать сокращения". <-