Stm8s207 как прошить
Перейти к содержимому

Stm8s207 как прошить

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

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

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

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

контакт назначение
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:

ST-LINK V2

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

STM8 программатор

При первоначальном подключении к USB-порту компьютера программатор определяется как «неизвестное устройство» с VID 0483 и PID 3748:

прошивка STM8

На сайте ST доступен драйвер для программатора — STSW-LINK009:

После его установки при повторном подключении программатор распознается как «устройство USB«:
как прошить STM8

Разъем программатора имеет 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 В

ST-LINK V2 контакты

Для подключения программатора к плате я использую 4 контакта на разъеме программатора и на плате — 3.3V(3V3), SWIM(SWM), GND, RST(NRST):

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

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

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

stm8flash.exe — исполнимый файл
libusb-1.0.dll — библиотека для доступа к USB-устройствам

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

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

Visual Studio Code

обновление прошивки STLINK

Прошивка программатора может быть обновлена с помощью утилиты, доступной для скачивания на сайте 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:
STM8 Visual Studio Code

Для удобства работы следует создать папку (например, sdcc), в которой будут располагаться файлы проектов для STM8. Затем следует добавить эту папку в рабочую область. В эту же папку помещаем файлы:

    compile.cmd — с содержимым: c:/sdcc/bin/sdcc -mstm8 —std-c99 %

В этой папке следует создать папку .vscode, в которой разместить файл tasks.json с таким содержимым:

Этот файл описывает две задачи:

  • compile — компиляция текущего открытого файла с исходным кодом (с расширением .c)
  • flash — прошивка скомпилированного ранее hex-файла (c расширением .ihx)

Выбирая соответствующую задачу («Задачи» > «Запустить задачу. «)
 программирование STM8
можно запустить:
компиляцию
компиляция STM8
прошивку
прошивка STM8

Полезные подсказки

задание базовых адресов портов:

установка режима порта (DDR — регистр направления порта):

настройка вывода N порта X (PXN) на выход

настройка вывода N порта X (PXN) на вход

вывод (ODR — регистр выходных данных):

установка вывода N порта X (PXN) в состояние «1» :

установка вывода N порта X (PXN) в состояние «0» :

подключение заголовочных файлов

STM8 UART

Вот как выглядит собранная схема из микроконтроллера, 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

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

IdeaSTM8

Для программирования под микроконтроллеры STM8 можно использовать среду разработки 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:

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

IdeaSTM8 создание проекта

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

STM8 программирование

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

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

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

Cosmic Software

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

программа для STM8

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

IdeaSTM8 программирование

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

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

сборка проекта для STM8

Для компиляции и сборки проекта следует нажать клавишу 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 принимает сигнал ИК-пульта и управляет движением модели аэролодки.

Stm8s207 как прошить

Может, случайно установили бит защиты от чтения. А если чип с али — то вполне возможно, что в нем уже что-то записано и установлен бит защиты. Китайцы любят заранее программировать м/с для устройств, а излишки таких микросхем продавать.

Перейдите на закладку OPTIONS, поменяйте состояние на «Read out protection off» и нажмите «запись». Наличие Vcap обязательно.

Защита снимется, а содержимое памяти будет стерто. После этого чип должен читаться, что будет значить, что всё, что связано с прошиванием, у вас работает.

А вот с тем, что в устройстве, вариантов нет. Китайцы названия микросхем наждаком затирают, в надежде, что это помешает другим китайцам в соседнем подвале скопировать конструкцию, а уж прошивку, не закрытую битом защиты, от них ждать точно не приходится. Не считаете — никак.

Как прошить STM8S207C8?

Добрый день.
Подскажите, спецы, как прошить данный контроллер stm8s207c8? Подпаялся к плате st-link v2 к RST,GND,SWIM,5v. На плате есть выход под разъем, без маркировки. Подпаялся по даташиту. st-link v2 китайский с алиэкспрес. Драйвера установил. Ноут его определил. stm32 st-link utility его видит, прошивку обновила. При коннекте выдает такое сообщение: Error : Cannot communicate with the device !
Check the SWIM cable connection and check all the needed pin connections on the SWIM connector.

If the application code uses Swim Disable and Reset pin as Output or has disabled SWIM Clock Divider:
Try Now to SWITCH OFF and ON the application Power Supply while NRST Reset pin is forced low.

Error : < PROGRAM MEMORY reading failed.
Ни в какую не хочет читать контроллер. Он рабочий. Случайно обновил не той прошивкой через собственное меню магнитолы. Теперь магнитола не запускается. Как его прочитать? Может нужно какой контакт на минус посадить для прошивки? Питание при попытках прошивки подавал и программатором и напрямую плату подключал. Результата нет. Пробую прошивать STVP

Stm8s207 как прошить

Головные устройства Allwinner T8 STM32 Android 8.1, 9Обсуждение
Версии MCU: STM32

  • Для сравнения устройства с конкурентами и по вопросам выбора устройств обращайтесь в раздел:Выбор и сравнение
  • Все изображения необходимо убирать под спойлер (Работа с изображениями на форуме)
  • Сообщения, не относящиеся к теме обсуждения (оффтоп), удаляются без предупреждения.

Операционная система Android 8.1, 9.0
Процессор Allwinner T8
ОЗУ 2/4GB DDR3
Внутренняя память 16/32GB
Графический сопроцессор ——
Разрешение экрана 1024*600

Все, что Вы делаете со своим устройством, Вы делаете на свой страх и риск.

Я ндекс.Диск — наполнение облачного сервиса от kumarai.
Если у вас есть прошивка и вы хотите поделится:
Для зарегистрированных пользователей — отправьте ссылку мне в QMS
Для незарегистрированных пользователей — отправьте ссылку на [email protected]

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку «Жалоба» под сообщениями, на которые необходимо добавить ссылки.

Сообщение отредактировал Олег Верещагин — 23.01.22, 15:07

Канадаптер в основном выделяет из шины три сигнала: АСС, ILL и BACK (зх короче). И выкидывает их на порты. Остальное кидает в uart. А мцу уже разбирается что это.

А про парки под Мондео история такая. Китайцы делали мцу под свои Мондео, а те которые собираются у нас идут в европейской комплектации. Поэтому парки у них оказались с другой кодировкой. (По каншине парки по верху кана закодировали в ВАР протокол). Вот garry222 и сделал багрепорт для китайцев, а просил у РедПовер чтоб они пропихнули его на завод.

Подскажи тогда по Иде, какой проц выбирать для stm7?
У меня с stm32 получается, а с7 никак 🙁

Именно новые модели я и подразумевал.

А вот это зависит от прошивки MCU. У меня «с завода» тоже не играло. Потом местные товарищи подсобили с «чужой» прошивкой — и теперь радио играет через 3-5 секунд после поворота ключа. Естественно, что для этого радио должно было играть при выключении магнитолы. MCU запоминает последний источник звука при выключении.

Сообщение отредактировал yelkvi — 08.07.19, 19:21

В прошивке редмод есть пункт настройки где изменяются штатные программы радио, видео, музыка, аукс, диск, телевидение и т.д. на свои. Какую назначите та и будет программа запускаться. Вот поставил я омега радио, штатное отключил. Иду в эту настройку и назначаю омегу штатным радио и при выборе радио с приборки у меня автоматически будет запускаться радио омега и при старте магнитолы оно будет запускаться если было включено. Оно становится штным радио. Это очень полезно для машин с каншиной и запуска программ с приборок машины. Плюс есть настройка запуска программ после запуска магнитолы, которые были запущены до выключения магнитолы. Работал у Вас навител до выключения магнитлы, если вы добавите навител туда, то магнитола будет его отслеживать и он автоматически запустится после включения магнитолы, даже если вы ходили больше слип режима и вы продолжите свой путь, как ни в чем не бывало. Там много настроек которые отсутствуют в китайских прошивках.

Добавлено 06.08.2019, 11:25:

Мы здесь обсуждаем магнитолы на платформе с мку на чипе stm8 и платой андроид, которая у всех одинакова. У вас и мку другое stm32 и материнка совсем другая и плата андроид скорее всего другая.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *