STM8 — введение и начало работы.

Вот и случилось, наконец то добрался я допрежде  новенького ещё для меня чипа, до семейства популярных нынче чипов STM8. Раздобыл платку STM8-Discovery. И следовательно буду теперь периодически выкладывать статейки, по мере наличия времени про это семейство STM8 чипов по мере желания или новых достижений с этим чипом. Первая статейка про STM8 — «Введение в STM8 и начало работы в этими чипами«, вернее пост в котором будет все что нужно для начала и ознакомления с этими чипами. В общем будет приведена тут общая информация по STM8 путем компиляции всякостей с тырнета включая копипасты и линки-пронырки. Решил навоять статейку, для себя и для вас. Надеюсь получится годный и интересный результат.

 

История и состояние дел на сегодня

Линейка микроконтроллеров STM8 заменила STR7 в 2008 году. И на сегодня она состоит из трех семейств: для автомобильного, низкопотребляющего и общего применений. Это, соответственно, STM8A, STM8L и STM8S. Общая же номенклатура составляет более 160 позиций(может и больше, так как ST весьма динамично и енергично заполняет рынок своими чипами), и компания постоянно работает над расширением каждой линейки.

Не смотря на то что на рынке наметилась тенденция перехода на 16/32-битные микроконтроллеры, 8-битные все еще составляют основную часть рынка, и в ближайшее десятилетие их доля останется значительной. Стоит заметить что фарш который внутри чипов STM8A, STM8L и STM8S настолько обилен, что эти чипы ярко выделяются среди своих конкурентов с громкими именами типа Микрочипа, Атмела, Тексас инстраментса и им подобным… Для работы с STM8 все так же как и для других чипов нужен выбор правильного для своей задачи чипа и собственно инструментарий.

Инструментарий для работы

Для работы с любым микроконтроллером, и STM8 — в частности, нам понадобятся отладочный комплект и среда разработки c Си-инструментарием. Что касается сред разработки это отдельная статья и тут пожалуй упомяну лишь поверхностно. В качестве отладочного комплекта можно использовать любой из предоставляемых комплектов как от ST, так и от сторонних производителей. ST сделал мощный пиар-ход в истории рекламы електронных компонентов, и выбросина на рыкок дешёвые комплекты для начала работы с этим семейством, называется — STM8S-Discovery. Стоимость STM8S-Discovery сравнима в ведром гвоздей, следовательно она стала доступна большому колличеству людей в короткий срок. (Хотя мне она досталась еще дешевле ;) мне еёподарил один хороший человек.)

Внешний вид STM8S-Discovery представлен на рисунке рядом.

Выбор в сторону STM8S-Discovery не случаен, он предсказуем и вызван, в первую очередь, низкой стоимостью комплекта (меньше $13), его легкой доступностью и дальнейшей пригодностью. Комплект состоит из двух частей. Одна — это контроллер STM8S105С6 со светодиодом, сенсорной кнопкой и разъемами, на которые выведены все свободные порты ввода/вывода. Вторая — программатор-отладчик ST-Link c USB-интерфейсом. Если внимательно посмотреть на изображение отладочного комплекта, то можно увидеть, что с помощью небольших усилий его можно разделить на две независимые части, что позволит в дальнейшем использовать отделенный ST-Link для программирования и отладки своих собственных разработок. На борту отладочного комплекта находится микросхема микроконтроллер STM8S105С6: 32 Kbytes — Flash, 1Kbytes- EEPROM(300 kcycles), RAM: — Kbytes. Кроме замечательного микроконтроллера на борту мы получаем выведенные наружу все пины микроконтроллера и «сенсорную кнопку» на плате, с одним светодиодом. Этого должно хватить для многих начальных разработок.

Всю необходимую документацию можно посмотреть и скачать по ссылке.

Архитектура:

8-битная архитектура STM8 обладает высокой производительностью, которая достигается благодаря наличию 16-битных индексных регистров, линейного адресного пространства 16 Мбайт. Ядро построено по Гарвардской архитектуре, шина памяти команд имеет разрядность 32 бита, большинство команд извлекаются за один цикл. Кроме того, используется трехступенчатый конвейер. Всего имеется 80 команд, большинство из которых выполняется за один цикл тактового сигнала, что позволяет получить производительность 16 CISC MIPS на тактовой частоте 16 МГц. При разработке архитектуры особое внимание уделялось оптимизации, а точнее — минимизации отношения мА/МГц, то есть энергопотребления в активном режиме.

Архитектура STM8 сочетает в себе вкусную «фаршировку» которая остается почти неизменной на протяжении всей линейки. Вот типичная архитектору представленная поблочно для STM8S105С6.

 

