- Как выбрать правильный микроконтроллер для вашего приложения
- Выбор производителя
- Критические параметры
- Цифро-аналоговый преобразователь (ЦАП)
- Аналого-цифровой преобразователь (АЦП)
- Тактовая частота
- Универсальная последовательная шина (USB)
- Емкостной датчик прикосновения
- Стоимость и размер корпуса
- Оценка аппаратного обеспечения
- Заключение
- Какой микроконтроллер выбрать начинающему? Arduino или более современный?
Как выбрать правильный микроконтроллер для вашего приложения
Данная статья продолжает серию «Введение в микроконтроллеры» с обсуждением наиболее важных вещей, которые следует учитывать, когда вы пытаетесь найти лучший микроконтроллер для своего следующего проекта.
В предыдущей статье я представил основные характеристики микроконтроллеров, объяснил основные аспекты их внутренней структуры и дал некоторые общие идеи о том, как можно использовать микроконтроллер в различных типах встраиваемых систем.
В следующих статьях я планирую изучить методы и процессы, связанные с внедрением микроконтроллеров и разработкой прошивок. Но прежде чем вы сможете разработать продукт на базе микроконтроллера, вам необходимо знать, какое устройство вы будете использовать. Навыки и методы, используемые при проектировании систем на базе микроконтроллеров, определенно не относятся к одной модели или даже к одному производителю. Но если у вас еще нет обширного опыта в этой области, лучше сосредоточиться на одном устройстве (или одном семействе устройств), а затем после приобретения солидного опыта расширить кругозор относительно микроконтроллеров.
Выбор производителя
Список производителей полупроводниковых устройств, продающих микроконтроллеры, довольно длинный. Тем не менее, я настоятельно вам рекомендую начать с производителя, который уделяет большое внимание своей линейке микроконтроллеров. Это обеспечит вам доступ к множеству полезных ресурсов по разработке – примечания к применению, примеры кода, качественная интегрированная среда разработки (IDE), удобные инструменты программирования, и так далее.
Кроме того, производители, которые имеют более обширную линейку продукции микроконтроллеров, позволяют более легко подбирать компоненты в соответствии с требованиями под каждое приложение, поскольку вы можете выбрать новую модель без резких изменений, вызванных переходом от одного производителя к другому. Этот переход может быть напряженным и трудоемким, когда вам нужно будет изучить новую IDE, новые конфигурации регистров, новые методы программирования, новую структуру документации, и так далее. И я всё еще по возможности избегаю этих неудобств.
Если ваш опыт разработки на микроконтроллерах всё еще довольно ограничен, я рекомендую выбрать одного из следующих производителей: Texas Instruments, STMicroelectronics, Silicon Labs или Microchip. (Atmel также определенно должен быть включен в этот список, но он был приобретен Microchip в 2016 году.)
Критические параметры
Следующим шагом является определение ваших наиболее важных и специфических требований. Многие виды функциональных возможностей обработки и периферийных устройств будут доступны практически в любом современном микроконтроллере. Например, вам не нужно будет искать MCU, который предлагает базовую последовательную связь, тактовые частоты выше 10 МГц, достаточное количество флеш-памяти и оперативной памяти, внутренний генератор, таймеры общего назначения или встроенный модуль отладки (они часто используют интерфейс JTAG).
В следующих подразделах приведены некоторые примеры «менее стандартных» функций, которые помогут вам сузить список микроконтроллеров, которые могут подходить для заданного проекта.
Цифро-аналоговый преобразователь (ЦАП)
У вас не возникнет проблем с поиском микроконтроллера с аналого-цифровым преобразователем, но ЦАП встречается значительно реже. Тем не менее, в определенных приложениях они очень полезны, и встроенный ЦАП, безусловно, гораздо удобнее, чем внешний ЦАП.
Аналого-цифровой преобразователь (АЦП)
Я только что сказал, что АЦП распространены, и это правда, но стоит отметить, что производительность многих микроконтроллерных АЦП находится в диапазоне от низкого до среднего уровня. Если вам нужен АЦП с необычно высоким разрешением или необычно высокой частотой дискретизации, вам придется сделать это приоритетом в процессе выбора. Несколько лет назад я оказался в подобной ситуации, и, если я правильно помню, ничто не могло сравниться с C8051F060 от Silicon Labs (у него есть два встроенных АЦП, которые могут выполнять 16-разрядное преобразование со скоростью один миллион выборок в секунду).
Тактовая частота
Если вам нужен микроконтроллер, который более совместим с интенсивными вычислительными функциями DSP (цифрового сигнального процессора), вам нужно отдать приоритет устройствам, которые поддерживают высокие частоты процессора. У Silicon Labs есть два 8-разрядных семейства, работающих на частоте 100 МГц, а у STMicroelectronics и Microchip есть высокопроизводительные 32-разрядные микроконтроллеры, работающие на частоте 120 МГц.
Универсальная последовательная шина (USB)
Интерфейс USB является доминирующей формой последовательной связи. Я обнаружил, что это очень эффективный способ передачи данных между встраиваемым устройством и компьютером, и в контексте бытовой электроники он незаменим. Если вы ищете компактный, простой метод включения USB соединения в вашу систему, я рекомендую вам сосредоточиться на микроконтроллерах, которые включают в себя USB модуль. Я использовал EFM8 Universal Bee от Silicon Labs, а Microchip предлагает 8-разрядные, 16-разрядные и 32-разрядные USB микроконтроллеры.
Емкостной датчик прикосновения
Емкостные датчики прикосновения являются всё более популярной формой пользовательского интерфейса. Хотя емкостные датчики прикосновения в принципе просты, реальная реализация может быть довольно сложной, и, безусловно, полезно иметь микроконтроллер, специально предназначенный для поддержки интерфейса такого типа. Насколько я знаю, для микроконтроллеров всё еще довольно необычно иметь периферию для емкостных датчиков, поэтому вам нужно будет расставить приоритеты для этой функции во время выбора модели.
Стоимость и размер корпуса
Поместить эти параметры в определенную часть процесса выбора модели трудно, потому что их важность сильно варьируется от одного приложения к другому. В некоторых случаях у вас достаточно места на плате и вы можете полностью игнорировать размер корпуса. А стоимость часто не имеет значения для инженеров, разрабатывающих прототипы или системы, которые никогда не будут производиться в больших количествах.
С другой стороны, существует множество электронных продуктов, которые должны быть очень маленькими, очень недорогими или очень маленькими и очень недорогими. В этих ситуациях вам необходимо постоянно знать цену и/или размер корпуса, поскольку вы постепенно отфильтровываете модели на основе ваших критически важных параметров и предпочитаемых производителей.
Оценка аппаратного обеспечения
Каждый, от любителя до профессионального инженера, может получить выгоду от тщательно разработанной, доступной по деньгам, отладочной платы. Обычно это наиболее безболезненный и надежный способ оценки микроконтроллера и ознакомления с его интерфейсом программирования и функциональными возможностями. Как только вы сузили свой поиск до нескольких многообещающих моделей, прежде чем принять окончательное решение о разработке, проверьте, продаются ли по разумной цене оценочные платы для этих моделей микроконтроллеров.
Заключение
Надеюсь, что данная статья поможет вам ориентироваться в иногда пугающем процессе выбора одного микроконтроллера из числа тысяч, доступных на рынке. После того, как мы выбрали микроконтроллер, пришло время начать чтение технического описания (datasheet, «даташит») и проектирование системы, и мы рассмотрим эти темы в следующих статьях.
Какой микроконтроллер выбрать начинающему? Arduino или более современный?
Какой микроконтроллер лучше? Опубликованная вчера в блоге на Habr статья «Быстрый старт с ARM Mbed: разработка на современных микроконтроллерах для начинающих» вызвала бурные обсуждения, т.к. она призывает «похоронить» популярную Arduino даже в любительских проектах.
Олег Артамонов и ранее приводил критику использования Arduino в старших классах школы, но на этот раз подробнее описал недостатки платформы, а также продемонстрировал, что работать с ARM Mbed просто — вопреки популярному мнению нет необходимости «долгими бессонными ночами читать бесконечные даташиты на регистры процессора и учить ассемблер».
«Традиционным преимуществом платформы Arduino считалоcь снижение порога входа в микроконтроллерную разработку до уровня базовых знаний C/C++ и электроники в масштабе «подключить светодиод в нужной полярности, — пишет Олег Артамонов, — Спросите примерно у любого активного сторонника Arduino — и вам быстро объяснят, что можно, конечно, писать под STM32 или nRF52, но выгоды в том реальной никакой, зато вас ждут бессонные ночи над сотнями страниц даташитов и бесконечные простыни функций с длинными непонятными названиями. Заслуги Arduino в снижении порога вхождения действительно трудно переоценить — эта платформа появилась на свет в середине нулевых годов, а после 2010 завоевала серьезную популярность среди любителей. Особых альтернатив на тот момент ей не было — процессоры на ядрах Cortex-M только появились, по сравнению с AVR они были довольно сложны даже для профессиональных разработчиков, а отладочные платы у большинства вендоров стоили от сотни долларов и выше (и в общем в индустрии ценник за отладку на 5-долларовом контроллере в $500 никого сильно не удивлял)».
Развитие платформы Arduino за последние 10 лет автор сравнил с изменениями в некоторых моделях. АвтоВАЗа. AVR, как и вообще 8-битные контроллеры, уже не выдерживают конкуренции с 32-битными Cortex-M по соотношению цена/характеристики. А сложность разработки существенно снизилась с появлением микроконтроллерных операционных систем. Благодаря ОС программирование микроконтроллеров становится ближе к написанию софта под большие ПК, и создание многозадачности средствами цикла loop() при наличии современных средств разработки, становится абсурдно. Микроконтроллерные операционные системы дают:
- HAL — абстрагирование от железа.
- Многозадачность.
- Таймеры.
- IPC — межпроцессное сообщение.
- Наборы стандартных библиотек и функций — помимо API работы с самим микроконтроллером, ОС может предоставлять вам доступ к стандартным библиотекам, в том числе сторонней разработки.
- Наборы драйверов — многие ОС предоставляют также «из коробки» наборы драйверов для внешних по отношению к контроллеру датчиков и систем.
Статью прокомментировал разработчик микропроцессоров MIPS Юрий Панчул:
Главная проблема ардуины и ее software (UPD: если вы вздумаете использовать ее профессионально, как люди, с которыми ругается Олег) — это отсутствие многозадачности, из-за чего системы сложнее чем мигание лампочкой либо тормозят, либо процессор все время ожидает и обрабатывает ввод-вывод вместо решения полезных задач, либо имеет место куча спагетти-кода в комбинации с примитивными ардуинскими обработчиками прерываний. Именно это имхо стоило продемонстрировать Олегу с наглядными примерами кода. Ругаться с ардуинщиками по поводу порога входа в их нежно любимую платформу можно, но там речь идет о вкусах и небольшой неэффективности из-за ардуиногого api, а вот отсутствие в ардуине tasks/semaphores и других RTOS-ных примитивов, которые позволяют писать эффективные надежно работающие программы с компактным легко читаемым кодом — это принципиально, и на этом ардуинщиков вполне реально урыть (если они готовы идти дальше мигания лампочкой). Например привести вывод на графический экран двумя процессами с семафором, как мы в MIPS и Microchip сделали три года назад в курсе Connected MCU по программированию PIC32MZ и FreeRTOS
Позже Юрий Панчул добавил в свой пост информацию о существовании RTOS для Arduino: » … пусть живет. Все написанное отменяется.». Прогресс не стоит на месте и мир микроконтроллерных плат для любителей больше не ограничивается Arduino и ESP. А что думаете вы?
Если вы заинтересованы подробнее познакомится с программированием современных микроконтроллеров, рекомендуем ознакомиться с курсом лекций (видео).