STM8 — программирование, прошивка и всё-всё-всё
Наряду с Arduino у любителей микроконтроллеров сейчас популярна и линейка продуктов от компании STMicroelectronics, включающая 8-разрядные микроконтроллеры STM8 и 32-разрядные микроконтроллеры STM32 (на ядре Cortex).
Микроконтроллеры STM8 состоят из нескольких линееек:
STM8S — основная линейка,
STM8A — для автомобильной промышленности,
STM8L — со сверхнизким потреблением энергии,
STM8T — емкостный сенсор для детектирования прикосновения или приближения.
Отладочную плату с микроконтроллером STM8 на борту можно приобрести за 1 (!) доллар и даже дешевле. Я приобрел несколько таких плат на основе микроконтроллера STM8S103F3P6 на торговой площадке ebay:
контакт | назначение |
D4 | PD4 / UART_CLK |
D5 | PD5 / TX |
D6 | PD6 / RX |
RST | сброс |
A1 | PA1 / Oscin |
A2 | PA2 / Oscin |
GND | земля |
5V | вход стабилизатора |
3V3 | выход стабилизатора |
A3 | PA3 / SS |
D3 | PD3 / Ain4 |
D2 | PD2 / Ain3 |
D1 | PD1 / SWIM |
C7 | PC7 / MISO |
C6 | PC6 / MOSI |
C5 | PC5 / SCK |
C4 | PC4 / Ain2 |
C3 | PC3 |
B4 | PB4 / SCL (шина I2C) |
B5 | PB5 / SDA (шина I2C) |
Микроконтроллер STM8S103F3P6 содержит 8 КБайт флэш-памяти с ресурсом стирания 10 000 раз, 640 байт EEPROM и 1 КБайт RAM. Тактовая частота 8-битного процессора серии STM8S составляет 16 МГц.
Для питания платы можно использовать следующие варианты:
- подключение источника напряжением 4,5 . 15 В к контактам + или 5V и — или GND;
- подключение кабеля к microUSB-разъему (этот разъем используется только для питания!);
- подключение источника питания напряжением 3,3 В к контактам 3V3 и — или GND.
На плате установлен стабилизатор AMS1117-3.3. Вход стабилизатора соединен с контактом 5V, а выход — с контактом 3V3.
Использование компилятора SDCC
При разработке под микроконтроллеры STM8 можно использовать открытый (под лицензией GPLv3) набор компиляторов SDCC (Small Device C Compiler suite) языка программирования ANSI C под множество архитектур — от Intel 8051 до STMicroelectronics STM8. Версии под различные ОС — Windows, MacOS, Linux — (текущая новейшая стабильная версия — 4.0.0) доступны на http://sdcc.sourceforge.net.
Пишем код программы в файле TST.c:
Выполняем компиляцию программы командой
При компиляции создается hex-файл TST.ihx:
Для прошивки платы я приобрел на торговой площадке ebay программатор ST-LINK V2:
При первоначальном подключении к USB-порту компьютера программатор определяется как «неизвестное устройство» с VID 0483 и PID 3748:
На сайте ST доступен драйвер для программатора — STSW-LINK009:
После его установки при повторном подключении программатор распознается как «устройство USB«:
Разъем программатора имеет 10 контактов:
Номер | Название | Назначение |
1 | RST | сброс |
2 | SWIM | SWIM-интерфейс (для STM8) |
3 | GND | земля |
4 | 3.3V | + 3,3 В |
5 | 5.0V | + 5 В |
6 | SWCLK | синхронизация (SWD-интерфейс, для STM32) |
7 | SWDIO | данные (SWD-интерфейс, для STM32) |
8 | GND | земля |
9 | 3.3V | + 3,3 В |
10 | 5.0V | + 5 В |
Для подключения программатора к плате я использую 4 контакта на разъеме программатора и на плате — 3.3V(3V3), SWIM(SWM), GND, RST(NRST):
При общении программатора с платой используется коммуникационный протокол SWIM (через однопроводной интерфейс — контакт SWIM).
Для прошивки я использую утилиту stm8flash, для запуска которой следует выполнить команду:
Бинарная версия проекта для ОС Windows (можно взять здесь) содержит два необходимых файла:
stm8flash.exe — исполнимый файл
libusb-1.0.dll — библиотека для доступа к USB-устройствам
После запуска утилиты она выполняет прошивку программы в память и отчитывается о числе записанных байт:
После прошивки указанной выше программы мигания светодиодом он начинает мигать с периодом около шести секунд.
Прошивка программатора может быть обновлена с помощью утилиты, доступной для скачивания на сайте ST — STSW-LINK007:
После запуска приложения (для Windows — ST-LinkUpgrade.exe) необходим присоединить программатор к USB-порту компьютера, нажать кнопку Device Connect — при этом отобразятся текущая версия прошивки программатора (Version) и его тип (Type), а также версия, до которой можно обновить прошивку (Upgrade to Firmware). Для запуска процесса обновления прошивки необходимо нажать кнопку Yes>>>>.
Работа в редакторе Visual Studio Code
Для написания исходного кода программы, а также для автоматизации процесса компиляции и прошивки удобно использовать бесплатный редактор Visual Studio Code от компании Microsoft (страница загрузки).
Вот как выглядит исходный код программы в Visual Studio Code:
Для удобства работы следует создать папку (например, sdcc), в которой будут располагаться файлы проектов для STM8. Затем следует добавить эту папку в рабочую область. В эту же папку помещаем файлы:
- compile.cmd — с содержимым: c:/sdcc/bin/sdcc -mstm8 —std-c99 %
n1.c ,
где c:/sdcc — папка компилятора SDCC
В этой папке следует создать папку .vscode, в которой разместить файл tasks.json с таким содержимым:
Этот файл описывает две задачи:
- compile — компиляция текущего открытого файла с исходным кодом (с расширением .c)
- flash — прошивка скомпилированного ранее hex-файла (c расширением .ihx)
Выбирая соответствующую задачу («Задачи» > «Запустить задачу. «)
можно запустить:
компиляцию
прошивку
Полезные подсказки
задание базовых адресов портов:
установка режима порта (DDR — регистр направления порта):
настройка вывода N порта X (PXN) на выход
настройка вывода N порта X (PXN) на вход
вывод (ODR — регистр выходных данных):
установка вывода N порта X (PXN) в состояние «1» :
установка вывода N порта X (PXN) в состояние «0» :
подключение заголовочных файлов
Вот как выглядит собранная схема из микроконтроллера, USB-UART преобразователя и программатора:
(1/16000000)*65536*предделитель = интервал в секундах
10 секунд = 2441 0x0989
Необходимо задать номер канала АЦП, соответствующего используемому входу (например, вывод D2 — канал 3).
Напряжение можно определить умножением считанного из АЦП значения на VCC/1023, где VCC — напряжение питания на шине 3.3V.
Например, при подключении к входу 3.3V STM выхода 3.3V преобразователя USB-UART напряжение на нем составило 3,24 В. При этом масштабный коэффициент равен 3,24/1023 = 0,00317 В.
Пример простейшего проекта, мигающего светодиодом
Разработка в среде IdeaSTM8
Установка среды разработки
Для программирования под микроконтроллеры STM8 можно использовать среду разработки IdeaSTM8 от компании Cosmic Software (в версии CXSTM8 special edition package — доступна с марта 2016 года, не имеет ограничений):
Для загрузки дистрибутива следует перейти по этой ссылке: http://cosmicsoftware.com/download_stm8_32k.php.
При этом для использования кросс-компилятора от Cosmic Software перед скачиванием необходимо пройти регистрацию, указав имя (Name), название компании (Company), страну (Other), адрес электронной почты (E-mail), а затем нажав для отправки сведений кнопку «Submit».
В версии 4.4.6 объем дистрибутива (cxstm8_FSE_stm32_32K.exe) составляет 20,7 МБайт.
Для получения годовой (затем продляемой) бесплатной лицензии при инсталляции необходимо нажать кнопку «Register on the Web», что приведет к отправке файла лицензии на адрес электронной почты, указанный при регистрации. Лицензия привязывается к компьютеру, на котором установлен компилятор (с помощью HOSTNAME, HOSTID и т.п.).
После получения файла license.lic следует разместить его в папке \COSMIC\FSE_Compilers\CXSTM8\License:
В качестве примера создадим программу мигания светодиодом (Hello, world! в мире микроконтроллеров) TEST, размещенным на плате и подключенным к контакту PB.5.
Создаем новый проект, выполняя команду New Application:
Выбираем в качестве целевой платформы микроконтроллер STM8S103F3:
Копируем в папку проекта заголовочный файл с определениями stm8s.h, предварительно раскомментировав в нем определение используемого микроконтроллера STM8S103:
Создаем новый файл (tst.c) с исходным кодом:
создаем файл:
выбираем в качестве типа файла — файл с исходным кодом на C:
Добавляем созданный файл в проект:
Пишем код программы в созданном файле:
Для компиляции и сборки проекта следует нажать клавишу F7 или выполнить команду Build:
В результате сборки в папке проекта создается файл с именем проекта и расширением .sm8 (TST.sm8).
Для преобразования файла с расширением .sm8 в готовый для прошивки в микроконтроллер hex-файл я использую COSMIC Software Hexa Translator (chex.exe) с помощью команды:
где TST — имя проекта.
Полученный hex-файл (TST.hex) содержит информацию, необходимую для прошивки микроконтроллера:
Для прошивка этого файла в память микроконтроллера можно использовать описанный выше программатор ST-LINK V2.
Мои проекты на STM8
Преобразователь PS/2 — UART
Преобразователь для проекта cpm4nano позволяет подключать PS/2-клавиатуру через последовательный порт (UART).
Дистанционно управляемая аэролодка
Микроконтроллер STM8 принимает сигнал ИК-пульта и управляет движением модели аэролодки.
Источник ультрафиолетового излучения из лампы ДРЛ
Микроконтроллер STM8 управляет питанием ультрафиолетовой лампы.
Продолжение следует
Источник