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

Наряду с Arduino у любителей микроконтроллеров сейчас популярна и линейка продуктов от компании STMicroelectronics, включающая 8-разрядные микроконтроллеры STM8 и 32-разрядные микроконтроллеры STM32 (на ядре Cortex).

Микроконтроллеры STM8 состоят из нескольких линееек:
STM8S - основная линейка,
STM8A - для автомобильной промышленности,
STM8L - со сверхнизким потреблением энергии,
STM8T - емкостный сенсор для детектирования прикосновения или приближения.

Отладочную плату с микроконтроллером STM8 на борту можно приобрести за 1 (!) доллар и даже дешевле. Я приобрел несколько таких плат  на основе микроконтроллера STM8S103F3P6 на торговой площадке ebay:
STM8S103F3P6

контакт назначение
D4 UART_CLK
D5 TX
D6 RX
RST сброс
A1 Oscin
A2 Oscin
GND земля
5V вход стабилизатора
3V3 выход стабилизатора
A3 SS
D3 Ain4
D2 Ain3
D1 SWIM
C7 MISO
C6 MOSI
C5 SCK
C4 Ain2
C3  
B4 SDA
B5 SCL

Микроконтроллер STM8S103F3P6 содержит 8 КБайт флэш-памяти с ресурсом стирания 10 000 раз, 640 байт EEPROM и 1 КБайт RAM. Тактовая частота 8-битного процессора серии STM8S составляет 16 МГц.

Для питания платы можно использовать следующие варианты:

  • подключение источника напряжением 4,5 ... 15 В к контактам + или 5V и - или GND;
  • подключение кабеля к microUSB-разъему (этот разъем используется только для питания!).

На плате установлен стабилизатор AMS1117-3.3. Вход стабилизатора соединен с контактом 5V, а выход - с контактом 3V3.

Установка среды разработки

Для программирования я использую среду разработки IdeaSTM8 от компании Cosmic Software (в версии CXSTM8 special edition package - доступна с марта 2016 года, не имеет ограничений):
IdeaSTM8

Для загрузки дистрибутива следует перейти по этой ссылке: 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:
лицензия для IdeaSTM8

Разработка программы

В качестве примера создадим программу мигания светодиодом (Hello, world! в мире микроконтроллеров) TEST, размещенным на плате и подключенным к контакту PB.5.

Создаем новый проект, выполняя команду New Application:
IdeaSTM8 создание проекта

Выбираем в качестве целевой платформы микроконтроллер STM8S103F3:
STM8 программирование

Копируем в папку проекта заголовочный файл с определениями stm8s.h, предварительно раскомментировав в нем определение используемого микроконтроллера STM8S103:

 /* #define STM8AF626x */    /*!< STM8A Medium density devices */
  #define STM8S103       /*!< STM8S Low density devices */
 /* #define STM8S903 */      /*!< STM8S Low density devices */

Создаем новый файл (tst.c) с исходным кодом:

создаем файл:
Cosmic Software

выбираем в качестве типа файла - файл с исходным кодом на C:
программа для STM8

Добавляем созданный файл в проект:
IdeaSTM8 программирование

Пишем код программы в созданном файле:

#include <stm8s.h>

static void delay(uint32_t t) //процедура задержки
{
    while(t--) {}
}

int main(void)
{
    GPIOB->DDR |= (1 << 5); //настройка контакта PB.5 на выход
    GPIOB->CR1 |= (1 << 5); //настройка контакта PB.5 как push-pull, можно пропустить
    GPIOB->ODR |= (1 << 5); //вывод 1 в порт
    while(1)
    {
        GPIOB->ODR |= (1 << 5); //вывод 1 в порт
        delay(100000UL); //задержка
        GPIOB->ODR &= ~(1 << 5); //вывод 0 в порт
        delay(100000UL); //задержка
    }
}

Для компиляции и сборки проекта следует нажать клавишу F7 или выполнить команду Build:
сборка проекта для STM8

В результате сборки в папке проекта создается файл с именем проекта и расширением .sm8 (TST.sm8).

Прошивка

Для прошивки платы я приобрел на торговой площадке ebay программатор ST-LINK V2:
ST-LINK V2

Разъем программатора имеет 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):
ST-LINK V2 контакты

При общении программатора с платой используется коммуникационный протокол SWIM (через однопроводной интерфейс - контакт SWIM).

Для преобразования файла с расширением .sm8 в готовый для прошивки в микроконтроллер hex-файл  я использую COSMIC Software Hexa Translator (chex.exe) с помощью команды:

chex -oTST.hex -fi TST.sm8  ,

где TST - имя проекта.

Полученный hex-файл (TST.hex) содержит информацию, необходимую для прошивки микроконтроллера:

:20800000820080808200000082000000820000008200000082000000820000008200000050
:20802000820000008200000082000000820000008200000082000000820000008200000030
:20804000820000008200000082000000820000008200000082000000820000008200000010
:208060008200000082000000820000008200000082000000820000008200000082000000F0
:20808000AE03FF94CD809F20FE961C0003CD80F3961C0003A601CD80C9CD80DF26EB8172FB
:2080A0001A5007721A5005721A5005AE86A089AE000189ADD45B04721B5005AE86A089AE2B
:2080C000000189ADC45B0420DE40EB03E703250EE6026A024D2607E60126017A6A01819C1F
:2080E0003D00260E3D0126083D0226043D032702A6018188F6B700E601B701E602B702E64E
:0581000003B7038481B8
:00FFFF0101

Для прошивки я использую утилиту stm8flash, для запуска которой следует выполнить команду:

stm8flash -c stlinkv2 -p stm8s103f3 -w TST.hex

Проект stm8flash размещен на GitHub: https://github.com/vdudouyt/stm8flash

Бинарная версия проекта для ОС Windows (можно взять здесь) содержит два необходимых файла:

stm8flash.exe - исполнимый файл

libusb-1.0.dll - библиотека для доступа к USB-устройствам

После запуска утилиты она выполняет прошивку программы в память и отчитывается о числе записанных байт:
прошивка STM8

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

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

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

Яндекс.Метрика