Программа для прошивки stm8
Итак, сегодня распишу немного по тому, как программировать ваши микроконтроллеры, из которых вы сделали всевозможные устройства. Не будем же мы только отладочную плату мучать .
Контроллеры STM32 можно прошить двумя путями.
1) Через встроеный бутлоадер (бутлоадер, это такая маленькая программка внутри каждого микропроцессора STM32, которая прикидывается программатором — это если по простому). Прошивка в таком варианте происходит через UART (для связи с компьютером используется переходник USB>COM)
2)Внешним программатором. Из внешних программаторов на данный момент есть большой выбор. Это может быть и ваша отладочная плата STM32 Discovery, и китайский аналог ST-LINK V2 mini, и оригинальный ST-Link.
Первым вариантом я не пользовался, но сложного в нём вроде ничего нет. Нужно скачать утилиту STM32 ST-LINK Utility и на вашем прошиваемом микроконтроллере выставить определённый сигнал на ножке\ножках BOOT0\BOOt1. Допустим возьмём для примера самый дешёвый и простой микроконтроллер STM32F030F4P6 в корпусе TSSOP20. У него есть ножка BOOT0, которую если мы замыкаем на массу — то у нас контроллер будет прошиваться через SWD (то есть от внешнего программатора), а если на эту ножку подать напряжения питания, то контроллер будет стартовать с встроенного бутлоадера, и ждать пока мы его прошьём через UART, то есть с помощью программы ST-LINK Utility.
Вторым вариантом намного проще работать, так как помимо того что вы можете прошивать свои микроконтроллеры так ещё и в режиме реального времени отлаживать свои программы (дебажить))
Для прошивки в таких случаях используется всего 4 ножки (по минимуму)
1)Vcc — питание 3 Вольт
2)VSS(Gnd) — масса
3)SWCLK
4)SWDIO
Такой вариант подключения для прошивки используется в том случае, если вы не сконфигурировали ножки SWCLK и SWDIO в качестве портов ввода-вывода. Если же вы эти ножки используете в качестве портов ввода-вывода, то прийдётся ещё подключать "физичесу" линию сброса. — RST . В таком варианте у нас получается 5 проводов для подключения
1)Vcc — питание 3 Вольт
2)VSS(Gnd) — масса
3)SWCLK
4)SWDIO
5)NRST
Вот так выглядит распиновка на плате STM32F4Discovery разъёма для программирования внешних микроконтроллеров. Пин VDD_Target является пином, для снятия показаний напряжения с прошиваемого устройства. Этот если по простому — для согласования уровня напряжений между программатором и прошиваемым устройством.
Вот так выглядит разъём программатора ST-LINK V2 mini. В нём есть дополнительные средства для работы с STM8 и т.д, поэтому для работы с STM32 нам нужны пины
1)Vcc — питание 3 Вольт
2)SWDIO
3)VSS(Gnd) — масса
4)SWCLK
10)NRST
Вот так выглядит схема подключения для прошивки нашего простейшего микроконтроллера STM32F030F4P6
Как видите, никаких заморочек нет. На этом думаю всё, если будут вопросы, то пишите в коментах, я добавлю эти нюансы в статью.
STM8S103F3P6 и ST-Link2
Если в прошлый раз я писал о работе с STM8 из под Linux, то сейчас мне бы хотелось раскрыть этот вопрос с позиций Windows.
В качестве ОС я выбрал "старушку" Windows XP SP3, а в качестве "подопытного" чипа, так же как и в прошлый раз, у меня STM8S103F3P6 распаяный на плате как на картинке слева. Используемый мною программатор, это китайский клон ST-Link2.
Этот пост можно назвать "быстрым стартом" STM8в Windows.
1. Драйвера
Первым делом нужно будет поставить драйвера для программатора ST-Link2. Для этого заходим на домашний адрес компании ST в раздел данного программатора:
Проматываем страницу книзу, в раздел ПО:
после чего следует щелкнуть по STSW-LINK009. В результате попадем на страницу драйвера:
Как видно, драйвер предлагается для OC: Windows XP, Windows7, Windows8. Десятка похоже, что в пролете ;)
Кликнув по кнопке Download, получаем zip архив. Но т.к. как я уже говорил, что фирма ST сурова, то и никаких инсталятов со слайд-щоу и словами благодарности "за то что выбрали наше предложение", в архиве вы не найдете. Поэтому ставятся они по-другому.
Нужно вставить ST-Link2 в USB порт и дождаться когда запуститься мастер установки драйверов. В появившемся диалоговом меню следует отказаться от соединения с Window Update и в качестве источника драйверов указать распакованную папку скачанного архива.
После чего система сама найдет подходящие для себя драйвера и установит их:
Т.о. программатор начнет отображаться в диспетчере устройств:
2. Флэшер
После того, как драйвер программатора установлен, можно попытаться что-то запрограммировать. Но с софтом ситуация в STM8 я бы сказал, что не простая. Позволю себе процитировать компанию "Компэл".
Пакет ST Toolset включает в себя среду разработки ST Visual Develop и отдельную программу для более функционального внутрисхемного программирования flash-памяти микроконтроллеров ST Visual Programmer. Среда разработки ST Visual Develop имеет встроенный инструментарий для разработки программного обеспечения на языке assembler, но у нее также имеется возможность подключения и использования Си-инструментария от Raisonance и Cosmic software. Стоит заметить, что все четыре среды с Си-инструментарием предоставляют возможность использования с некоторыми ограничениями, а именно– по загружаемому коду во flash-память. УRaisonance оно составляет 16Кбайт, у Cosmic software– 32Кбайт, а у IAR– 8Кбайт или полную версию с 30-дневным ограничением.
Промотав cтраницу книзу и кликнув на Download получите zip-архив ST Toolset. После распаковки и установки у вас появятся ST Visual Developer и ST Visual Programmer. Первый нас не интересует, а второй следует запустить, это флешер. При запуске появиться окно конфигурации:
Выбрав тип микроконтроллера и программатор, попадаете в главное окно программы.
Важный момент: микроконтроллеры STM8 имеют единую шину памяти(адресная шина). Т.е. нет разделения на flash память и оперативную. Т.е. разделение есть на внутреннем уровне т.к. архитектура микроконтроллера все-таки гарвардская, но внешне, архитектура выглядит как фон Неймовская. Чтобы вспомнить, чем отличается одно от другого, приведу цитату из википедии:
В чистой архитектуре фон Неймана процессор в каждый момент времени может либо читать инструкцию, либо читать/записывать единицу данных из/в памяти. Оба действия одновременно происходить не могут, поскольку инструкции и данные используют один и тот же поток (шину). В компьютере с использованием гарвардской архитектуры процессор может читать инструкции и выполнять доступ к памяти данных одновременно, без использования кэш-памяти. Таким образом, компьютер с гарвардской архитектурой при определенной сложности схемы быстрее, чем компьютер с архитектурой фон Неймана, поскольку шины инструкций и данных расположены на разных, не связанных между собой физически, каналах. Исходя из физического разделения шин команд и данных, разрядности этих шин (следовательно, и адресные пространства) могут иметь различные значения и физически не могут пересекаться друг с другом.
Т.е. благодаря гарвардской архитектуре в AVR одна команда выполнялась за один такт.
Скриншот ST Visual Programmer:
Оперативка нас пока не интересует, на скриншоте красными стрелками помечены кнопки чтения и заливки прошивки.
Попытка прочитать что-то без программатора приведет к ошибке:
С программатором, но без микроконтроллера, тоже приведет к ошибке:
Пример успешного чтения прошивки:
Полученную прошивку можно тут же обратно записать в микроконтроллер или сохранить в файл. Можно открыть любую другую прошивку в формате ihex и из программы прошить микроконтроллер.
3. Среда разработки IAR
После установки, вам предложат заполнить анкету и выбрать тип лицензии. После чего на email придет ссылка с лицензионным ключом. Введя этот ключ при первом запуске IAR вы попадаете в главное окно программы.
-
Хорошие обзоры по интерфейсу IAR можно прочитать здесь:
По второй ссылке, хоть речь идет и о IAR для ARM, большая часть посвящена самой среде разработке IAR. Я не буду повторять описанного там материала, а буду на него опираться.
Сейчас наша задача составить простой Blink, скомпилировать его и загрузить в микроконтроллер. Для этого сначала нужно создать новый проект:
затем, задать параметры проекта:
после чего откроется рабочее окно, где слева будет браузер проекта, в центре текстовый редактор, в снизу окно для логов. На панели инструментов не трудно будет найти кнопки компиляции и загрузки проекта в микроконтроллер:
Но прежде, чем что-то компилировать, следует сначала настроить проект. Поэтому в браузере проекта следует щелкнуть правой кнопкой по названию проекта, и открыть Options
где первым делом, во вкладке target следует выбрать целевой микроконтроллер:
а в качестве отладчика ST-LINK
Так же полезно будет зайти в опции IAR в настроить окно вывода сообшений:
После чего можно уже будет нажать на кнопку компиляции:
В нижнем окне логов появится отладочная информация.
Плата STM8S103S103F3P имеет два светодиода Один выполняет роль индикатора питания, другой подтянут к пину PB5(да, как в Arduino pin13).
Попробуем написать программу для мигания этим светодиодом:
Закомментируем сначала функцию delay, скомпилируем проект, подключим ST-Link с микроконтроллером и нажмем зеленый треугольник "Debug and Download" .
и попадем в окно отладчика. Справа будет ассемблерный листинг программы загруженной в микроконтроллер, слева на панели инструментов появятся кнопки для управления пошаговой отладкой. Нажимая "Step over" раз за разом, светодиод будет на плате будет то загораться то, гаснуть.
Раскомментиров delay, скомпилировав и загрузив прошивку еще раз в микроконтроллер, на панели отладки можно будет нажать на красный крестик. Тогда программа запустится на выполнение и светодиод начнет периодически мигать с интервалом примерно 1/5 сек.
Резюмируя можно сказать, за небольшую сумму (170 руб за ST-Link2 + 68 руб за плату STM8S103F3P6) получили в свои руки достаточно профессиональную связку железа и софта, с которыми можно сделать многое.
Работая с AVR и PIC можно чувствовать себя довольно уверенно. Тут и обширная документация, множество книг, большое комьюнити, изделия в "любительских" DIP корпусах. всего этого этого в STM8 нет.
Так стоит ли связываться с этой серией микроконтроллеров? Вопрос ни разу не праздный, и ответ на него должен знать каждый, кто собирается заниматься микроконтроллерами STM8.
В статье "Восемь преимуществ STM8", на этот вопрос пробует ответить сама компания STMicroelectronics. Я же немного выжму воду и перепечатаю резюмирующую картинку:
Сразу замечу, что самые интересные камни, это A и L серия, но баловаться можно и на S-серии "общего назначения". Так что же там такого замечательного?
16 тактов на STM8, как говорится, почувствуй разницу.
Лично для меня, аппаратное умножение и деление, стало решающим фактором. Если ты делаешь робота, то там считать надо будет не просто много, а очень много, причем делать надо будет в режиме реального времени. И задержка на 255 тактов тут как бы совсем некстати.
2) Цена. Этот фактор часто приводят как аргумент в пользу STM8. Не знаю, насколько это важно для конечного пользователя, но все же.
Давайте посмотрим, так ли страшен черт, как его малюют.
Микроконтроллеры STM8 не выпускаются в DIP корпусах, в макетку их не поставишь, но тут на помощь приходит братская Китайская Народная Республика, которая поставляет в наши суровые края такие платы:
mbed STM8S103F3P6
Микроконтроллер в корпусе SO20 по сути запаянный в переходник SO20 => DIP20. Стоит такая штука н Ali около бакса, включая доставку. Разъем microUSB, как понял, только для питания. Питается плата от 3.3 Вольт. Гребенка для программатора напаяна уже мною.
Прошиваются STM8 микроконтроллеры через одно-проводной интерфейс - SWIM(Single Wire Interface Module). В качестве программатора сгодится клон ST-LINK v2:
Стоит такой в пределах двух баксов, "шьет" STM8 и STM32.
Компилятор будем использовать SDCC, и с этого начинаются сложности.
Для работы со своими микроконтроллерами, фирма STMicroelectronics предоставляет готовые исходники с различными примерами: STM8 Embedded Software
примеры программ для STM8 предоставляемые фирмой STMicroelectonics
Из этого набора, нас сейчас будет интересовать стандартная библиотека для работы с периферией STM8S/A Standard Pirepheral Library
Не спешите скачивать ее, хотя для ознакомления можно и скачать. Библиотека в текущей версии 2.2 не поддерживает SDCC компилятор. Можно писать программы и без нее, но поначалу это будет несколько тоскливо, да и опять же она своими макросами вводит подобие стандарта на синтаксис для STM8 программ. Здесь: Компилятор SDCC для STM8 в linux я нашел раннюю версию библиотеки за номером 2.1 которая еще SDCC поддерживает(если точнее, в 2.2 идет парсинг макросов на предмет соответствия тому или иному компилятору. как не трудно догадаться, SDCC среди них нет). На случай, если ссылка побьется в оригинальном посте перезалил архив на свое облако: stm8pack.zip
Скачиваем архив, распаковываем, и находим файл leds.c
это такая версия Blink для STM8. Здесь GPIO, по аналогии с Arduino - это цифровые пины. Про регистры и порты можно почитать здесь: 8L-Курс, Часть 2 - GPIO
Здесь пины 3 и 4 порта С настраиваются на передачу в контрофазе, затем в цикле их значения инвертируются, в качестве задержки(delay) используется простой цикл.
На выходе получаем целый набор файлов:
Наша прошивка будет в файле leds.ihx. Прошивать будем с помощью: stm8flash
Вот и все. Можно подключать светодиоды к пинам С3 и C4, при расчете резистора для светодиода, необходимо исходить из того, что логическая единица в случае использования платы с STM8S103F3P6, будет равняться 3.3 Вольтам.
Как всем известно, с марта этого года компилятор COSMIC for STM8 стал полностью бесплатен и без ограничений на размер генерируемого кода. Он имеет полную поддержку SPL(Standard Peripheral Library) и фирменой среды разработки - STVD(ST Visual develop IDE).
К сожалению, Cosmic работает только под операционными системами Windows, и для активации требует лецензионный ключ который можно прождать несколько дней. С другой стороны, stm8flash в Linux не умеет прошивать STM8L151C8, а с COSMIC через виртуалку вполне можно работать, да из под Wine он тоже запускается.
В качестве целевого чипа я буду использовать STM8S103F3P6, изредка переключаясь на STM8L051/STM8L151 там, где есть необходимость.
1) Установка и настройка среды разработки
Сначала нам нужно скачать SPL и STVD. Будем считать, что драйвер ST-LINK v2 уже установлен. Заходим на сайт фирмы ST Microelectonics https://my.st.com, регистируемся или логинимся, и в стоке поиска вводим: "STM8S103F3". В появившимся окне кликаем по ссылке с нужным чипом:
Открывшуюся страницу проматываем вниз до пункта "Tools and Software", и щелкаем по вкладке "EMBEDDED SOFTWARE":
В открывшийся таблице нас будет интересовать пункт "STM8S/A Standerd peripheral library":
Щелкаем и скачиваем:
Точно также, поиском, по например: STM8L051F3, можно найти SPL для L-cерии:
STVD находится поиском по самому себе:
В придачу нам пытаются втюрить копилятор для STM32 с ограничением в 32 Кбайта. Придется брать;)
Однако, прежде нам предлагают заполнить анкету:
После закрытия "блокнота", появится текст который который следует скопировать в тело емайлa:
Что и было сделано в свое время емэйлом, в аттаче которого содержался ключ:
В самом емэйле написано, что ключ следут скопировать в папку с программой Cosmic.
Выполнив все рекомендации можно будет для проверки запустить Cosmic, и если никаких пердупреждений не появилось, значит все номрально. Если же нет, по появится окно, через которое попросят указать путь к ключу. От Cosmic нам нужен будет только компилятор, поэтому программу можно будет закрыть и запусить STVD:
Через меню->File->New Workspace создаем новый проект:
Задаем название workspace'а и выбираем каталог:
Пишем имя проекта, в Toolchain из выпадающего списка выбираем "Cosmic STM8", указываем путь к компилятору:
Выбираем тип микроконтроллера:
В древовидном списоке проекта, в source файлах, находим main.c и двойным щелчком отрываем его. Пробуем скомпилировать проект щеклнув по кнопке Build(F7):
Теперь нужно будет скопировать SPL в папку проекта:
Кроме того пондобиться скопировать файл stm8s_conf.h из папки Project/STM8S_StdPeriph_Template в папку inc:
Осталось дело за малым, добавить SPL в проект. Для этого, в древовидном списоке проекта, следут щелкнуть правой кнопкой мышки на "Include Files" и выбрать опцию "Add Files to Folder. "
После чего выбрать заголовочные файлы SPL:
Теперь добавляем в текст программы заголовочный файл stm8s.h и пробуем персобрать проект:
Здесь предлагается раскоментировать строку со своей линейкой чипов. Однако более грамотно будет задать это через свойства проекта. Для этого через меню->Project->Settings. задаем нужный define в свойствах Си компилятора:
Пробуем пересобрать проект еще раз, и в этот раз все должно пройти успешно:
Теперь можно начинать программировать. Для начала, попробуем добавить вызов функции GPIO_DeInit(GPIOB), и скомпилировать проект:
И снова получаем ошибку, на этот раз от линковщика. Что бы ее испрать, в "Source Files" нужно добавить файл stm8s_gpio.c:
Жмем "Rebuild All" и снова получаем ошибку:
В этот раз все в порядке:
2) Примеры для STM8S103F3
Состовляем простейший blink:
Теперь можно подключить программатор к компьютеру. Чтобы загрзить прошивку в чип и приступить к отладке, в меню->Debug Instrument->Target Settings. выберем Swim ST-Link, после чего можно будет нажать на кнопку начала отладки на панели инструментов:
Панель отладки станет активной, и откроется окно с ассемблерным кодом. Мы можем нажать на восклицательный знак, дав команду на выполнение - Run, или мы можем нажать на красный крестик завершая сеанс отладки, после чего микроконтроллер перезагрузится и начнет выполнение программы:
Зеленый светодиод начнет периодически мигать.
Попробуем добавить тактирование. Для этого в Source Files добавим файл stm8s_clk.c, а программу приведем к следующему виду:
После двух медленных миганий светодиода, частота мигания должна ускориться:
Теперь о прерываниях. По мотивам поста STM8S+STM8L+SDCC+SPL: функции delay_ms() и delay_us() на таймере TIM4 попробуем составить Blink с задержкой по таймеру TIM4. Для этого, в директорию проекта нужно будет добавить заголовочный файл main.h с объявлением обработчика прерывания:
Этот заголовочный файл нужно будет добавить в "Include Files" проекта.
Файл main.c будет такого содержания:
Само собой, файл stm8s_tim4.c должен быть добавлен в Source Files проекта.
Осталось изменить пару строк в файле stm8_interrupt_vector.c
Нужно добавить объявление заголовочного файла main.c:
И добавить имя функции-обработчика 23-го прерывания в таблицу векторов:
Теперь можно собирать проект нажав на кнопку "Rebuild All" и загрузить в чип нажав значек "D" на панели отладки. Должно работать.
При возникновении проблем, на обратчике прерывания можно поставить точку остановки, и нажав Run(восклицательный знак на панели отладки), проследить за выполнением кода:
Кроме того, открыв вкладку Console мы, попадем в консоль прекрастно знакомого отладчика gdb, с возможностью управления прогаммой в ручном режиме:
Теперь попробуем включить UART интерфейс. Как не сложно догдаться, первым делом потребуется добавить файл stm8s_uart1.c в "Source Files".
Исходник main.c примет следующий вид:
Результат работы выглядит как-то так:
На этом думаю можно остановиться, основные вопросы использования компилятора Cosmic я постарался разобрать.
3) Примеры для STM8L151C8
В L-серии, так же как и в STM32 чипы делятся по размеру флеш-паняти. 151-я линейка делится на Medium-density с рамером флеш-пямяти 32 Кбайта и на High-density с размерм флеш-пямяти 64-Кбайта. STM8L151C8 относится к high-density чипам:
Поэтому в опциях препроцессора слеует указать STM8L15X_HD:
Простейший Blink будет выглядить так:
Здесь следует добавить в проект файл stm8l15x_gpio.c.
Теперь добавим к Source Files файл stm8l15x_clk.c а в main.c добавим фукции настройки скоростного генератора - HSI:
Светодиод начал мигать значительно быстре.
Чтобы добавить прерывание по таймеру TIM4, нужно добавить в проект заголовочный файл main.h. Его содержимое тоже, что и для STM8S103F3:
Так же должен быть добавлен к Source Files файл stm8l15x_tim4.c.
В файле stm8_interrupt_vector.c дожен быть объявлен заголовочный файл main.h, а в таблице прерываний обраотчик должен быть объявлен как 25-е прерывание, а не 23-е как stm8s103f3.
Тогда Blink с задержкой на таймере TIM4 для STM8L151C8 будет выглядить так:
Первый UART в STM8L151C8 висит на ножках 41(RX) и 42(TX). Для его использования в Source Files следует добавть файл SPL - stm8l15x_usart.c
It encompasses traditional integrated development environments – IDEs with C compilers and debuggers complemented by ST's STM-STUDIO, run-time variable monitoring and visualization tool to fine tune the debugging and validation of applications.
C compilers are available from Cosmic, IAR and Raisonance, with free versions up to 32KB of code.
- Solutions
- Browse all Audio Solutions
- Solutions
- Browse all Connectivity Solutions
- Solutions
- Browse all Human Machine Interface (HMI) Solutions
- Solutions
- Browse all Lighting Solutions
- Solutions
- Browse all Motor Control Solutions
- Solutions
- Browse all Power & Energy Management Solutions
- Solutions
- Browse all Safety & Security Solutions
- Solutions
- Browse all Sensing Solutions
- Tools & Software
- Tools & Software
- Browse all Calculators, Selectors, Simulators
- Tools & Software
- Browse all Development Tools
- Development Tools
- Browse all Hardware Development Tools
- Development Tools
- Browse all Software Development Tools
- Tools & Software
- Browse all Ecosystems
- Ecosystems
- Browse all AutoDevKit
- Ecosystems
- Browse all STM32 Open Development Environment
- Tools & Software
- Browse all Embedded Software
- Embedded Software
- Browse all MCU & MPU Embedded Software
- Embedded Software
- Browse all MEMS and Sensors Software
- Tools & Software
- Browse all Evaluation Tools
- Evaluation Tools
- Browse all Product Evaluation Tools
- Evaluation Tools
- Browse all Solution Evaluation Tools
- Tools & Software
- Browse all Mobile Applications
- Tools & Software
- Browse all Partner Products and Services
- Partner Products and Services
- Browse all Boards
- Partner Products and Services
- Browse all Development Tools
- Partner Products and Services
- Browse all Hardware Components
- Partner Products and Services
- Browse all Services
- My Account
- My Space
- My Account
- Logout
Please click on the link inside the email we have just sent you to confirm your subscription. If you did not receive an email from us, please check your spam box.
Sorry! Your browser is out-of-date
- are more secure and protect better during navigation
- are faster
- are more compatible with newer technologies
- provide a better experience and features
So why not taking the opportunity to update your browser and see this site correctly?
Читайте также: