Программирование stm8 с нуля

Программирование stm8 с нуля

Скоро буду выкладывать материал по поделкам на микроконтроллерах STM8S003F3P6, поэтому начинающим нужно знать, как его прошить.

Для прошивки микроконтроллера советую использовать USB свисток ST-LINK V2
Купить его можно в магазинах радиотоваров, к примеру в Чип и Дипе (дорого и быстро) или на Алиэкспресс (дешево и долго).
Для поиска по названию используем фразу " ST-LINK V2 " Выглядит программатор в виде, очень похожем на УСБ флешку. С одной стороны порт УСБ, с другой стороны стандартный 10 контактный разъем пинов.
Назначение контактов есть на корпусе. Только нужно учесть, что шлепают их на фабриках Китая много кто, и порой у разных производителей нумерация контактов отличается.

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

Если отладочная плата не подходит, потому что есть отдельно купленные чипы микроконтроллеров, и их нужно неоднократно прошить, то используются отладочные платы с панельками микросхем. В такую плату вставляется микроконтроллер и прошивается. Стоимость таких плат достаточно дороже, ищется на Алиэкспресс по фразе " TSSOP20 Burning "

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

Для этого под программатор выводится 4 ноги микроконтроллера, это ножки:

7 ножка чипа VSS к минусу GND программатора
9 ножка чипа VDD к 3.3V или 5.0V программатора
18 ножка чипа PD1 к контакту SWIM программатора
4 ножка чипа NRST к контакту RST программатора

Особенности использования ножек при самостоятельной разработке:
Если линия 4 ножки сброса тянется дорожкой далеко от микроконтроллера к разъему, то подтяните ее резистором к плюсу питания резистором на 10 килоом.
Порт PD1 (18 ножка чипа) можно использовать на свои нужды, помимо вывода на разъем программатора, но в этом случае ее нельзя использовать с емкостной нагрузкой.

В качестве софта для прошивки можно использовать нагугленное для STM, я же покажу, как пользоваться родной софтиной "ST Visual Programmer" которую можно найти на сайте www.st.com, забив в тамошний поиск фразу " STVP-STM8 " Для скачивания на официальном сайте нужна регистрация, но можно воспользоваться моим скачанным оттуда архивом без регистрации umat.ru/files/en.stvp-stm8.zip (версия архива 42.0.0 конца 2018 года)

При установки софта установится все необходимое, драйвера программатора и сама программа. Название приложения "ST Visual Programmer" Запускаем его.

Сначала нужно настроить . В конфигурации вводим тип программатора, режим и название чипа

Теперь можно открыть файл прошивки. File>Open…

Файл прошивки имеет расширение файла .s19/ После загрузки прошивки в программу произойдет следующее:

В области описания (выделено красным) в разделе PROGRAM MEMORY будет указаны сведения файла прошивки. В поле главной вкладки PROGRAM MEMORY (синим) будет массив данных прошивки, в поле лога внизу (зеленым) будет этот самый лог загрузки. Поподробнее о нем: Последняя строка "Файл успешно загружен. Контрольная сумма …". Но перед этим куча ошибок с указанием строки, адреса и "выход за пределы — проигнорировано". Это нормально. Файл прошивки содержит всю область памяти, включая адреса с 0х4000 по 0х407F, этот диапазон является проигнорированной ЕЕПРОМ памятью, который относится а следующей вкладке "DATA MEMORY", на который нужно теперь перейти (нажать, где красным, ниже на картинке)

Загружать данные в "DATA MEMORY" необходимо, если область памяти ЕЕПРОМ содержит эти самые данные. Проверяем, открыв тот же самый файл прошивки. Загрузка будет идти подольше, большая часть файла прошивки будет проигнорирована, но область памяти ЕЕПРОМ будет успешно загружена:

Если в поле массива данных видны какие либо шестнадцатеричные значения, то значит прошивать их нужно. Если там все будет по нулям, то шить их нет необходимости. Я, к примеру, зачастую, если даже в описание поделки описано, что "настройки сохраняются в энергонезависимой памяти", не заполняю область ЕЕПРОМ данными, делая первичную инициализацию ЕЕПРОМ при первом запуске микроконтроллера. То есть микроконтроллер сам прошивает ЕЕПРОМ, поэтому сам файл прошивки не содержит этих данных.

Вкладка "OPTION BYTE" это те же самые фьюзы, как у микроконтроллеров АТтини, но менять их значения, как правило, нет никакой необходимости (фух!) — поэтому описывать их и не буду. После загрузки прошивки в программу можно подключать программатор и сам микроконтроллер или отладочную плату с ним. Для загрузки прошивки в микроконтроллер, необходимо нажать кнопку "загрузить все" (красным)

Читайте также:  Ошибка автор не найден

" Нет соединения с микроконтроллером…" Проверьте, правильно ли контачат провода программатора и жив ли сам чип.

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

"Чип залочен". Если залочить чип (заблокировать ему возможность записи и чтения прошивки), то нужно сначала снять защиту ( прошивка в памяти контроллера конечно потеряется).
Нужно перейти на вкладку "OPTION BYTE"( синим), убедится, что значение параметра защиты выключено (красным) и нажать на кнопку " записать данные" (зеленым).

Скоро буду выкладывать материал по поделкам на микроконтроллерах STM8S003F3P6, поэтому начинающим нужно знать, как его прошить.

Для прошивки микроконтроллера советую использовать USB свисток ST-LINK V2
Купить его можно в магазинах радиотоваров, к примеру в Чип и Дипе (дорого и быстро) или на Алиэкспресс (дешево и долго).
Для поиска по названию используем фразу " ST-LINK V2 " Выглядит программатор в виде, очень похожем на УСБ флешку. С одной стороны порт УСБ, с другой стороны стандартный 10 контактный разъем пинов.
Назначение контактов есть на корпусе. Только нужно учесть, что шлепают их на фабриках Китая много кто, и порой у разных производителей нумерация контактов отличается.

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