Выбор подходящего чипа:

Итак, изделия могут быть основаны на мощных микрокотроллерах и на слабеньких, следовательно на дорогих и на дешевых. Замечательно что на STM8S-Discovery есть STM8S105С6, но если посмотреть на его стоимость то становится очевидно что для серийных изделий он не всегда подойдет. Но лично меня интересует куда более скромный чип, и благо что есть возможность его найти.

Есть еще смысл упомянуть про соседнее семейство. Семейство STM8L, содержит 26 устройств, разделенных на три линейки в зависимости от производительности и функциональности (рисунок 1). Всё семейство STM8L микроконтроллеров выглядит привлекательно и имеет не значительные отличия между чипами всего семейства, однако они есть.

Все три линейки STM8L производятся по технологии 130 нм, разработанной для получения ультранизких токов утечки. Уникальным свойством ядра является возможность его работы с максимальной производительностью во всем диапазоне питающих напряжений от 1,65 до 3,6 В. Встроенный регулятор напряжения дает дополнительную гибкость выбора уровня напряжения питания.

Известно, что для снижения энергопотребления устройства система должна управляться прерываниями. Для этого в микроконтроллерах STM8L реализован мощный контроллер прерываний. Разрешается вложенность прерываний, поддерживаются три уровня приоритетов. Всего выделено 32 вектора прерываний (в STM8L101 до 26), 11 из которых могут использоваться для 40 внешних событий (в STM8L101 — 10 векторов для 29 событий).

В линейках микроконтроллеров STM8L151 и STM8L152 присутствует контроллер прямого доступа к памяти (DMA), с помощью которого организуется работа периферийных устройств без участия ядра. Четыре канала DMA используются такими периферийными устройствами, как АЦП1, ЦАП, I2C1, SPI1, USART1 и четыре таймера. Эта возможность позволяет значительно сократить энергопотребление, отключив Flash-память и ядро и оставив только необходимые периферийные устройства в активном состоянии.

12-битный АЦП имеет 25 мультиплексированных каналов (включая один «быстрый» канал), встроенный термодатчик и генератор опорного напряжения. Время преобразования составляет 1 мкс при тактовой частоте системы 16 МГц. Время и точность преобразования задаются программно. АЦП может работать в режиме однократного и последовательного преобразования, а также в режиме автоматического преобразования группы выбранных каналов.

12-битный ЦАП содержит выходной буфер и может синхронизироваться с помощью таймера TIM4. ЦАП поддерживает работу с DMA, запуск преобразования может производиться по внешнему событию.

Для микроконтроллеров, использующихся в портативных устройствах, где также энергопотребления в активном режиме должно быть минимальным, очень важно наличие часов реального времени (RTC). Обычно по RTC устройству «программа ориентируется во времени» — когда выходить из «режима сна», производить измерения, расчеты и снова «засыпать». В STM8L часы реального времени являются независимым таймером, программируемым в двоично-десятичном формате. Шесть байтов содержат информацию о секундах, минутах, часах, дне недели, дне месяца, месяце, годе. Автоматически производится коррекция, связанная с високосным годом. Периодические прерывания могут генерироваться как каждую секунду, минуту и т.д., так и каждый год. Энергопотребление RTC составляет 0,9 мкА (1 мкА при использовании календаря).

Важным свойством микроконтроллера является гарантия работы аналоговых периферийных устройств при понижении напряжения питания Vdd до 1,8 В, что дает возможность использовать полную функциональность микросхемы во всем диапазоне Vdd.

К другим методам снижения энергопотребления относятся использование низкомощной встроенной энергонезависимой памяти и множества режимов сниженного энергопотребления, в число которых входит активный режим (с энергопотреблением 5,4 мкА), ждущий режим (3,3 мкА), активный режим остановки с работающими часами реального времени (1 мкА) и режим остановки (350 нА). Микроконтроллер может выходить из режима остановки за 4 мкс, позволяя тем самым максимально часто использовать режим с самым низким энергопотреблением. В целом новое семейство обеспечивает динамическое потребление тока порядка 150 мкА/МГц.

Все микроконтроллеры внутри семейства программно, а многие — и аппаратно совместимы, что позволяет легко оптимизировать разрабатываемое устройство по производительности, функциональности и цене. Если же, по какой-либо причине, производительности 8-битного ядра будет недостаточно, можно легко перейти на 32-битные микроконтроллеры STM32, так как периферийные устройства STM32 и STM8L идентичны.

Итак, с поверхностным обзором STM8L закончим и вернемся к STM8S, как к более дешёвому и доступному семеству чипов.

 

Выбор нужного чипа

