8-900-374-94-44
[email protected]
Slide Image
Меню

Stm8 программирование: STM8 — программирование, прошивка и всё-всё-всё

Содержание

Изучаем STM8S Медленный старт. Часть 0 / Хабр

МК семейства STM8S относительно STM8L/32 имеет меньший арсенал периферии, но позволяет без лишних усложнений разобраться с основами и получить необходимые навыки для работы с его старшими братьями.

0. На кого ориентирован материал, зачем и почему

При написании данной статьи, я предполагаю, что читающий умеет:

  • Внимательно читать (что редкость)
  • Немного работать с англоязычной технической литературой (ну или мотивацию научиться, т.к. первый язык программиста — английский)
  • Паять (хотя бы минимальные навыки)
  • Программировать на С (опять же, не все так сложно)
  • Гуглить (без этого никуда)
  • Пользоваться мультиметром и имеет прочие базовые навыки (по типу «не суй пальцы в розетку»)

Целями статьи считаю:

  • Обзорно пробежать все этапы разработки системы на базе микроконтроллера
  • Дать необходимые вводные для человека практически не посвященного
  • По возможности формирование у читающего понимания того, где, что и как найти


(Не существенно)

Зачем и почему?

Думаю имеет смысл сделать подробный курс программирования МК.

Мне послужит поводом изучить всю периферию более детально и попутно поможет другим.
Знаю, что уже существует огромное количество статей и даже обучающих курсов, но я имею слегка иной подход. (Возможно получу адекватную критику, изменю мнение и примкну к MX Cube ребятам).

Грустно видеть, как stm контроллеры превращают в arduino.

По поводу arduino:

Есть 3 (известных мне, мб я просто не дорос) подхода к разработке ПО на МК:

  1. Разработка на ассемблере
  2. Разработка под конкретную модель МК
  3. Разработка с использованием HAL и им подобных библиотек

1) Я сторонник такого мнения, что если ты строишь дом, то не стоит обжигать каждый кирпич из глины своими руками, потому ассемблер отпадает (хоть и начинал с этого). Слишком низкая скорость разработки.

2) Библиотеки HAL и т.п. для начинающего непрозрачна и слишком много моментов «просто пиши вот так». Потому — тоже в помойку.

3) Наиболее здоровым вариантом для начинающего считаю процесс создания ПО под конкретный МК, полученные навыки позволят разобраться и с 8L и 32 сериями (хоть это и больно делать единолично по документации).

Вы наверно заметили, что arduino в этом списке не фигурирует, потому что это образовательная платформа и для разработки на её базе компактных устройств не предназначена. Но подход к её программированию по какой-то (мне не известной) причине переносится и расползается по интернету. И даже применяется в реальных коммерческих проектах. (представляет собой, «скачал на форуме библиотеку, подключил, заработало, как работает не знаю»).

Я же предлагаю, с моей точки зрения, академически и методически более осмысленный подход.


1. Выбор микроконтроллера

У меня в наличии имеется несколько STM8S105K6 в корпусе LQFP32, он из этого семейства, потому выбираю его.

Вы можете выбрать любой МК в пределах серии.

Есть готовые Discovery платы от ST, можно купить у китайцев или заказать с других ресурсов. Есть готовые платы на STM8S103F3P6 и ей подобные от китайцев.

Но, следует учесть, что готовые платы предназначены для обучения.

На сайте производителя st.com, находим свой МК и скачиваем к нему документы:

Reference manual: RM0016 — общий документ для всех МК семейств STM8S и STM8AF. Далее RM.
Datasheet: У меня DS5855 — документ к моделям STM8S105C4/6, STM8S105K4/6 и STM8S105S4/6. Далее DS.

Из вкусного у него (поверхностно):

  • Поддержка 16 МГц
  • 32 Кб Flash памяти, 1 Кб EEPROM и 2Кб RAM
  • Питание 2.95-5.5В
  • 8-и 16-битные таймеры
  • UART, SPI, I2C
  • 10-битный АЦП
  • до 38 дискретных входов/выходов

2. Необходимое оборудование

