Pull to refresh

Микроконтроллеры семейств AVR, MSP430, STM32 и мои субъективные впечатления

Reading time 5 min
Views 72K
Здравствуйте, обитатели Хабра. В этой статье хочу поделится своими впечатлениями об опыте программирования микроконтроллеров семейств AVR, MSP430, STM32.

Введение

В бытность мою студентом занимался я прикладным программированием на Delphi и горя не знал, но и счастья не ведал. Пока как-то раз не посетил меня на четвертом курсе предмет «Микропроцессорные контроллеры». Ну и пошло-поехало.

Семейство микроконтроллеров AVR

Предмет «Микропроцессорные контроллеры» как раз и был посвящен программированию микроконтроллеров на примере семейства AVR Atmega фирмы Atmel. Лабораторные работы по данному предмету заключались в программировании отладочных плат с Atmega16 на ассемблере данного семейства в программной среде AVR Studio 4.18.

Программа отлаживалась при помощи симулятора и зашивалась в микроконтроллер посредством встроенного в отладочную плату LPT-программатора на логике через программу ponyprog2000. На этих лабораторных работах я и ознакомился с волшебным миром микроконтроллеров, что включало в себя «помигать светодиодом», обработать нажатие на кнопку, настроить аппаратный таймер на работу и обрабатывать генерируемые им прерывания, настроить UART и передать данные по нему и т.д.

Прекрасный новый мир открылся мне. Но потом все это немного заглохло до следующего курса, на котором программирование тех же самых плат происходило, но уже не на ассемблере, а на языке Pascal в среде E-LAB. Об этой среде мало кто знает, а зря. Ведь задолго до всяких там arduino, данная среда включала в себя много библиотек для внешних устройств простых в использовании. Не верите?

Посмотрите сами тут. Тут вам для E-LAB и JTAG-отладчики есть.
Но во времена написания лабораторных работ JTAG-отладка доступна не была. Поэтому мы пользовались встроенным в E-LAB симулятором. Как и тогда, библиотеки E-LAB позволяют создавать проекты с ОСРВ, работающей по принципу Round-robin.
Последние версии E-LAB поддерживают и кооперативную многозадачность.
В принципе с этих двух циклов лабораторных работ я и начал свое знакомство с микроконтроллерами и, в частности, семейством AVR. Что можно сказать теперь?
AVR — самое популярное семейство микроконтроллеров в мире, я думаю.
Arduino-мания только укрепила это. Эти простые в освоении микроконтроллеры и сейчас остаются лучшим решением для первого знакомства. Позволяют получить опыт создания простых приложений с использование интерфейсов SPI, I2C, UART, позволяют понять работу портов ввода/вывода, подсистемы прерываний. По сути, на данном семействе можно научится основам и делать малые и средние проекты. В последних версиях AVR Studio можно делать проекты на С.

А если взять в руки паяльник, то можно себя обеспечить и программатором, и JTAG-отладчиком.
Есть желание начать? Тут тоже много всего.
Фирменные отладочные платы и программаторы от Atmel крайне дороги.
Главным недостатком AVR является слабое вычислительное ядро без вспомогательных математических блоков, причем восьмиразрядность усугубляет ситуацию. Т.е. на сложные математические вычисления может уйти много времени. Микроконтроллер может не успевать обрабатывать собранную или принятую информацию. Последний проект для Atmega16 я делал на С в среде разработки IAR Embedded Workbench for Atmel AVR.

Семейство микроконтроллеров MSP430

После семейства AVR микроконтроллерый мир уже открыл мне часть своих тайн.
А тут подоспел и новый предмет, посвященный также программированию микроконтроллеров, но это было уже семейство MSP430 фирмы Texas Instruments, а именно микроконтроллер msp430f169 на отладочной плате с ziff-панелью и минимальной обвязкой.
Разработка программы для него и отладка проходили в среде IAR Embedded Workbench for MSP430 при помощи JTAG-отладчика MSP-FET430UIF.
В первую очередь в этом семействе понравились примеры программ работы с внутренней периферией от производителя. Ну и с него берет моя подсадка на JTAG и IAR. Однажды попробовав JTAG-отладку не захочется возвращаться к разработке с просто программированием. Ведь под JTAG-отладкой можно по шагам видеть, что происходит в регистрах в памяти и где сейчас идет выполнение кода, ставить точки останова. С этого времени я и на IAR подсел. Ведь это кроссплатформенный компилятор выпущенный под множество микроконтроллерных семейств. Стоит один раз запомнить интерфейс и не надо каждый раз, при переходе на новое микроконтроллерное семейство, переучиваться. Это ли не чудо? Но затягивает.

Минус только в стоимости полной версии. Вообщем на этом семействе я и начал свою работу, как программист микроконтроллеров. И связка язык C (по сути кроссплатформенный ассемблер), кроссплатформенная среда разработки IAR и JTAG-отладка всегда были вместе со мной.

Семейство MSP430 в отличие от AVR шестнадцатиразрядное и более производительное за счет применения встроенного аппаратного умножителя.
Возможность использования режимов пониженного энергопотребления обеспечивает увеличение срока службы элементов питания при применении в мобильных портативных устройствах. А микроконтроллеры MSP430F5419 и MSP430F5438, с которыми я работал, на частоте 25 МГц в плотную подтягиваются к ARM. Так что они такие мощные середнячки. Если иметь фирменный JTAG-отладчик, IAR for MSP-430, нормальную отладочную плату, то работать с ними одно удовольствие.

Семейство микроконтроллеров STM32

Последним я познакомился с семейством STM32 фирмы STMicroelectronics.
Архитектура ARM сама по себе является дверью ко многим семействам.
Т.к. для множества этих микроконтроллеров разных фирм потребуется только один JTAG-отлдачик J-Link или его клон. А также если есть в наличии среда разработки IAR Embedded Workbench for ARM, то двери открыты.
Плюсом в сторону семейства STM32 является наличие библиотеки встроенной периферии, которая позволяет быстро писать свои пользовательские библиотеки с минимальными трудозатратами, а также 32-разрядность ядра в отличии от AVR и MSP430. Линейка микроконтроллеров STM32 включает много вариантов их внутреннего наполнения встроенной периферией от чего варьируется и стоимость. Например, микроконтроллер STM32L152VBT6 на ядре Cortex-M3, как микроконтроллеры семейства MSP430, нацелен на низкое энергопотребление и работает на 32 МГц.

Другой микроконтроллер STM32F107VCT6 также на ядре Cortex-M3 подходит для большинства задач, возлагаемый на данный класс устройств, и имеет частоту 72 МГц. Тут сразу видно, что для «тяжелой» математики и обработки микроконтроллеры на ядре Cortex-M3 куда больше подходят, чем MSP430 и AVR. Я работал и с «тяжеловесом» данного семейства STM32F407VGT6 на ядре Cortex-M4, частота которого доходит до 168 МГц. «Большой брат» идеально подошел для решения сложных математических задач. Кроме того, он имеет аппаратный FPU для математики с плавающей точкой. Для семейства STM32 разработана линейка плат DISCOVERY, которая позволяет получить плату со встроенным JTAG-отладчиком ST-Link, причем его можно использовать, чтобы программировать платы собственной разработки.

Результат их маркетинговой политики позволяет влиться в разработку микроконтроллеров с минимальными затратами, при этом имея фирменные платы и JTAG-отладчики от производителя.

Заключение

В заключении хочу сказать. Что у всех рассмотренных семейств есть свои плюсы. Со всеми связаны теплые воспоминания.
Tags:
Hubs:
+17
Comments 78
Comments Comments 78

Articles