Если отладочная плата не подходит, потому что есть отдельно купленные чипы микроконтроллеров, и их нужно неоднократно прошить, то используются отладочные платы с панельками микросхем. В такую плату вставляется микроконтроллер и прошивается. Стоимость таких плат достаточно дороже, ищется на Алиэкспресс по фразе " TSSOP20 Burning "

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

Для этого под программатор выводится 4 ноги микроконтроллера, это ножки:

7 ножка чипа VSS к минусу GND программатора
9 ножка чипа VDD к 3.3V или 5.0V программатора
18 ножка чипа PD1 к контакту SWIM программатора
4 ножка чипа NRST к контакту RST программатора

Особенности использования ножек при самостоятельной разработке:
Если линия 4 ножки сброса тянется дорожкой далеко от микроконтроллера к разъему, то подтяните ее резистором к плюсу питания резистором на 10 килоом.
Порт PD1 (18 ножка чипа) можно использовать на свои нужды, помимо вывода на разъем программатора, но в этом случае ее нельзя использовать с емкостной нагрузкой.

В качестве софта для прошивки можно использовать нагугленное для STM, я же покажу, как пользоваться родной софтиной "ST Visual Programmer" которую можно найти на сайте www.st.com, забив в тамошний поиск фразу " STVP-STM8 " Для скачивания на официальном сайте нужна регистрация, но можно воспользоваться моим скачанным оттуда архивом без регистрации umat.ru/files/en.stvp-stm8.zip (версия архива 42.0.0 конца 2018 года)

При установки софта установится все необходимое, драйвера программатора и сама программа. Название приложения "ST Visual Programmer" Запускаем его.

Сначала нужно настроить . В конфигурации вводим тип программатора, режим и название чипа

Теперь можно открыть файл прошивки. File>Open…

Файл прошивки имеет расширение файла .s19/ После загрузки прошивки в программу произойдет следующее:

В области описания (выделено красным) в разделе PROGRAM MEMORY будет указаны сведения файла прошивки. В поле главной вкладки PROGRAM MEMORY (синим) будет массив данных прошивки, в поле лога внизу (зеленым) будет этот самый лог загрузки. Поподробнее о нем: Последняя строка "Файл успешно загружен. Контрольная сумма …". Но перед этим куча ошибок с указанием строки, адреса и "выход за пределы — проигнорировано". Это нормально. Файл прошивки содержит всю область памяти, включая адреса с 0х4000 по 0х407F, этот диапазон является проигнорированной ЕЕПРОМ памятью, который относится а следующей вкладке "DATA MEMORY", на который нужно теперь перейти (нажать, где красным, ниже на картинке)

Загружать данные в "DATA MEMORY" необходимо, если область памяти ЕЕПРОМ содержит эти самые данные. Проверяем, открыв тот же самый файл прошивки. Загрузка будет идти подольше, большая часть файла прошивки будет проигнорирована, но область памяти ЕЕПРОМ будет успешно загружена:

Если в поле массива данных видны какие либо шестнадцатеричные значения, то значит прошивать их нужно. Если там все будет по нулям, то шить их нет необходимости. Я, к примеру, зачастую, если даже в описание поделки описано, что "настройки сохраняются в энергонезависимой памяти", не заполняю область ЕЕПРОМ данными, делая первичную инициализацию ЕЕПРОМ при первом запуске микроконтроллера. То есть микроконтроллер сам прошивает ЕЕПРОМ, поэтому сам файл прошивки не содержит этих данных.

Читайте также:  N13p gs a2 чем заменить

Вкладка "OPTION BYTE" это те же самые фьюзы, как у микроконтроллеров АТтини, но менять их значения, как правило, нет никакой необходимости (фух!) — поэтому описывать их и не буду. После загрузки прошивки в программу можно подключать программатор и сам микроконтроллер или отладочную плату с ним. Для загрузки прошивки в микроконтроллер, необходимо нажать кнопку "загрузить все" (красным)

" Нет соединения с микроконтроллером…" Проверьте, правильно ли контачат провода программатора и жив ли сам чип.

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

"Чип залочен". Если залочить чип (заблокировать ему возможность записи и чтения прошивки), то нужно сначала снять защиту ( прошивка в памяти контроллера конечно потеряется).
Нужно перейти на вкладку "OPTION BYTE"( синим), убедится, что значение параметра защиты выключено (красным) и нажать на кнопку " записать данные" (зеленым).

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. Берем макетную плату, в моем случае 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)
Читайте также:  Угарные авы для стима

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

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

Стоит ознакомиться с конфигурацией платы, если это плата от 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, для меня путь:

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

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

В меню 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)

Ссылка на основную публикацию
Приватные читы для war thunder
Мод для Thunder of War (название изменено) отображает 3d контуры модели техники, делая ее видимой за препятствиями. Контуры коробки (размеры...
Почему значок оперы горит красным
Запустил браузер Opera, но обнаружил, что значок горит другим цветом – то ли красным, то ли оранжевым, то ли коричневым...
Почта фримейл укр вход
Фрімейл є першою безкоштовною поштою в Україні і до цього дня продовжує залишатися однією з найпопулярніших. Укрнет представляє користувачам скриньку...
Принтер hp laserjet m1132 mfp как сканировать
Задание параметров сканирования с компьютера Меню пуск -> устройства и принтеры -> значок принтера -> щёлкаете по нему правой кнопкой...
Adblock detector