Я вижу два варианта работы с МК:

  1. Сборка макета из отдельных компонентов

    Здорово, классно, мне нравится. Так делают многие люди.

    В этом случае для МК нужна будет так называемая обвязка. План простой:

    1. Берем макетную плату, в моем случае TQFP(32-64PIN)0.8MM, запаиваем на неё МК
    2. Берем двухрядную гребенку PLS-2×40 припаиваем к отверстиям, которые ведут к выводам МК
    3. Берем печатную макетную плату (у меня 9х15 см) и припаиваем на нее прошлый бутерброд
    4. Смотрим RM пункт 7. Power supply, читаем. Написано нужен конденсатор соединяющий вывод VCAP и наши 0В источника питания. Еще написано, что подробней в смотреть нужно в DS к конкретному МК в секции electical characteristics. Для меня это пункт 10.3.1 VCAP external capasitor со ссылкой на Table 18 где и указан номинал 470 — 3300 нФ. Я взял 1 мФ (на схеме C3). (для чего он нужен, надеюсь, почитаете сами в RM)
    5. Там же в DS в пункте 10.3.8. Reset pin characteristics находим номинал конденсатора 0.1мФ(на схеме C4). Резистор R4 номиналом 10 КОм используют в отладочных платах и различных application note, хотя внутри МК уже есть подтягивающий резистор номиналом от 30 до 80 КОм (если верить тому же DS). Параллельно конденсатору C4 ставим нашу кнопку сброса. Такую схему сброса можно увидеть например в Desighn note DN0005.
    6. Также, ST любят добавлять на отладочные платы конденсаторы по питанию на 100нФ, в количестве N выводов подключенных к питанию +1. На схеме нарисовано всего C1, C2 и C5 3 шт, и на плату я их не паял, но смысл вы поняли. На столе работать будет и без них, а в реальной коммерческой разработке лучше этим делом озаботиться при разведении платы устройства.
    7. Распаять SWIM разъем программирования (я делаю из PLS-1×40)

    У меня получилось такое чудо:


  2. Покупка готовой платы (что не избавляет от работы паяльником)

    Здорово, классно, мне нравится. Так делают многие люди.

    Стоит ознакомиться с конфигурацией платы, если это плата от ST, то она сразу с программатором и подключается USB type B кабелем. На сайте ST будет схема на странице продукта. На плате будут кнопки, светодиоды, пищалки, ёмкостные кнопки и прочие прелести с которыми можно поиграться.

    Если плата китайская, то часто платы без программатора, то нужен будет программатор.

    Шелкографии названий выводов лучше не верить и перепроверить сравнив с DS.

Работу с контактными макетными платами (breadboard) я не рассматриваю потому, что не использую.

Плюс нужен программатор, у меня китайский ST-Link V2. Умеет программировать и STM8 и STM32.

3. Выбор IDE

Для меня вопрос выбора пока не актуален, работаю в IAR для STM8, ибо в ней делали проект над которым я сейчас работаю, по той же причине старая версия.

Идем на сайт iar.com, в поиске набираем модель своего МК.
Скачиваем IAR Embedded Workbench for STM8, выбираем при установке size-limited evaluation и миримся с ограничением в 8 Кб кода.

Или покупаем. Есть на запрещенных на территории РФ ресурсах взломанные версии, но для коммерческих проектов не годится.

Инструкция по установке есть в самом установщике либо в гугле.
Я использую версию 6.5.3.2581.
Устанавливаем среду, вместе с ней драйвера на программатор.

4. Создание проекта

Заходим в IDE, идем Project -> Create new project -> C++

Жмем OK, выбираем директорию (желательно не имеющую кириллицы и пробелов), выбираем имя (без пробелов и кириллицы).

Идем в корневую папку своей IDE и находим папку inc, для меня путь:

C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\stm8\inc

Находим среди заголовочных файлов iostm8 свою модель МК, для меня:

iostm8s105k6.h

Подключаем её в самом начале и добавляем бесконечный цикл.

Результат:

#include<iostm8s105k6.h>  //Заголовочный файл
int main()  
{
  while(1){  //Бесконечный цикл
  }
  return 0;
}

В меню Project -> Options -> General Options в графе Device выбираем свой МК.

В Project -> Options -> Debugger в графе Driver выбираем ST-LINK.

Находим на панели инструментов кнопку Download and Debug.
При первой компиляции среда попросит выбрать имя .eww файла. (Я называю так же как и проект.)

Внизу в окне Debug Log должны быть сообщения, что:

  • Preprocessor for STM8 — запустился препроцессор
  • Debugger for STM8 — запустился отладчик
  • Connected to STM8 SWIM Debugging system — произошло подключение к МК
  • Loaded debugee — произошла загрузка прошивки
  • Target reset — произошел сброс

Мы попали в режим отладки, но выполнение программы приостановлено.
Там же на панели инструментов находим и нажимаем кнопку Go.
Мы запустили МК в режиме отладки.

Нажимаем Stop debugging, отладка прекращается, но МК питается от программатора и дальше выполняет программу, а именно крутит бесконечный цикл и делает ничего.

Итоги

Получился краткий обзор и вводная в программирование МК серии STM8S без самого программирования. Получилась только база для работы, с этого обычно все и начинается — со сборки макета.

Раскрывать тему подробней смысла не вижу.

Во многих статьях уже после введения, буквально через пару строчек мигают светодиодами, что мне не понятно.

Насколько выполнены цели судить можно будет по тому, получилось ли у начинающего что-то сделать самостоятельно, используя предложенную мной информацию. (индикатор окно Debug log)

Спасибо за внимание.

первые шаги в среде IAR

21 октября 2013

Портфель микроконтроллеров компании STMicroelectronics в его нынешнем виде сформировался несколько лет назад (рисунок 1). Исключая различные узкоспециализированные устройства, в нем выделяются 2 семейства контроллеров — 8-битное STM8 и 32-битное STM32. В то время, как последнее основано на ядрах Cortex-Mx производства компании ARM, STM8 — это архитектура собственной разработки. Несмотря на то, что в нашей стране словосочетание «контроллер от SТ» твердо ассоциируется с приборами семейства на ядре Cortex, 8-битные контроллеры удерживают устойчивое лидерство по количеству проданных микросхем, которое составляет около 240 миллионов шт. (по информации за 2011 год).

 

 

Рис. 1. Портфель контроллеров STMicroelectronics

