Рейтинг
37.92
голосов: 42

О блоге

Работа и описание контроллеров STM8

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (122)

dcoder _YS_ Krieger Tabke XANDER marvin_yorke Ultrin WildCat Vga mzw kalvenolt dievgen woogle Deer ZiB neiver Leopoldius Ageofenigma bomond Daimeeo

Все читатели блога

Библиотека STM8 для DipTrace

Начал интересоваться STM8. Для полюбившегося в последнее время DipTrace не нашел готовых библиотек — решил сделать сам.


Читать дальше
  • +3
  • 31 октября 2013, 00:30
  • shilow
  • 1

Bootloader для STM8. Прошивка "по воздуху"

Представленные ниже материалы не претендуют на научную новизну и новаторство, а являются просто кратким обзором моей реализации бутлоадера для STM8 для прошивки из внешней EEPROM. В конце статьи приложен рабочий проект под IAR. Основано (скорее даже «содрано») все на AppNote от ST. Надеюсь, что кому-то поможет быстрее реализовать некоторые задумки.

Предисловие
Делал я недавно приборчик с Wi-Fi модулем на борту. Хост контроллер там стоит STM8S. Ну и встал вопрос обновления прошивки МК «по воздуху».
Обычно везде описывается вариант работы бутлоадера «на лету» с управлением от некой компьютерной утилиты, которая по какому-либо интерфейсу (UART, SPI, I2C) засылает фрагмент прошивки в МК, этот фрагмент заливается во flash, далее идет следующий фрагмент… и так пока не зальем всю прошивку. Если в процессе прошивки произошел какой-либо сбой (вырубился свет, отказал канал связи), мы спокойно этот сбой устраняем, запускаем bootloader и повторяем попытку. Автономность загрузчика в большинстве случаев ограничивается проверкой условия входа в загрузчик.

Но в некоторых случаях (например, в моем) этот вариант не катит. Например, когда нет прямого доступа к интерфейсам МК, потому что связь с ним (МК) осуществляется через некий канал связи (GSM-модуль, Wi-Fi модуль, PLC). Тогда если произошел сбой в процессе прошивки, то при следующем запуске уже некому будет установить этот самый канал связи т.к. скорее всего bootloader не потянет функционала по управлению вышеперечисленными устройствами.
Напрашивается идея сначала силами основной прошивки «сливать» «образ» новой версии куда-то (например во внешнюю EEPROM), а потом уже загрузиться под бутом и прошиваться с любым количеством попыток, т.к. даже если какой-то сбой и произойдет — из EEPROM образ прошивки никуда не денется.



Читать дальше

8L-Курс, Часть 5 - Таймеры: начало

← Часть 4 — Тактирование Содержание Часть 6 — Таймеры, внешние каналы →

Таймеры — один из самых важных элементов МК. Ни одна более-менее сложная программа не обходится без них. Все, что так или иначе связано с временными интервалами или подсчетом каких-нибудь событий, реализуется на таймерах.

В STM8L есть несколько таймеров разной сложности. Их можно поделить на три группы:
TIM1 — Это самый сложный и функциональный таймер. 16и разрядный счетчик (максимальное значение — 65535), предделитель, принимающий любые значения от 1 до 65536. Три внешних канала с комплементарными выводами для каждого… и прочие плюшки.
TIM2, TIM3, TIM5(последнего в нашем МК нет) — Чуть по-проще. Внешних каналов всего два. Делитель принимает уже не любое значение, а только степени двойки в диапазоне от 1 до 128. Счетчик по-прежнему 16и разрядный.
TIM4 — Самый простой. 8и разрядный счетчик, делитель — (тоже степени двойки) от 1 до 32768. Внешних каналов нету.

Вот сводная табличка из reference manual, которая рассказывает о характеристиках всех таймеров:


Начнем с TIM1. Он конечно сложнее, чем все остальные, но зато после него работа с другими таймерами не будет вызывать непоняток.


Читать дальше

8L-Курс, Часть 4 - Тактирование

← Часть 3 — Прерывания Содержание Часть 5 — Таймеры, начало →

Раньше мы как-то не задумывались над тем, на какой частоте работает МК и от чего тактируется — работает и славно. Задержки выбирали на глаз, не зная о тактовой частоте. Пора положить этому конец и разобраться с организацией тактирования в STM8.


Читать дальше
  • +13
  • 21 февраля 2013, 17:03
  • dcoder
  • 1

8L-Курс, Часть 3 - Прерывания, EXTI

← Часть 2 — GPIO Содержание Часть 4 — Тактирование →

Мы уже умеем работать с GPIO. Выставлять нужные уровни и читать состояния ножек, настроенных на вход. Но что, если нужно не просто прочитать состояние ножки, а быстро отреагировать на смену уровня? А если таких ножек несколько? Тут нам на помощь приходит система внешних прерываний — EXTI (EXTernal Interrupts). Она довольно гибко настраивается и позволяет получить прерывание с любой ножки МК, что дико удобно — не нужно подстраивать разводку платы под пару специальных ножек INT, как это было в большинстве AVR.


Читать дальше
  • +11
  • 09 февраля 2013, 14:35
  • dcoder
  • 1

Прикручиваем к часам на OSA энергосбережение

После публикации статьи про часы из STM8L-Discovery, под управлением OSA, у некоторых читателей возникли вопросы по поводу потребления энергии. Нелогичными эти вопросы считать нельзя, так как серия STM8L является низкопотребляющей. Про попытки снизить энергопотребление часов и мой вариант сопряжение режима Active halt с ОСРВ под катом.


Читать дальше
  • +4
  • 28 января 2013, 16:25
  • ARMag
  • 1

Часы на STM8L-Discovery и OSA

Данная статья — результат моих попыток поработать с кооперативной RTOS OSA на STM8L.
Так как просто мигать светодиодом под ОСью уж совсем примитив, неоднократно описанный в интернетах, для себя я решил начинать знакомство с OSA на проекте, более-менее приближенном к реальности. Первое, что пришло в голову, так сказать, в лучших традициях DIY — запилить часы. Тем более все необходимое на STM8L-Discovery есть — RTC с часовым кварцем, LCD и даже кнопка! Статья будет полезна тем, кто решит опробовать свои силы в освоении OSA или просто хочет переделать Discovery на часы :)
Подробности под катом...


Читать дальше
  • +5
  • 24 января 2013, 15:39
  • ARMag
  • 1

8L-Курс, Часть 2 - GPIO

← Часть 1 — Hello светодиод! Содержание Часть 3 — Прерывания →
В прошлой части мы запустили мигалку светодиодом. Теперь пришла пора разобраться с тем, как она работает и как устроен модуль GPIO в STM8.



Читать дальше
  • +4
  • 16 декабря 2012, 18:34
  • dcoder
  • 1

8L-Курс, Часть 1 - Hello светодиод!

← Часть 0 — Начало Содержание Часть 2 — GPIO →

Внимание!
Если вы читали статью про STM8L-модуль, а конкретно часть про быстрый старт, то вы увидите здесь кучу знакомого текста и читать вам будет немного скучно. И не говорите потом, что вас не предупреждали.

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

Кроме того, в этой части я хочу учинить жестокую расправу над неопределенностями: у нас есть три варианта железа: одинокая STM8L-Discovery с отладчиком, PINBOARD2+STM8L модуль (без отладчика, но с бутлоадером) или discovery + PINBOARD2. Я все устройства и примеры буду собирать на пинборде, но для тех, кто пользуется другой железкой, оставлю для каждого примера схему, чтобы можно было собрать на чем угодно.


Читать дальше
  • +7
  • 11 декабря 2012, 16:56
  • dcoder
  • 1

8L-Курс, Часть 0 (ревизия дваноль) - Начало

Содержание Часть 1 — Hello, светодиод →

True story, bro
Середина октября, понедельник, пол-пятого утра. Сижу, жую печеньки, ни о чем плохом не думаю, переписываюсь с девушкой в этом вашем вконтактике. Неожиданно в аську кто-то стучится и спрашивает про учебный курс по STM8. Я, честно говоря думал, что про сию затею все благополучно забыли за год. Оказалось, что нифига подобного: настоящие анонимусы не прощают и не забывают. Да и модуль STM8L для пинборды уже поступил в продажу: тут статьи были-бы как-раз в тему. В общем, начинаю продолжать писать свой несчастный курс.


Читать дальше