лучший микроконтроллер на сегодняшний день
Выбираем микроконтроллер вместе
Прочитав эту статью я заметил большой интерес к выбору микроконтроллера у читателей и решил взглянуть на эту проблему с другой стороны.
Могу предположить, что всех интересует выбор их первого, либо первого 32-х битного МК.
Тем, кто знает, что на фотографии нет ни одного микроконтроллера — прошу в комментарии, дополнить мой рассказ и тем самым поделиться своим опытом с начинающими. Остальным, непременно под кат!
На мой взгляд чем проще будет каждый этап обучения — тем проще будет дойти до самостоятельного плаванья. Поэтому я считаю, что на начальном этапе следует брать все готовое. Ничего не придумывать самому. Представьте:
вы выбрали контроллер,
проглядели даташит,
развели под него плату,
или нашли ее на просторах интернета,
купили все компоненты(или аналоги если советуемых не было),
запаяли все,
написали первый «hello world»,
собрали программатор, прошили контроллер
И… и ничего не происходит! Что-то не работает, и вы не можете понять что: то ли в пайке ошибка, то ли что-то с программой, то ли в интернете кривая схема, то-ли проблемы с софтом.
Новичка такая ситуация ставит в тупик, знаю это по себе.
Чтобы такого не случилось проще всего сделать первые шаги под чьим-то руководством.
Преимущество простого старта отлично показывает платформа Arduino. Посудите сами: возможности контроллеров совсем не велики, цены на платы огромны, зато огромная поддержка сообщества и все уже готова, любые платы расширения, кучи примеров.
За счет этого и живет платформа!
Давайте посмотрим какой у нас вообще есть выбор! На рынке огромное количество производителей и архитектур. Но выбор на самом деле совсем не велик:
я бы сразу отсек все 8-ми и 16-ти битные архитектуры, кроме PIC и AVR, да иногда производители предлагают отладочные платы и контроллеры по очень заманчивой цене
но я не советую их брать потому, что это малораспространенные архитектуры и на них меньше примеров + пересаживаться на другие контроллеры будет сложнее.
По той же самой причине отсек все 32-х разрядные архитектуры кроме ARM + с ними еще начинаются проблемы с примерами, и они постепенно вымирают.
Арм микроконтроллеры делятся на ARM7, ARM9, Cortex M0, 3, 4.
Седьмые и девятые постепенно замещаюся кортексами и вскоре их тоже не будет.
Итого имеем:
AVR
PIC
ARM Cortex
Про пики сказать много не могу, но по-моему AVR их вытесняет из-за распространенности Arduino.
Но я все-же советовал Cortex, их возможности намного шире, к тому же есть выбор между производителями, а это на мой взгляд большой плюс. Да и существует масса упрощающих жизнь библиотек и даже генераторов кода, которые новичкам позволят не сильно вчитываясь в юзер мануал написать первую программу.
Итак, какие производители представлены у нас?
NXP, ST, Freescale, TI, Luminary Micro, Atmel и много других но поменьше распространенных.
Как выбрать из такого большого количества производителей?
надо выбирать не контроллер а отладочную плату, библиотеки, среду разработки и сообщество.
Сам щупал только NXP, ST и Freescale.
Первые 2 производителя наводнили Москву и другие города России дешевыми/бесплатными отладками — это очень хорошо в том смысле, что всегда есть у кого спросить, есть к кому обратиться.
Также не нужны никакие программаторы — все есть на борту!
Для NXP есть альтернатива от Olimex www.chipdip.ru/product/lpc-p1343.aspx
Есть и минусы: когда захочется расширить их возможности придется искать новую.
Больше всего мне понравилась отлатдка от Freescale, с которой столкнулся на работе.
На мой взгляд это лучший вариант для новичка, но у нее есть один огромный минус:
пока довольно сложно найти в продаже и регионам придется заказывать, но оно того стоит:
Первое и самое важно преимущество: стандартные платы расширения (сначала покупаете стандартный набор, потом докупаете вайфай, сенсоры и тп)
Еще большущий плюс это среда разработки: благодаря Processor Expert можно генерировать код, и море примеров с объяснениями.
Итак подведем итоги:
1 купить Arduino Uno c AVR за 1000р на плате практически ничего нет, зато в продаже множество плат расширения и огромное сообщество
2 купить STM32L-DISCOVERY c M3 за 16.22дол c сенсорными кнопками, USB и маленьким LСD-дисплеем и дебагером на борту
3 купить за 1000р LPCEXPRESSO c M3 с просто выведеными контактами и дебагером на борту
4 купить KWIKSTICK с M4 за 30дол+ доставку с большим сегментным LCD, USB, входом под наушники, динамиком, сенсорными кнопками, литиевой батарейкой, микрофоном, ИК портом, слотом под SD-карту + возможность расширения функционала без пайки и больших вложений. Большой набор библиотек, примеров и хорошая IDE.
В итоге я считаю, что надо покупать STM32L-DISCOVERY и начинать с нее,
либо если не лень заморочиться с заказом платы и чуть-чуть побольше заплатить брать KWIKSTICK — с ней старт будет полегче, да и хватит ее на дольше, но для общения с коллегами нужен английский.
Прошу всех, знакомых с МК написать свой выбор отладочных средств для новичка, я с удовольствием дополню статьюю
UPD: stm32l-discovery по таким ценам можно купить в Компэле
Kwikstick на сайте freescale
Какой микроконтроллер выбрать начинающему? Arduino или более современный?
Какой микроконтроллер лучше? Опубликованная вчера в блоге на Habr статья «Быстрый старт с ARM Mbed: разработка на современных микроконтроллерах для начинающих» вызвала бурные обсуждения, т.к. она призывает «похоронить» популярную Arduino даже в любительских проектах.
Олег Артамонов и ранее приводил критику использования Arduino в старших классах школы, но на этот раз подробнее описал недостатки платформы, а также продемонстрировал, что работать с ARM Mbed просто — вопреки популярному мнению нет необходимости «долгими бессонными ночами читать бесконечные даташиты на регистры процессора и учить ассемблер».
Развитие платформы Arduino за последние 10 лет автор сравнил с изменениями в некоторых моделях. АвтоВАЗа. AVR, как и вообще 8-битные контроллеры, уже не выдерживают конкуренции с 32-битными Cortex-M по соотношению цена/характеристики. А сложность разработки существенно снизилась с появлением микроконтроллерных операционных систем. Благодаря ОС программирование микроконтроллеров становится ближе к написанию софта под большие ПК, и создание многозадачности средствами цикла loop() при наличии современных средств разработки, становится абсурдно. Микроконтроллерные операционные системы дают:
Статью прокомментировал разработчик микропроцессоров MIPS Юрий Панчул:
Главная проблема ардуины и ее software (UPD: если вы вздумаете использовать ее профессионально, как люди, с которыми ругается Олег) — это отсутствие многозадачности, из-за чего системы сложнее чем мигание лампочкой либо тормозят, либо процессор все время ожидает и обрабатывает ввод-вывод вместо решения полезных задач, либо имеет место куча спагетти-кода в комбинации с примитивными ардуинскими обработчиками прерываний. Именно это имхо стоило продемонстрировать Олегу с наглядными примерами кода. Ругаться с ардуинщиками по поводу порога входа в их нежно любимую платформу можно, но там речь идет о вкусах и небольшой неэффективности из-за ардуиногого api, а вот отсутствие в ардуине tasks/semaphores и других RTOS-ных примитивов, которые позволяют писать эффективные надежно работающие программы с компактным легко читаемым кодом — это принципиально, и на этом ардуинщиков вполне реально урыть (если они готовы идти дальше мигания лампочкой). Например привести вывод на графический экран двумя процессами с семафором, как мы в MIPS и Microchip сделали три года назад в курсе Connected MCU по программированию PIC32MZ и FreeRTOS
Позже Юрий Панчул добавил в свой пост информацию о существовании RTOS для Arduino: » … пусть живет. Все написанное отменяется.». Прогресс не стоит на месте и мир микроконтроллерных плат для любителей больше не ограничивается Arduino и ESP. А что думаете вы?
Если вы заинтересованы подробнее познакомится с программированием современных микроконтроллеров, рекомендуем ознакомиться с курсом лекций (видео).
Какой микроконтроллер выбрать
Если ты хочешь выбрать микроконтроллер, тогда эта статья для тебя. Сегодня мы попробуем разобраться в современном рынке микроконтроллеров. Замечу, что говорить мы будем только о бюджетных и широко специализированных модельных линейках, то есть о тех, которые используют электронщики.
Выбор микроконтроллера
Открывает наш парад компания Microchip Technology с серией PIC. Эти МК отличаются между собой разрядностью (8/16/32), набором периферии и корпусом чипа. Восьмибитные варианты же делятся на четыре семейства: baseline, mid-range, enhanced mid-range и PIC18. Более подробная информация приведена в таблице.
Также есть 16-битные «пики» — PIC24F и DsPIC30/33F. Ну и 32-битные — PIC32MX. Эти непонятные сочетания букв и цифр — часть идентификатора чипа. То же, что и марки у машин. Например, широко распространенный камень PIC16F628A расшифровывается так: семейство PIC16F6 (Mid-range), а остальная часть имени — указатель на конкретный камень. У рассмотренных далее МК в имени может содержаться еще больше информации.
Цена и содержимое
Эти микроконтроллеры имеют среднюю стоимость. Например, камень PIC6F628 в Chipdip стоит около 150 рублей, а PIC18F2550 — 620 рублей.
Более дешевые экземпляры имеют в своем составе минимум периферии. У упомянутого ранее PIC6F628 следующие характеристики: встроенный тактовый генератор для работы с частотой 4 или 8 МГц; 18 пинов, из них 16 — ввод/вывод, а 2 — питание; для работы на более высоких частотах можно подключить кварцевый резонатор; Flash-память объемом 2048 слов; 4 аналоговых входа; два 8-битных таймера и один 16-битный; 224 байта ОЗУ (самому смешно); 128 байт EEPROM (это программно перезаписываемая энергонезависимая память, вроде жесткого диска); интерфейс UART.
Программирование и использование PIC
Программируют для микроконтроллеров, как правило, на ассемблере и на Си. Есть множество сред разработки: MPASM и MPLAB, MicroC, JALedit (язык JAL, сам про него впервые слышу). Скачать MPLAB
Как правило, на таких МК собирают простенькие устройства вроде мигалки или таймера. Эти контроллеры долго имели монополию на постсоветском пространстве, и в результате в интернете есть огромное множество русскоязычных сервисов и статей, посвященных этим моделям МК. При сборке устройства часто можно даже не писать прошивку, ведь она легко находится в интернете, даже в нескольких вариантах.
Вторым плюсом можно указать встроенные независимые (от тактового генератора) счетчики. Благодаря этому факту семейство зарекомендовало себя в качестве «мозгов» для частотомеров. Пара таких контроллеров лежит у меня в мастерской на черный день. Из минусов можно выделить только высокую стоимость оригинальных программаторов, которые зовутся PICkit.
PICKIT3
В интернете есть множество статей по сборке достойных аналогов таких программаторов. Но вся соль в том, что для сборки программатора тебе нужно что? Правильно, программатор. На этот случай был разработан программатор Громова. Для его сборки почти ничего не нужно, а работает он от COM-порта компьютера. На момент его разработки популярность этой серии МК была высока, да и COM-порты были у всех ПК. Сейчас все это уже редкость, так что придется преодолеть порог вхождения либо раскошелиться.
Микроконтроллеры AVR производит компания Atmel. Если не знал, это те самые контроллеры, из которых собирают Arduino. Некогда Atmel была независимой компанией, но позже ее купила упомянутая ранее Microchip, которая продолжает выпускать эти МК. Они делятся на три семейства: tinyAVR (ATtinyxxx), megaAVR (ATmegaxxx), XMEGA AVR (ATxmegaxxx).
TinyAVR имеет следующие характеристики:
Как и в случае PIC, у моделей AVR в названии содержится ценная информация. Например: ATMega328PU — семейство megaAVR, 32 Кбайта Flash, 8-битный, P — говорит о модификации (примерно как у пистолета Макарова модернизированного — ПММ).
Расшифровка названия чипа
Цена и начинка
Эти микроконтроллеры имеют, как и PIC, среднюю стоимость. Например, упомянутый ранее камень ATmega328P в Chipdip стоит 160 рублей, а ATxmega128A1 — 590 рублей.
TinyAVR дешевле и проще своих старших братьев. Немного характеристик ATmega328P: предельная частота работы 20 МГц (слышал, правда, что под охлаждением и посильнее разгоняли); 23 пина ввода-вывода; Flash-память на 32 Кбайта; 8 аналоговых входов; два 8-битных таймера и один 16-битный; 6 ШИМ-каналов; 2 Кбайта RAM; 1 Кбайт EEPROM; интерфейсы UART, SPI, I2C.
Программирование и использование AVR
Благодаря распространению плат прототипирования Arduino, как у нас, так и за рубежом, эти МК имеют низкий порог вхождения. Программируются на ассемблере, Си, C++; можно воспользоваться графическими генераторами кода типа Scratch (см. Scratchduino). Для работы есть Atmel Studio, IAR AVR, WinAVR. Ну и Arduino IDE, куда уж без нее. Лично я использую связку из Geany и avrdude. Для прошивки есть большое разнообразие программаторов: как дешевые, так и подороже. Я для этих целей прикупил недорогой экземпляр USBasp где-то за 1,5 доллара (на Aliexpress есть масса вариантов). А можно в качестве программатора использовать и Arduino UNO.
Информации об этих контроллерах в интернете много: чего только стоит канал AlexGyver! И благодаря Arduino существует масса обучающих наборов на любой вкус. В общем, низкий порог вхождения — весомый плюс этих контроллеров.
Кстати, если заказываешь из Китая, то взять плату с чипом будет дешевле, чем чип отдельно.
О компании ARM и ее продукции ты наверняка слышал. Однако производит эта компания не сами микроконтроллеры, а лишь архитектуру. Лицензию на нее покупают конечные производители и используют так, как им захочется. Кто только их не выпускал! Но как микроконтроллеры наибольшее распространение получили чипы компании STMicroelectronics.
Логотип STMicroelectronics
Они делятся на два семейства: STM32 и STM8. Как понятно из названий, такие чипы бывают 8- и 32-битные. А каждое семейство делится на серии, которых достаточно много.
Что можно о них сказать? Это функциональный аналог AVR, только дешевле. Здесь есть три серии: STM8L c ультранизким энергопотреблением, STM8S для индустриальной аппаратуры и STM8A, именуемые «высоконадежными». Периферия у всех такая же, как у AVR, но есть встроенный тактовый генератор. Из плюсов могу выделить только низкое энергопотребление и маленькую цену. Замечу, у STM8 архитектура не ARM, а собственная. Она очень схожа с ARM и использует идентичный STM32 интерфейс прошивки. Компилятор для них используется тоже один, и при его работе ты просто указываешь, под какую архитектуру собирать код.
STM32
Проще говоря, это старший брат STM8. Его характеристики куда выше и колеблются в больших пределах в зависимости от серии. Программируются практически на чем угодно, даже JavaScript, хотя я бы не рекомендовал.
Прошивка и программирование
Прошиваются STM32 с помощью разработанного компанией ST интерфейса Single Wire Interface Module (SWIM). Еще у МК этой серии есть интерфейс отладки Serial Wire Debugging (SWD). Им я не пользовался, но в большинстве гайдов по STM есть описание его настройки.
А еще на STM можно записывать прошивки по USB. Дело в том, что у многих контроллеров этой серии есть аппаратная поддержка USB. STM благодаря этому может эмулировать разные устройства — например, флешку. Если залить специальную прошивку, можно будет обновлять встроенную программу просто по USB.
Для STM32 есть самые разные программаторы — от весьма крутых до простеньких USB-свистков. Я, например, взял ST-LINK, на «Алиэкспрессе» он стоил около 1,6 долларов. Его достоинство в том, что он может прошить любой контроллер STM.
Программатор ST-LINK
Стоит также упомянуть платы STM Nucleo. Вот одна из них.
Плата STM32 Nucleo
Это что-то вроде Arduino из мира STM. Стоит дороговато, как и оригинальные Arduino, но вещь для новичка отличная. Если деньги есть, стоит взять. Здесь же стоит упомянуть «Амперку» с их «Искрой» и набором для начинающих. Тоже вполне достойный выбор для первого раза.
Плата Iskra JS
Для программирования можно воспользоваться средами Embedded Workbench, uVision и TrueStudio. Благодаря работе умельцев для этих же целей можно использовать и родной для многих Arduino IDE. Есть также онлайновый IDE — mbed studio.
Партия из пяти плат с обвязкой и STM8 будет стоить около 4,5 долларов. Плата BluePill с STM32F103 сейчас стоит 1,6 доллара. Плата NUCLEO-F072RB — 16,4 доллара. Ссылок давать не буду — на «Алиэкспрессе» все это легко ищется по запросу «stm32».
И, наконец, пара слов про ESP. С этими МК я не работал и знаю о них немного. Это 32-битные камни с модулем Wi-Fi на борту. Они используют архитектуру xtensa. На них собирают умные дома и прочие интересные штуки (смотри врезку ниже). Программировать можно опять же в Arduino IDE. Знаменитая ESP8266, неоднократно упомянутая на страницах нашего сайта, как раз и относится к этому семейству. К нему же относится ESP32, старший брат ESP8266.
Выводы
Кроме упомянутых выше производителей есть много других: Intel, Renesas Electronics, Texas Instruments и прочие. Но в сообществе электронщиков-любителей они не прижились, хоть и активно используются в промышленности.
Новичкам я рекомендую AVR в виде Arduino: по нему много информации на русском, а порог вхождения невелик. Но засиживаться на них не стоит, а то так и будешь до конца дней собирать и пересобирать этот конструктор.
После Arduino стоит перейти на STM. Для простеньких проектов бери восьмибитные чипы, для более сложных — 32-битные, и будет тебе счастье. И помни, что микроконтроллер — это уже не процессор, но еще не компьютер.
Статьи на сайте о ESP32
Статьи на сайте об STM32 и проектах на его основе
Сравниваем микроконтроллеры до 50 рублей: ARM жаждет крови
Года так 2 назад на одном из форумов по радиоэлектронике я попросил посоветовать, какой микроконтроллер изучать — и больше всего голосов было в поддержку AVR — популярных, 8-и битных МК, под которые легко писать, программатор можно сделать одной рукой (из проводов и резисторов)… Будущее было ясным и безоблачным, пока в 2009-м году не пошли новости про новые микроконтроллеры на ядре ARM Cortex-M0, которые должны были стоить меньше 1$ (во что в принципе никто не верил) и перекрыть кислород 8-и битным микроконтроллерам.
Сейчас на дворе середина 2011 года и пришла пора посмотреть, что и по какой цене у нас можно купить, и какая получается расстановка сил (цены — из terraelectronica.ru).
МК | Ядро | Цена (рубли в розницу) | Flash-память (кб) | ОЗУ (кб) | Производительность (MIPS) | Потребление энергии (мА/Mhz) |
LPC1111FHN33 | ARM 32-bit Cortex M0 | 56 | 8 | 2 | 0.9*50 | 0.15 |
STM32F100C4T6B | ARM 32-bit Cortex-M3 | 28.15 | 16 | 4 | 1.25*24 | 0.23 |
AtTiny13A | Atmel 8bit | 25.5 | 1 | 0.064 | 20 | 0.3 (1mhz) 0.55 (20 mhz) |
atmega48 | Atmel 8bit | 47.06 | 4 | 0.5 | 20 | 0.3 (1mhz) 0.55 (20 mhz) |
MSP430F2101IPW | TI 16bit MSP430 | 52.12 | 1 | 0.12 | 16 | 0.25 (1mhz) 0.4 (16mhz) |
PIC16F676 | PIC16 8bit | 36.8 | 2 | 0.22 | 5 | 0.1*4 |
PIC12F509 | PIC12 8bit | 26.3 | 2 | 0.041 | 5 | 0.087*4 |
PIC10F200T | PIC10 8bit | 14 | 0.25 | 0.016 | 1 | 0.043*4 |
Пояснения: Потребление энергии — указаны в оптимальных условиях в соответствии с datasheet (минимальное напряжение для данной частоты + отключена лишняя периферия). На «высоких» частотах у некоторых МК потребление на MHz выше т.к. требуется более высокое напряжение.
Также нужно помнить, что MIPS-ы у ARM-ов существенно более мясистые, чем у 8/16-и битных МК. Умножение 32×32 за 1 такт это вам не шутки…
Выводы
Определенно, Atmel недокладывает мяса тиграм. В настоящий момент в области высокой производительности/функционала полностью проигрывают Cortex M3 от STM32 (и по цене и по функционалу), а для мелких приложений — мелким PIC-ам, которые вдвое дешевле. Видимо мой собранный потом и кровью программатор для Atmel скоро останется не у дел… Впрочем, есть еще небольшая ниша для приложений где требуется работа от 5V…
У PIC-а только у PIC10 своя ниша остается, остальные проигрывают младшим армам STM32.
Cortex M0 от NXP должен был быть самым дешевым (с ценой до 0.5$ крупными партиями), но в реальности нам приходится платить 2$.
А вот Cortex M3 от STM32 просто рвет все в клочья: при цене крупными партиями 0.85$, его сейчас можно купить по одному за 0.99$ — определенно так будет не всегда, и это вероятно маркетинговая акция, но мне она нравится (я лично купил 20 впрок ). Также нужно помнить, какие плюшки несет нам Cortex M3 по сравнению с M0: умножение 32×32->64 (у M0 только 32×32->32), аппаратный делитель, операции вида MADD — все это и дает на 38% больше скорости на МГц. По энергопотреблению на MIPS получается примерно то-же. Даже если цена вырастет до 1.5$ — все равно будет вкусно, и дешевле большинства AtMega. Кстати, STM32 скоро Cortex M0 также запускает, посмотрим что из этого получится.
А вот по энергопотреблению 8-и и 16-и битные контроллеры ощутимо проигрывают (как это ни удивительно), а если учесть что ARM может больше спать при выполнении той же задачи, отрыв будет еще сильнее. PIC конечно в цифрах выглядит хорошо, но цифру в их случае надо умножать на 4 (т.к. требуется по 4 такта на выполнение команд).
Почему цена 8-и и 32-х бит так мало отличается?
Все дело в том, что само 32-х битное ядро не так уж и много места занимает, порядка десятка тысяч транзисторов. А например 256Кб Flash-памяти — это 2 млн транзисторов, что не сравнимо больше. Т.е. основное место все равно занимает память и ввод/вывод, так почему бы не потратить +2% площади кристалла и получить 32-х битное ядро нормальной скорости. Также надо учитывать, что уменьшение площади кристалла даже в 2 раза не уменьшает стоимость вдвое — цена разрезания пластины, тестирования, корпусирования остается той-же — и выигрывает тот, кто имеет большие объемы производства.
Так что нам остается смириться, и использовать ARM даже там, где хватило бы и 4-х битного процессора. Небольшая ниша остается у 6-и ногих крошек PIC10 (и AtTiny10 при снижении цены), и все.
Как жить дальше?
Программатор для ARM-ов собрать несколько сложнее, чем для AVR, но наши китайские товарищи не дремлют, и там можно заказать занедорого отличный программатор JLINK (подходит практически для всех армов всех производителей) — 24$ с доставкой — мне как раз сейчас едет.
Ну и любители халявы успели поиметь по отладочной платке от известного конкурса — конкурс еще идет, но неизвестно шлют ли еще — мне пока так и не прислали…