Микроконтроллеры STM8 изначально были ориентированы на автомобильный рынок, однако успешность архитектуры позволила вывести данное семейство на широкий рынок. Но лучшие черты, свойственные Контроллерам, ориентированным на автомобильную промышленность, семейство сохранило. Это, в первую очередь, то, что вся память, как Flash, так и Eeprom, построена по технологии Еeprom, благодаря этому энергопотребление слабо зависит от температуры кристалла. Технологический процесс 130 нм гарантирует низкое потребление. Кстати, можно упомянуть, что STMicroelectronics занимает 40% рынка Eeprom-памяти и является неоспоримым лидером в этой нише, происходит это благодаря самым передовым технологиям. А то, что память занимает до 95% кристалла контроллера, гарантирует, что изделия будут отвечать наивысшим требованиям качества.

В данной статье мы рассмотрим более подробно архитектуру контроллера, научимся создавать проект в среде IAR, конфигурировать его под выбранную платформу.

За несколько лет существования микроконтроллеры на ядре STM8 стали де-факто лидером на рынке 8-битных устройств. Ежегодное производство составляет несколько сотен миллионов штук. Микроконтроллеры этого семейства можно найти повсеместно: в бытовой и промышленной электронике, компьютерах, медицинском оборудовании.

 

Архитектура STM8

Архитектура STM8 настолько проста для программиста, что не требует глубоких знаний для того, чтобы начать работать с контроллером. Очень многое было взято от контроллеров STM32 (читай ARM). В то же время набор команд CISC гарантирует высокую плотность кода, а то, что команды в большинстве 1-тактовые и 16-битные — высокую производительность. Среди разработчиков зачастую бытует мнение, что STM8 — это инкарнация 51 архитектуры, однако это совершенно не верно. Наличие команд относительной косвенной адресации явно говорит о том, что система инструкций оптимизирована под язык «Си» для быстрой обработки условий case. Следует так же отметить, что знаний ассемблера для решения подавляющего числа задач промышленного управления не требуется.

С практической точки зрения, в первую очередь следует обратить внимание на единое 24-битное адресное пространство, в котором замечательно разместилась Flash-память, ОЗУ, Eeprom, а также регистры периферии. Это существенно упрощает написание кода, например, функции для работы с массивами из ОЗУ и Flash-памяти не требуется писать в нескольких экземплярах. Коды различных стеков и библиотек легко портируются, так как в основном рассчитаны на архитектуру фон Неймана (в смысле адресного пространства). При этом шины для доступа к разным типам памятей разделены, что говорит нам о наличии Гарвардской архитектуры.

Для того, чтобы многобайтные команды и данные поступали в ядро без задержек, реализован 3-ступенчатый конвейер. Команды вычитываются из памяти по 32-битной шине, соответственно, за 1 обращение — 2 команды. Код можно выполнять так же из памяти данных, но, так как шина к памяти данных 8-битная, то конвейер будет заполняться гораздо медленнее и производительность будет ниже, однако о такой возможности нужно знать.

Система прерываний реализована в ядре. Прерывания вызываются через вектора, которые расположены в начальной части кода. При этом контекст сохраняется автоматически. Однако для выхода из прерывания требуется инструкция, отличная от инструкции выхода из обычной подпрограммы, потому пользователь должен в том или ином виде сообщать компилятору о том, что функция является обработчиком прерываний. Количество прерываний — до 32, из которых 29 пользовательские, с задаваемым приоритетом, остальные — системные, включая RESET.

 

Выбор среды программирования

Наиболее популярные средства программирования STM8 это среды ST Visual Develop с компилятором производства компании Raisonance и IAR Embedded Workbench. В таблице 1 приведено их краткое сравнение.

Таблица 1. Краткое сравнение сред разработки IAR EW и ST VD   

Параметр ST VD IAR EW
Поддержка ST7  да  нет  
Ограничение по коду на бесплатную лицензию, Кбайт  32  8  
Многоплатформенность компилятора  нет  да  
Встроенный дебаггер-отладчик  да  да (ST-LINK)  
Уровень оптимизации кода  высокий  высокий  

В нашем случае мы выберем среду производителя IAR, так как контроллер, который мы будем программировать содержит всего 8 Кбайт памяти программ и по остальным параметрам он не проигрывает ST VD, зато более известен российскому разработчику, так как многие пользовались им для программирования контроллеров других архитектур.

 

Выбор отладочной платы микроконтроллера

Как уже было упомянуто выше, мы рассмотрим контроллер с 8 Кбайт Flash-памяти, это контроллер линейки Value Line. Почему? В первую очередь потому, что данное семейство позиционируется как самое эффективное в плане цены и не имеет конкурентов со стороны STM32. Данные микроконтроллеры предназначены для создания на их основе различных датчиков, контроллеров управления для бытовой и промышленной аппаратуры. То есть там, где мощность 32 бит не востребована, а стоимость и энергопотребление играют наиважнейшую роль.

Итак, остановим выбор на контроллере STM8S003K3T6. Компания STMicroelectronics для данной линейки выпустила средство для быстрого старта под названием STM8SVLDISCOVERY. Рассмотрим вкратце, что предлагает данная отладочная плата (рис. 2).

 

 

Рис. 2. Отладочная плата STM32VLDiscovery

Данная отладочная плата уже содержит встроенный отладчик ST-Link, который впоследствии можно использовать для программирования пользовательских систем.

 

Программная поддержка микроконтроллеров


на ядре STM8

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

Структура библиотеки приведена на рисунке 3.

 

 

Рис. 3. Структура стандартной периферийной библиотеки

Из этой структуры видно, что все обработчики прерываний собраны в одном файле. За каждый периферийный блок отвечает отдельный файл и существует конфигурационный файл, в котором пользователь должен выбрать, какие модули периферии будут включены, а какие не будут. К файлу приложения пользователя подключается единственный файл stm8s.h, а все остальное делается автоматически.

Наличие библиотек не исключает возможность работы напрямую с регистрами. Более того, оба подхода можно комбинировать для достижения наилучших показателей кода.

Данная библиотека свободно скачивается с сайта www.st.com.

 

Работа с микроконтроллером в среде IAR

Во первых, с сайта http://www.iar.com/ следует скачать и установить среду разработки IAR Embedded Workbench для STM8 в редакции Kickstart (рисунок 4).

 

 

Рис. 4. Вид проекта в среде IAR EW

Наипростейший путь создания нового проекта — это воспользоваться шаблоном-примером. В каждом архиве периферийной библиотеки имеется такой пример, который после разархивирования находится в папке ProjectSTM8S_StdPeriph_TemplateEWSTM8.

Мы же, для того, чтобы упростить себе задачу, возьмем периферийную библиотеку с шаблоном проекта именно для этой платы [1] и в этом архиве найдем файл STM8SVLDISCOVERY_DiscoverProjectsProject_templateEWSTM8Project.eww. Разархивируйте проект и запустите этот файл. Откроется среда IAR. В данном проекте-шаблоне уже настроено все необходимое для того, чтобы работать с контроллером как через библиотеки, так и через регистры (напрямую).

Как нетрудно заметить, пользовательские файлы выведены в отдельные папки и их можно быстро найти, чтобы открыть и что-либо изменить. Библиотека периферии выделена в отдельную папку и в нее можно смотреть только для ознакомления, так как все включенные в нее файлы имеют статус «только для чтения». Итак, перед нами классический вид проекта в среде IAR, где главным является файл main. c, в котором содержится функция входа в пользовательское приложение void main(void). Второй пользовательский файл — это stm8s_it.c, в котором содержатся пустые обработчики всех возможных прерываний. Эти обработчики, в случае их использования, останется заполнить собственным кодом.

Рассмотрим подробно настройки проекта. Для этого следует зайти в меню, и выбрать ProjectOptions. Пожалуй, основные опции мы рассматривать подробно не будем, так как они понятны и одинаковы для всех версий IAR. А вот опции, которые разрешают работать с библиотекой мы обсудим подробнее (рисунок 5).

 

 

Рис. 5. Свойства компилятора

Для этого найдем закладку Preprocessor в опциях С/С++-компилятора. В первую очередь обратите внимание, что подключена папка с файлами описаний (*.h) стандартной периферийной библиотеки. Далее требуется обратить внимание на наличие глобального макроса-определения STM8S003. Библиотека работает с разными линейками сери STM8S, потому этот макрос помогает ей понять, с чем ей конкретно придется работать.

В опциях дебаггера по умолчанию уже выбран ST-Link и для того, чтобы загружать проект в плату, достаточно подключить ее по USB и нажать кнопку «Download and Debug» на панели инструментов (рисунок 6).

 

 

Рис. 6. Часть панели инструментов с кнопкой запуска

 

Написание своего приложения

Итак, мы вплотную приблизились к написанию собственного кода. Мы напишем программу, которая будет конфигурировать вывод порта, к которому подключен светодиод, и поуправляем им Перед тем, как приступить к программированию, необходимо скачать принципиальную схему, ее, а также другую полезную информацию по данное плате, можно найти здесь: [2].

Светодиод катодом подключен к PD0, анод подключен через токозадающий резистор к питанию. Таким образом, чтобы включить светодиод, необходимо подать на вывод порта логический 0.

В первую очередь изучите файл-шаблон main.c. Вы найдете в нем, кроме самого основного приложения, интересную функцию void assert_failed(u8* file, u32 line). По умолчанию она отключена макросом USE_FULL_ASSERT. Данная функция позволяет отследить некорректное использование библиотеки в том случае, если вы задали какой-то параметр неверно или перепутали порядок следования параметров. Эту опцию рекомендуется активировать для режима отладки, включив в список преопределенных символов компилятора.

Начинаем модификацию void main(void).

Для того, чтобы понять, какую функцию нужно взять для инициализации из библиотеки, нужно открыть список функций файла stm8s_gpio.c, и станет очевидно, что нужна функция GPIO_Init (рисунок 7).

 

 

Рис. 7. Функции драйвера периферийного модуля GPIO

Тут же можно посмотреть, какие аргументы принимает эта функция. Для этого не нужно открыть толстые справочники, а достаточно просто посмотреть описание функции, расположенное над ней самой в виде комментария (рисунок 8).

 

 

Рис. 8. Функция инициализации GPIO

Соответственно, первый аргумент станет очевидно понятными, это GPIOD. А вот для понимания того, что должны из себя представлять остальные, требуется отправиться к определениям GPIO_Pin_TypeDef и GPIO_Mode_TypeDef. И сразу станет ясно, что это GPIO_PIN_0 и GPIO_MODE_OUT_PP_HIGH_FAST соответственно.

Итак, мы получили функцию

GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST)

Включим ее в основной код. Вот и вся инициализация. После этого остается только воздействовать на состояние вывода. Для этого также обратимся в файл библиотеки и найдем наиболее подходящую функцию void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal). Аналогичным образом найдем, какие должны быть у данной функции аргументы для того, чтобы включить или выключить светодиод.

Итак, в итоге мы получим следующий вид функции void main(void) (рисунок 9):

 

 

Рис. 9. Функция void main(void)

После этого загрузим код в контроллер и по шагам (клавиша F10) пройдем все команды для того, чтобы убедиться, что код работает.

 

Заключение

Микроконтроллеры семейства STM8 — это мощные и, в то же время, недорогие устройства, на которых можно строить различную домашнюю и промышленную автоматику. Крайне невысокая цена контроллеров линейки Value Line делает их весьма конкурентоспособными на рынке средств для построения различных датчиков (дыма, газа) там, где массовость, компактный размер и цена важны в равной степени. А то, что контроллер очень удобен в использовании как в электрическом, так и в программном смысле, делает возможным окончить разработку в кратчайшие строки.

 

Литература

1. http://www.st.com/web/en/catalog/tools/PF257969  

2. http://www.st.com/web/en/catalog/tools/PF252276#.

Получение технической информации, заказ образцов, поставка — e-mail: [email protected]

 

 

•••

Начало работы с STM8S с использованием STVD и компилятора Cosmic C — мигание светодиода Раньше я работал с AVR, PIC и несколькими другими микроконтроллерами ARM Cortex, но, безусловно, в некоторых приложениях они становятся излишними и значительно увеличивают стоимость спецификации. Недавно, разобрав несколько дешевых китайских продуктов, я обнаружил, что у большинства из них

Микроконтроллер STM8 внутри него. Микросхема не только дешева, но и обладает множеством функций и опций, что делает ее подходящей для использования во многих различных приложениях. Например, контроллеры серии STM8S (которые мы изучим в этой серии руководств) представляют собой контроллеры общего назначения, но есть и другие серии, такие как STM8A для автомобильных разработок и STM8L для маломощных конструкций с батарейным питанием. что расширяет область применения этих контроллеров.

В этой серии руководств мы научимся программировать микроконтроллеры STM8S , а точнее STM8S103F3P6 . Причина для начала работы с этим конкретным номером детали заключается только в соотношении цены и производительности. Нравиться!! просто посмотрите на это всего за 0,25 $ (около 20 рупий) мы получаем 8-битный микроконтроллер с внутренним генератором 16 МГц, флэш-памятью 8 КБ, 10-битным АЦП, UART, SPI и I2C. Кто бы не был заинтригован? Кроме того, STM8S103F3P6 широко популярен, и, следовательно, как новичок, вы найдете достаточную поддержку, если вам понадобится помощь помимо руководств. Начиная с этого, у нас будет последовательность учебных пособий, подобных Учебникам по программированию PIC, где мы научимся программировать этот контроллер от простого мигания до различных интерфейсов дисплея и датчика. Вы также можете ознакомиться с учебным пособием STM32F103C8 и проектами, если вас интересуют 32-разрядные микроконтроллеры STM.

Выбор средств разработки аппаратного и программного обеспечения

Теперь, когда мы разобрались с микроконтроллером, нам нужно выбрать средства разработки аппаратного и программного обеспечения, чтобы начать процесс обучения. Есть много вариантов, здесь я выбрал те, которые бесплатны для использования и легко доступны каждому.

STM8S103F3P6 Development

Официальная отладочная плата для 8-разрядного микроконтроллера ST называется STM8 Discovery kit, но мы будем использовать другую недорогую отладочную плату, которую вы можете легко найти у местного поставщика или в интернет-магазине. Изображение STM8S103F3P6 Отладочная плата , которую мы будем использовать в этом руководстве, показана ниже.

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

Присмотревшись, вы заметите, что помимо контроллера STM8S103F3p6 у нас есть кнопка сброса для сброса контроллера. Светодиод питания и тестовый светодиод, подключенные к PB5 (порт B, контакт 5), и регулятор напряжения AMS1117, который преобразует 5 В от USB-порта в 3,3 В для контроллера. Контроллер также может быть настроен на работу от 5 В, если это необходимо. Различные части контроллера отмечены ниже. У нас также есть 4 контакта программатора, а именно 3,3 В, GND, SWIM и NRST, которые можно использовать для простого программирования и отладки нашего микроконтроллера.

Программатор STM8S103F3P6

Для программирования нашего контроллера мы будем использовать ST-LINK v2 , который является дешевым и легко доступным в Интернете. Существует множество вариантов (металл, пластик, золото, розовый цвет, голая плата) этой платы ST-LINK v2, и все они служат одной цели. Мой показан ниже, но вы можете использовать любой тип ST-LINK программатора , распиновка будет отличаться, поэтому просто убедитесь, что вы правильно прочитали распиновку на корпусе. Существует также ST-LINK V3 от самой ST-Microelectronics, который можно использовать для серьезной отладки. Мы не будем использовать это сейчас, так как это немного дорого, мы сохраним его на будущее.

STM8S103F3P6 IDE и компилятор

