Техника не стоит на месте, микроконтроллеры эволюционируют и дешевеют, если в начале 2000-х самыми распространенными и доступными были два семейства – ARM и PIC, то в 2010-х на рынок вышел их серьезный конкурент на ядре Cortex-M – микроконтроллеры ARM.
Вернее будет сказать - архитектура ARM - это, в основном, 32-хбитные микроконтроллеры, которые стоят дешевле, а их функционал и производительность выше, чем у оппонентов, поэтому они стремительно завоевывают рынок. Почему так происходит? Давайте поговорим.
STM32 – мощные и доступные
Для примера рассмотрим недорогой микроконтроллер – STM32F100C4T6RBT, его цена в 2017 году немногим более 100 рублей. В этом ценовом сегменте ему нет равных.
Посмотрите его технические характеристики. Для наглядности его достоинств в скобках будут приведены характеристики более дорогого AVR-микроконтроллера (8 бит) ATmega48-20PU, он стоит порядка 200 рублей.
- Flash-память – 16 кб (4 кб у AVR).
- Оперативная память (RAM) – 4096 байт (512 б у AVR).
- Работает на частоте 24 МГц и выполняет 30 миллионов итераций в секунду (1.25 DMIPS) (AVR работает на 20 МГц).
- 16 каналов 12 битного АЦП и 12 битный ЦАП (у AVR – АЦП 8 каналов и 10 бит, а ЦАП – отсутствует).
- 5 таймеров и 7 каналов прямого доступа к памяти (3 и 0 соответственно).
- Поддержка всевозможных шин и интерфейсов – USART, CAN, I2C, USB, SDIO (поддержка SD-карт), SPI. Большинство из них есть либо в меньшем количестве, либо отсутствуют у AVR.
Конечно, сравнивать 32 и 8 бит не совсем корректно, так как разница в 4-хкратном размере, и, чтобы сделать операцию с 32-битным числом AVR микроконтроллеру нужно произвести более 4-х операций… Вывод простой – за меньшие деньги вы получаете большие возможности.
Программирование ARM микроконтроллера
Если вести речь о семействе STM32, то есть два варианта прошивки для начинающих – это либо USART, либо USB.
Во-первых, эти микроконтроллеры очень сложно «убить» неверной прошивкой или прерыванием её, ведь загрузчик контроллера находится в system memory, изменить которые вы просто не сможете.
Это уже весомое преимущество перед конкурентами, в которых, при любом неправильном действии, нужен специальный программатор. Он с помощью логических уровней высокого напряжения может разблокировать «мёртвый» чип.
В случае прошивки через USART нужен преобразователь USB-UART, например, на базе микросхемы FT232RL.
Обратите внимание на схему: программатор подключен к USART1 на выводе Boot0 – логическая единица, а на boot1 – ноль. Если вы используете плату STM32F103C8, перемычки должны быть выставлены как на картинке ниже.
После этого нужно произвести сброс МК нажатием на «Reset» или подключить и отключить питание.
Чтобы залить прошивку, нужно скачать программу для прошивки микроконтроллера по последовательному порту. Она носит имя «Flash Loader Demonstrator». В бесплатном доступе находится на сайте St-link.com, кстати, одноименном с названием фирмы производителя микроконтроллеров этого семейства.
Вот теперь всё готово к прошивке и дальнейшей работе.
Выше было сказано о наличии «железного» USB порта в чипе. Его присутствие здесь не просто так, благодаря тому, что в этом семействе микроконтроллеров бутлоадер является неотъемлемой частью программы и стоит в начале памяти. Если загрузить вышеописанным способом (через usb-uart) бутлоадер STM32duino – в дальнейшем вы сможете шить его напрямую, через USB порт, подобно Arduino.
Кстати, Arduino выполнена на тех МК семействах AVR, в которых нет встроенного USB, и разработчикам пришлось использовать для этого дополнительные преобразователи (на тех же МК AVR с USB или на FT232RL или CH340 на младших платах Arduino). В случае с STM вы получаете полноценный аппаратно- и программно-поддерживаемый порт USB
Выводы
К сожалению, порог вхождения в работу с STM32 высокий, что не позволяет ему полностью заменить морально устаревшие микроконтроллеры. В то же время проект STM32duino позволил многим любителям-энтузиастам ускорить работу своих Arduino проектов, к тому же улучшив качество их работы.
Нельзя не упомянуть о том, что чипы STM32 взаимозаменяемы и совместимы в пределах одного корпуса. Поэтому, если вы ошиблись с микроконтроллерами, и вам не хватило его ресурсов – вы легко можете запаять более мощный, не изменяя при этом своей схемы и платы!