Программатор для stm8 своими руками

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:

После запуска приложения (для WindowsST-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

  • flash.cmd — с содержимым: stm8flash -c stlinkv2 -p stm8s103f3 -w %1
  • stm8flash.exe
  • libusb-1.0.dll
  • В этой папке следует создать папку .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 управляет питанием ультрафиолетовой лампы.

    Продолжение следует

    Источник

    Оцените статью