Выбор правильной IDE и компилятора для STM8S103F3P6 сбивает с толку просто потому, что есть из чего выбирать. Официальные инструменты, доступные для микроконтроллера STM8, показаны на изображении ниже.

Что касается конфигурации, у нас есть STM8CubeMx , я попробовал программное обеспечение, и оно меня полностью разочаровало. В отличие от STM32Cube, STM8Cube не может автоматически генерировать код. Он может генерировать сопоставление контактов только для целей визуализации и может пригодиться, если вы переносите свой код с одного контроллера на другой. Кроме этого, я бы не использовал его. Поэтому в этой серии уроков мы не будем использовать это.

Для IDE и компилятора у нас есть много вариантов на выбор. Два лучших варианта для IDE — это IAR workbench и ST Visual Develop (STVD). совершенно бесплатно. Точно так же для компилятора мы будем использовать Cosmic C Compiler , опять же только потому, что он абсолютно бесплатный. Еще одна причина выбора этой IDE и компилятора заключается в том, что после того, как мы познакомимся со средой, нам будет легко использовать любой другой 8-битный микроконтроллер от ST без особых усилий. Далее в этой статье мы рассмотрим, как установить и настроить STVD с компилятором Cosmic C.

Для перепрошивки мы будем использовать ST Visual Programmer (STVP) , этот инструмент будет автоматически установлен при установке STVD. Он будет интегрирован в саму IDE, что поможет нам быстро программировать и отлаживать. Окончательным программным обеспечением будет STMStudio , которое представляет собой программное обеспечение для мониторинга STM8. Программное обеспечение может помочь в отладке STM8 в реальном времени и имеет некоторые интересные функции, такие как мониторинг значения переменной, построение графика и т. д. Я недостаточно экспериментировал с этим программным обеспечением. И, по крайней мере, для первых нескольких уроков мы не будем использовать это программное обеспечение, поскольку нам не потребуются большие требования к отладке.

Стандартная периферийная библиотека STM8S: ST Microelectronics предоставляет набор библиотек, облегчающих разработку кода для микроконтроллеров STM8S. Эта библиотека называется «Стандартная периферийная библиотека » или сокращенно SPL. Библиотека классная, за исключением того, что она написана с учетом всех возможных контроллеров 8-битного семейства STM8S/A, а не только контроллера STM8S103F3P6, который мы будем использовать. Следовательно, мы должны сделать некоторые настройки здесь и там, чтобы заставить его работать (о чем я поделюсь позже). Но тем не менее, я считаю, что стоит попробовать, потому что это может сделать разработку очень быстрой, и, следовательно, мы будем использовать его в нашем руководстве.

Если вы не хотите использовать библиотеку, вы должны получить прямой доступ к регистрам контроллера или выполнить программирование сборки на «голом железе». Оба они забавны, если у вас есть время, чтобы изучить и использовать их. Моя идея состоит в том, чтобы использовать библиотеку SPL везде, где она хорошо работает, а затем при необходимости также работать на уровне регистров и сборок. Попробуем не изобретать велосипед!

STM8S с Arduino с использованием Sduino

Обсуждение опций программного обеспечения никогда не будет полным, если я не упомяну Arduino IDE  поддерживает STM8S. Да, та же самая плата STM8S103F3P6 может быть запрограммирована непосредственно из Arduino IDE с помощью Sduino благодаря Майклу Майеру. Но проект все еще находится на стадии разработки, и, вероятно, потребуется некоторое время и поддержка сообщества для Sduino, чтобы обеспечить полную поддержку платформы. Однако всего через несколько минут игры с Sduino мне это начало нравиться, и поэтому я решил также написать отдельную статью о том, как программировать микроконтроллер STM8S с помощью Arduino. Я дам ссылку на статью здесь, когда она будет готова. В этой статье будет обсуждаться, почему и почему вам не следует использовать Arduino IDE для программирования ваших микроконтроллеров STM8S.

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

Загрузка необходимого программного обеспечения

Теперь, когда мы определились с программным обеспечением, которое мы будем использовать для этого урока, давайте продолжим и загрузим его, используя следующую ссылку. Все программное обеспечение можно загрузить и использовать бесплатно, вам просто нужно зарегистрировать бесплатную учетную запись на ST и Cosmic, если вы еще этого не сделали.

  • ST Visual Develop (STVD)
  • Космический компилятор C
  • Стандартная периферийная библиотека
  • STM8Cube Mx (дополнительно)
  • STMStudio для STM8 (дополнительно)

Настройка STVD и компилятора Cosmic C

После загрузки обоих программ просто следуйте инструкциям на экране, чтобы установить их. Я бы рекомендовал оставить их в каталогах по умолчанию, чтобы избежать путаницы в дальнейшем. IDE STVD будет установлена ​​без каких-либо усилий. Для компилятора Cosmic C вам необходимо получить бесплатный лицензионный ключ в процессе установки. Вам просто нужно предоставить информацию о компании с идентификатором электронной почты, если вы студент, просто укажите это. Процесс получения лицензионного ключа является мгновенным и автоматическим, хотя в инструкциях по настройке сказано, что это может занять день или два, я получил лицензионный ключ автоматически на свой адрес электронной почты, как только отправил его, просто убедитесь, что вы проверьте СПАМ. Мое электронное письмо с подтверждением показано ниже.