Для начала вам стоило бы посетить сайт производителя.

  • The Value line, STM8S00, is the entry level series with a basic feature set.
  • The Access line, STM8S10, offers more features and a bigger variety of packages.
  • The Performance line, STM8S20, features a full set of peripherals and provides performance for medium to higher-end applications.
  • The Application specific line, STM8S90, provides more analog features and performance.

Как выбрать микроконтроллер по корпусу и объему Flash:

Маркируются микросхемы так, например: STM8S 103 K 3 T 6 C

Расшифровка: STM8S – семейство STM8S

103 – код подсемейства:
103, 903 — low-density
105 – medium density
207, 208 – high density (у 208 есть beCAN)

K – число выводов корпуса:
K – 32
S – 44
C – 48
R – 64
M – 80

3 – Объем Flash-памяти программ:
3 – 8 Кбайт
4 — 16 Кбайт
6 — 32 Кбайта
8 — 64 Кбайта
B – 128 Кбайт

T – тип корпуса:
T – LQFP
B – SDPI
U – VFQFPN

6 – Рабочий температурный диапазон:
6 — -40…+85
3 – -40…+125

C – Шаг выводов:
нет буквы — 0,5
B – 0,65
C – 0,8

При поиске можно обнаружить что среди всего спектра чипов есть также и более скромный и весьма и весьма доступный замечательный чип — STM8S003F3P6. Лично на мой взгляд за его стоимость менее $0.5, а если быть точнее, менее 4 грн, на нем можно смело остановиться.

Структурная схема STM8S

Итак, что мы имеем: GPIO 28pins, I2C, SPI, Watchdog, Timers, Beeper, ADC, EEPROM, UART, 3 источника тактирования, и т. д.

Характеристики STM8S003F3P6:

  • Ядро 16 МГц, 3-уровневый конвейер
  • 8 Кб flash памяти (20 лет после 100 циклов записи/стирания)
  • 1 Кб SRAM памяти
  • 128 байт EEPROM (100 000 циклов записи/стирания)
  • 10-бит АЦП, 5 каналов
  • Последовательные интерфейсы – SPI, I2C, UART (IrDA, LIN, Smartcard)
  • Два 16-бит таймера (ШИМ, захват/сравнение)
  • Один 8-бит таймер
  • Питание 2.95 В – 5.5 В
  • Корпус TSSOP20
  • От -40 до +85 °С

Уверен, что за приблизительно 4грн за штуку(поштучно) вы больше не найдете чип с такими или похожими характеристиками

С «радиокота» чуток зацетирую:

«Плюсы»:

1. регистры: 8-битный аккумулятор A, индексные 16-разрядные регистры X, Y, 8-разрядный регистр состояния, 24-разрядный программный счетчик (позволяет адресовать 16 Мибайтное пространство адресов), 16-разрядный указатель стека. Все пространство ОЗУ по сути является файлом регистров общего назначения.
2. Flash-память программ от 4 до 128 Кибайт (10 000 циклов перезаписи)
3. EEPROM до 2 Кибайт (300 000 циклов перезаписи)
4. ОЗУ до 6 Кибайт
5. Тактовая частота до 24 МГц
6. Питание от 2,95 вольт (причем при максимальной тактовой частоте)
7. Встроенные тактовые RC-генераторы 128 кГц и 16МГц
8. Кварцевый генератор (естественно с внешним кварцевым резонатором)
9. Система контроля тактовой частоты (clock monitor) — при неисправности кварцевого генератора тактирование автоматом переводится на внутренний RC-генератор.
10. 32 вектора прерывания от периферии, в том числе одно программное прерывание, большинство портов могут быть входами внешних прерываний.
11. Таймеры 8 и 16-разрядные (всего до 4)
12. Каналы ШИМ (до 9)
13. Интерфейсы USART, SPI, IIC, beCAN
14. 10-разрядный АЦП до 16 каналов
15. С точки зрения программиста все пространство памяти (Flash, EEPROM, RAM, регистры периферии и настроечные байты (Option bytes)) линейное и к нему применимы все 20 методов адресации, поэтому исполнение кода возможно и из ОЗУ (в загрузчиках моделей без функции чтения во время записи Flash-памяти процедуры записи в Flash перемещаются в ОЗУ и там выполняются) и даже EEPROM.
16. Встроенный загрузчик (STM8S105 и выше).
17. Автоматическое сохранение контекста при входе в прерывание и восстановление при выходе.
18. Однопроводный интерфейс программирования/отладки SWIM позволяет отлаживать прошивку по шагам и получить доступ ко всему пространству памяти, регистрам АЛУ и большей части регистров периферии из программы-отладчика (STVD) (на самом деле для подключения отладчика требуется еще два провода: RESET и «общий»).

«минусы»:
1. Минимальная тактовая частота от внешнего кварца — 1 МГц.
2. Отсутствует аналоговый компаратор (есть его цифровой аналог в составе АЦП).
3. Не все порты имеют повышенную нагрузочную способность (до 18).
4. У маловыводных моделей нет входа опорного напряжения АЦП (зато у многовыводных есть вход «нижнего» опорного напряжения) и оно всегда равно напряжению питания АЦП.
5. Нет моделей с аппаратным USB.
6. У моделей low-density нет встроенного загрузчика.
7. Свой интерфейс программирования/отладки SWIM не позволяет собрать простой программатор.
8. При тактировании частотой выше 16 МГц (STM8S20x) требуется настраивать бит вставки тактов ожидания при обращении к памяти.
9. Минимальное напряжение питания 2,95 Вольт. (Для меньшего есть STM8L).
10. И обнаружил одну не очень приятную особенность (прописанную в даташите STM8S105, другие модели не проверял) аппаратного SPI: при низком логическом уровне на входе выбора ведомого (NSS) SPI переходит в режим ведомого, даже если этот пин настроен как выход, а SPI настроен в режиме ведущего.
11. Автоматическое сохранение контекста при входе в прерывание «задерживает» на 6 тактов начало функции обработчика прерывания с момента наступления события вызвавшего его.
12. Отсутствуют асинхронные таймеры и PLL, что ограничивает частоту 8-битного ШИМ до 62500 Гц (при тактовой частоте 16 МГц), а 16-битного — до 244 Гц (при тактовой 16 МГц).

 

Нужную документацию не всегда получается быстро найти (особенно если трудно сформулировать что точно интересует), потому выкладываю названия документов, которые могут понадобиться для освоения STM8S. Забиваем код документа в строку поиска на главной странице сайта http://www.st.com и в результатах тыкаем в ссылку с пометкой [PDF] — скачиваем, вникаем.
В первую очередь понадобится даташит на конкретный микроконтроллер, на самом деле их всего около 4: STM8S103xx, STM8S903x3, STM8S105xx, STM8S20xx (Их можно скачать в подразделе Datasheet на странице http://www.st.com/mcu/familiesdocs-113.html , там же и файлы перечисленные ниже).
Затем:
RM0016 – описание периферии семейства STM8S
PM0044 – описание ядра, памяти, набора команд (ассемблерных) семейства STM8S
UM0144 – Описание ассемблера-линковщика от ST
UM0036 – Руководство пользователя по STVD – ST Visual Develop – среда разработки
UM0151 – Руководство пользователя по STVP – ST Visual Programmer — инструментарий программирования (прошивки)
AN2752 – Старт с STM8S – немного о периферии, много ссылок на другие документы на STM8S по разным темам.
С первыми тремя документами (и знанием английского) уже можно начинать чего-то программировать.
А дальше можно посмотреть эти:
UM0833 – Руководство пользователя по демо-прошивке STM8S-DISCOVERY
UM0834 – разработка и отладка программы для STM8S-DISCOVERY
UM0856 – ШИМ в STM8S-DISCOVERY
UM0848 – Индикация переменного напряжения на светодиодной линейке в STM8S-DISCOVERY
UM0845 – Регулируемая частота бипера в STM8S-DISCOVERY
AN3143 – работа со звуком в STM8
UM0470 – Руководство по протоколу SWIM и модулю отладки
UM0560 — Руководство пользователя по загрузчику STM8S/L
UM0627 – Руководство пользователя по внутрисхемному программатору/отладчику ST-LINK
AN2658 – Использование АЦП STM8S
AN2687 – Драйвер «бесконтроллерного» LCD на STM8S20xxx
AN2719 – Техники увеличения точности АЦП STM8S
AN2927 – принципы построения RC сенсорных датчиков
TN0075 – FAQ по библиотеке сенсорных датчиков
TN0189 – FAQ по бутлоадеру STM8
AN2822 – калибровка внутреннего высокочастотного генератора
AN2857 – Управление питанием STM8S
AN2867 – рекомендации по проектированию тактового генератора для микроконтроллеров от ST
PM0051 – описание организации памяти, программирования Flash, организации пользовательского загрузчика.
Ну еще много других…

 

 

 

Attached Files:

2 комментария

    • Под виндовс ПО не самое юзер-френдли, и видимо давно не развивается, но терпимо и выполняемыми остаются все хотелки.
      Кстати есть компиляторы и под линукс, что хорошо, но я не тестировал. И там классика, код + любой IDE + Makefile-based организация сборки

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