Кафедра света и электричества

Микроконтроллеры STM8

Содержание:
Введение (эта страница)
Начало работы с ассемблером
Управление AWU

Альтернатива - утки !

На изучение контроллеров STM8 нас подвиг дефицит контроллеров Atmel, внезапно случившийся летом 2010 года. Оказавшись не в состоянии запустить очередной проект на работе, мы решили, что "для себя" тоже полезно иметь какой-то запасной вариант. Исходя из соотношения цена/функциональность, мы обратили внимание на продукцию фирмы ST Microelectronics. Материалов в сети по этим контроллерам не так уж много, поэтому делимся первыми впечатлениями.

Сравнение
- STM8 лучше, чем Atmel ?
- Смотря, чем.
- Чем Atmel.

Сравнивать будем, разумеется, с Atmel-ками, на которых мы уже съели небольшую собачку. В качестве отправной точки воспользуемся рекламной статьей Джафера Меджахеда "Восемь преимуществ STM8". Разберем подробнее заявления автора.

Повышенная надежность. Здесь делается упор на работу в сложных условиях. Электромагнитные помехи, ядерные взрывы, статика. Для домашних применений это несущественно. Помехи от самих контроллеров нам тоже не слишком важны.

Гибкость работы. Рассуждения про OTP-регистры к атмелкам отношения не имеют, но вот единообразие всех контроллеров STM представляется весьма важным фактором. К сожалению, контроллеры Atmel все разные. И перетягивание проекта с, например, ATTiny24 на ATMega8 может быть "делом великого поту". Разные таймеры, разные их режимы, разные биты конфигурации АЦП - все это требует проверки даже при переносе сравнительно простых проектов.

Стабильность параметров. Опять слова про устойчивость работы в условиях, максимально приближенным к концу света. Неактуально в домашних условиях.

Расширенные параметры. В целом речь идет о том, что у STM8 труба повыше и дым погуще. Разумеется, никто не запрещает использовать XMega или AVR32, если нужно.

Соотношение цена/функциональность. Это сложный вопрос. Функциональность у средних моделей (не старших и не младших) ATMega и STM8S примерно одинаковая. Цена тоже. За одним важным исключением, которое называется USB. Для Atmel существует дешевое решение от Objective Development, практически не требующее внешних компонентов. Для STM8 ничего похожего не существует. Сама ST Micro предлагает демонстрационную плату Discovery, работающую через USB. Как они это делают ? Очень просто, через посредство второго контроллера семейства ARM. Учитывая, что USB - единственный общеупотребительный интерфейс современного компьютера, доступный для самостоятельного применения, получаем первый жирный минус для STM8.
Здесь же поставим STM8 плюс за наличие библиотек для работы с сенсорными кнопками.

Производительность. Попросту говоря, STM8 работают на частоте до 24 МГц, что чуть выше, чем у атмелок. Однако, архитектуры процессоров отличаются настолько существенно, что напрямую сравнивать производительность невозможно. В реальной жизни она будет определяться еще и возможностями компилятора.

Доступная среда. Плата Discovery действительно стоит дешево. Дешевле, чем любой программатор для Atmel. Однако, пользуясь нашими указаниями, можно соорудить неплохой программатор для Atmel еще дешевле. Ассемблер, действительно, бесплатный, а вот C - начиная с некоторого объема кода - платный, более того, дорогой. Для Atmel есть действительно бесплатный компилятор GCC, с неограниченным объемом генерируемого кода. И относительно этого компилятора не приходится сомневаться, что он не будет внезапно объявлен платным, неподдерживаемым или доступным только для избранных. Лицензия GPL гарантирует.

Перспективная платформа. Да, мы понимаем, что Тефаль думает о нас денно и нощно, но, как говорится, будем посмотреть. Аргументом за использование STM8 это не является, просто потому, что Atmel тоже думает о том, как бы продать нам свои произведения. Как и Motorola и даже владелец ларька с шаурмой.

На сем аргументы у Джафера Меджахеда заканчиваются. Сведем для простоты результаты в табличку:

 STM8Atmel
Цена стартаХорошоЛучше
ФункциональностьХорошоЛучше
СтоимостьОчень хорошоХорошо
ДоступностьПока неясноС перебоями
8-выводные моделиНетЕсть
СовместимостьХорошоПлохо
Количество книгПриблизительно 0Много
Средства разработкиВ общем, они естьКакие угодно
КоммьюнитиОтсутствуетНеобъятное

Пару комментариев добавим по двум последним строкам таблицы. Для Atmel имеются самые разнообразные средства программирования. От загадочного Algorithm Builder до стандартного GCC, от Basic до Pascal. Есть Forth для любителей странного. В общем, если поискать, есть выбор. Для STM8 есть выбор между C, C и C. Не слишком впечатляющий, если честно.
Тем не менее, большинство разработчиков встроенных систем используют C и слышать не хотят про другие языки. Так что ситуация не настолько трагическая, как это могло бы показаться с первого взгляда.

Последняя строчка нашей таблицы - самая важная. Количество энтузиастов, занимающихся разработкой для AVR в мире огромно. Существует множество форумов, на которых несложно получить ответ на любой вопрос. В общий доступ выложены сотни проектов. Информация по STM8 имеется в основном у производителя.

Плата Discovery крупным планом. Видно, что на ней стоит процессор STM32.

Несколько слов по существу. Что порадовало в архитектуре STM8, так это наличие единого адресного пространства для кода и данных. Внутри себя процессор имеет Гарвардскую архитектуру, но с точки зрения программиста он фон-Неймановский! Это существенно облегчает использование языка C по сравнению с Atmel и 8051.
Периферия STM8 несколько отличается от Атмеловской. Прежде всего, не все ноги контроллера равны. Некоторые имеют допустимый ток 20 мА (high sink), некоторые нет. Один из выводов заявлен как управляющий пищалкой (BEEP). Альтернативные функции выводов переключаются специальной битовой картой, а не как у Atmel - каждый по своему. Битов конфигурирования порта на 1 больше, чем у Atmel. В результате каждый вывод может иметь следующие состояния:

  • Плавающий вход
  • Вход, подтянутый к + питания
  • Выход с открытым коллектором
  • Обычный выход
  • Выход с пониженной скоростью
  • Имеется также внутренний RC генератор на частоту 16 МГц.
    Из полезностей можно отметить Auto-wakeup. Это по сути аналог комбинации из пустого обработчика прерывания и команды sleep. Позволяет усыпить процессор на заданное время. Остальные интерфейсы довольно стандартны, разве что USART несколько более развесистый, чем у AVR или 8051.

    В целом семейство заслуживает внимания, хотя аналогов, например, ATTiny13 в нем нет, но средние модели Atmel во многих случаях можно заменить на STM8. Самый интересный вопрос, ответ на который мы получим в недалеком будущем, звучит так: образуется ли вокруг STM8 сообщество разработчиков, равное хотя бы одной сотой того, что есть вокруг AVR? То, что фирма ST Microelectronics, вложи она хоть миллиард в разработку, не сможет обеспечить такое разнообразие полезного софта, какое есть для Atmel, по-моему, можно считать фактом.

    В заключение на всякий случай приведем еще одно сравнение. Нажимайте на ссылки и сравнивайте количество результатов поиска:

    STM8 Development AVR Development

    В сети имеется Полезная Инструкция по установке программного обеспечения для работы с STM8. Для тех, кто заинтересовался - следующая часть.