В соответствии с инструкциями по электронной почте просто скопируйте файл license.lic и вставьте его в подпапку «license» в папке установки. Для меня путь был «C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\License» . Просто вставьте файл в место, как показано ниже.

Стандартная периферийная библиотека для STM8S103F3P6

Как уже говорилось ранее, ST Microelectronics предоставляет библиотеки под названием SPL, которые можно использовать для всех 8-битных микроконтроллеров STM8S/A. Вы можете либо загрузить оригинальный SPL от ST Microelectronics и внести необходимые изменения, либо загрузить мои библиотеки SPL STM8S103F3P6 и использовать их как таковые. Я бы рекомендовал позднее.

Оригинальный SPL от ST Microelectronics

STM8S103F3P6 SPL

Пока вы там, обязательно загрузите руководство пользователя SPL, которое будет очень удобно при программировании контроллера.

Компиляция первой программы

Теперь, когда все готово, давайте попробуем скомпилировать нашу первую программу, чтобы проверить, работают ли IDE, компилятор и библиотека должным образом. Вы также можете посмотреть видео в нижней части страницы для получения подробных инструкций.

Начните с открытия STDV и выберите «Файл» -> «Рабочая область», во всплывающем окне выберите «Новая рабочая область» и введите имя проекта и путь, по которому должна быть сохранена программа. Я называю свою программу BareMinimum и сохраняю ее в папке на рабочем столе. Нажмите «ОК», и вы получите диалоговое окно «Новый проект», как показано ниже.

Я снова называю проект bareminimum, и в группе инструментов мы должны указать корень цепочки инструментов в пути, где установлен компилятор STM8 Cosmic. Адрес пути по умолчанию:  «C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8» . После этого просто нажмите OK, чтобы открыть окно «Выбор MCU».

Найдите STM8S103F3P, выберите его и нажмите OK. Это откроет новый проект для STM8S103F3P на STVD, когда все будет готово, окна должны выглядеть так.

Щелкните правой кнопкой мыши «исходный файл» и выберите «Добавить файлы в папку», чтобы включить все файлы c из нашей библиотеки SPL. Аналогичным образом щелкните правой кнопкой мыши «Включить файлы», чтобы включить все файлы заголовков. Если у вас есть какие-либо вопросы, вы можете обратиться к видео ниже. Когда все файлы будут добавлены, нажмите Build -> rebuil d all, а затем Compile, чтобы проверить, работают ли компилятор и SPL должным образом. Если все пойдет хорошо, вы должны увидеть следующий экран с ошибкой результата сборки 0 и предупреждением 0.

После этого мы можем быть уверены, что все наши библиотеки SPL работают с компилятором Cosmic и STVD. Это стандартная процедура, которой мы будем следовать для каждого нового проекта. Вы также можете включить только необходимые заголовочные и исходные файлы, необходимые для проекта, чтобы при необходимости сократить время сборки.

Загрузка кода из STVD в макетную плату STM8S с помощью ST-Link V2

Подключите ST-Link V2 к макетной плате, как показано ниже.

Соединения довольно просты, и самое приятное то, что вам не нужны внешние компоненты. Моя аппаратная установка для программирования показана ниже, я только что использовал гнездовые провода для подключения. Однако обратите внимание, что распиновка вашего ST-Link может отличаться от моей, обязательно следуйте распиновке на устройстве перед выполнением подключений.

Выполните подключение и подключите устройство к компьютеру, установка драйвера должна начаться автоматически. Вы можете использовать диспетчер устройств, чтобы убедиться, что ваш компьютер правильно обнаружил ST-LINK V2. Вы также заметите, что тестовый светодиод на плате мигает, если плата включается впервые. Как только мы успешно скомпилируем код на STVD, мы получим файл расширения «S19» в каталоге отладки папки проекта. Мой файл S19 показан ниже.

Этот S19 похож на шестнадцатеричный файл, который необходимо загрузить в контроллер. Чтобы загрузить программу, откройте ST Visual Programmer (STVP), который должен быть установлен вместе с STVD. Затем в окне конфигурации выберите, как показано на изображении ниже, и нажмите OK.

Затем нажмите File->Open и перейдите к файлу S19, который мы показали ранее. Затем, чтобы прошить устройство, следуйте Program -> Current Tab. Если перепрошивка прошла успешно, вы должны увидеть следующий вывод.

По умолчанию при покупке STM8S у него будет программа blin, которая мигает тестовым светодиодом. Теперь после загрузки этого пустого кода светодиод больше не будет мигать.

Важно : Я обнаружил, что мой ST-Link не перезагружает плату автоматически после программирования. Мне пришлось отключить и снова подключить его, чтобы проверить вывод моей программы. Я не уверен, что это проблема для всех, дайте мне знать в разделе комментариев. Кроме того, посмотрите видео внизу, в котором объясняется решение этой проблемы.

На этом давайте завершим это руководство. Мы изучили основы аппаратного обеспечения, настроили среду разработки и научились компилировать и загружать код. Теперь мы готовы к прогрессу, и мы будем использовать это во всех наших следующих уроках. Если у вас есть какие-либо вопросы, задайте их на наших форумах и следите за новостями!!

Запуск микроконтроллеров STM8 | Embedded Lab

Запуск микроконтроллеров STM8

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

STM8 — это 8-битные микроконтроллеры общего назначения от STMicroelectronics (STM) . STM известен в основном своей линейкой 32-битных микроконтроллеров ARM Cortex — STM32. Микроконтроллеры STM8 редко обсуждаются в этом контексте. Тем не менее, микроконтроллеры STM8 надежны и, что наиболее важно, оснащены множеством аппаратных функций. За исключением ядра ARM, 32-битной архитектуры, производительности и некоторых незначительных отличий, STM8 имеют много периферийных сходств с STM32. На мой взгляд, STM8 одинаково, а иногда и лучше, чем популярные PIC и AVR во всех областях. Однако, в отличие от PIC и AVR, я видел STM8 в основном в различных корпусах SMD. Только несколько чипов STM8 доступны в пластиковых двухрядных корпусах (PDIP)/корпусах со сквозными отверстиями. Я думаю, что это основная причина, по которой большинство малых предприятий и любителей не играют с ними так много, как с другими 8-битными семействами. Людям нравится сначала настраивать свои тестовые проекты на макетных платах, пробных печатных платах или полосовых платах, создавать прототипы, а затем разрабатывать для производства. Чтобы справиться с этой проблемой, STM предоставила несколько доступных плат STM8 Discovery (Disco) для начала работы. Кроме того, есть много дешевых коммутационных плат STM8 из Китая.

У меня есть опыт работы с AVR, PIC, 8051, STM32, MSP430, TivaC и т.д. Честно говоря, я думал, что изучение микроконтроллеров STM8 — пустая трата времени и энергии. Кривая обучения будет крутой. Вещи и инструменты были бы другими и, следовательно, сложными. Однако постепенно я обнаружил, что эти микроконтроллеры очень полезны, и в них буквально нет никакой сложности. Основным движущим фактором для изучения STM8 является фактор цены. Они очень дешевые. Что касается других вещей, я не нашел ни одной книги по STM8, написанной на английском языке. В Интернете буквально нет 100% полной записи в блоге, которая показывает основы. Точно такая же история с инструментами. Я использовал MikroC для AVR, 8051 и ARM, и это мой фаворит, но на момент написания не было компилятора MikroC для семейства STM8. Я также не наткнулся на какую-либо IDE, подобную Arduino, которая поддерживает микроконтроллеры STM8. Решения на основе Arduino также не являются моими любимыми, поскольку они не углубляются и имеют несколько ограничений. Может быть, это не моя удача. После долгих исследований и поисков я обнаружил, что существует несколько компиляторов C для STM8. Однако любой новый инструмент поначалу отличается и сложен. Не всегда легко адаптироваться к новым условиям. Возможно, вы никогда не узнаете, какие непредвиденные трудности и суровость может бросить вам новая среда, даже когда вы достигнете определенного уровня знаний. Я также не хочу использовать какое-либо пиратское программное обеспечение, поэтому основным требованием был бесплатный компилятор. Я узнал, что ST Visual Develop и компилятор Cosmic COSC являются бесплатными инструментами. Cosmic раньше был платным инструментом, но теперь он абсолютно бесплатный. Единственной легкой вещью до этого было купить плату STM8S Value Line Discovery всего за несколько долларов и загрузить материалы.

Семейство STM8

На сегодняшний день доступно более сотни микроконтроллеров STM8. Семейство STM8 можно разделить на три категориальные группы, как показано ниже.

Внутри этих групп есть подгруппы, но в целом эти три группы — это то, по чему мы можем определить все семейство. Микросхемы STM8S — это прочные и надежные микроконтроллеры общего назначения, которые можно использовать практически во всех областях. Это наиболее часто используемая группа, и на самом деле мы будем изучать ее в этой статье. Они также дешевы и умны. Вторая группа – семейство STM8A предназначено в основном для автомобильной промышленности. Эта группа дополнена дополнительными аппаратными интерфейсами, такими как CAN и LIN, которые являются обязательными в соответствии с современной доктриной автомобильной промышленности. STM8A также очень универсальны и разработаны, чтобы выдерживать суровые экстремальные условия автомобиля. Например, STM8A может выдерживать высокие температуры, превышающие 100°C. Последняя группа состоит из микроконтроллеров STM8L, предназначенных для маломощных приложений или приложений с батарейным питанием. Практически не потребляют энергии в режиме ожидания. Таким образом, если в ваших проектах вам нужна высокая энергосбережение или отключение электроэнергии, эта группа — правильный выбор. Существуют также маломощные версии стандартных автомобильных микроконтроллеров STM8 с маркировкой STM8AL. Помимо всего этого, существует также один вариант микроконтроллера STM8, специально разработанный для емкостных сенсорных приложений. Они называются STM8T.

Возможности и преимущества микроконтроллеров STM8 многочисленны, и их невозможно выразить в нескольких словах. Чем больше вы исследуете, тем больше вы будете знать. STM8 могут питаться от источников питания постоянного тока 3,3 В или 5 В и имеют встроенную схему обнаружения пониженного напряжения. Редакции с низким энергопотреблением могут работать при гораздо более низких напряжениях, чем эти значения. Официальные платы STM8 Discovery поставляются с перемычками выбора напряжения, которые позволяют пользователям выбирать уровень рабочего напряжения по мере необходимости.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *