Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Вс окт 03, 2010 10:04:46

Начну новую тему по микроконтроллерам, пока обделенным вниманием на форуме.
Сразу выкладываю кое-какие наработки в виде исходников. Если что не понятно постараюсь разъяснить. Может стиль программирования через одно место, но практически все проверено в работе, потому сильно прошу не пинать.
Вложения
С_1Wire_LCD.rar
Проект в STVD на си и асме Cosmic
(219.22 KiB) Скачиваний: 3570
LCDkeyb.zip
(216.71 KiB) Скачиваний: 2734
STM8Libs.rar
(11.62 KiB) Скачиваний: 3520

Re: Программирование STM8

Вс окт 03, 2010 10:21:01

Для STM8 есть отличный стартовый набор с USB отладчиком ! Очень дешево и доступно. STM8S-DISCOVERY - Отладочный набор на базе микроконтроллера STM8S105 с интегрированным на плату программатором отладчиком ST-Link для микроконтроллеров STM8S.

Изображение
Последний раз редактировалось radio-kot Вт окт 05, 2010 01:24:26, всего редактировалось 1 раз.

Re: Программирование STM8

Вс окт 03, 2010 10:48:05

А не могли бы вы для быстрого старта,указать на наилучшую на ваш взгляд среду разработки и схему программатора,да может быть,извините за наглость,у вас есть ссылки на литературу на русском по контроллерам STM8S...

Re: Программирование STM8

Вс окт 03, 2010 10:49:19

Для STM8 есть отличный стартовый набор с USB отладчиком

Те, для кого я создавал эту тему знают что это STM8S-DISCOVERY, и даже имеют его.
Кстати о программировании STM8S. Если не нужен отладчик, прошивку можно залить с помощью встроенного загрузчика в моделях medium-density (STM8S105) и high-density (STM8S20x) через UART, SPI, CAN (в зависимости от конкретной модели).
При этом есть несколько важных моментов:
1) "Чистый" микроконтроллер всегда стартует с загрузчика.
2) Если в микроконтроллере уже есть прошивка, а соответствующий настроечный байт (OPTBL) разрешает старт с загрузчика, то микроконтроллер ждет 1 секунду инициирующей программирование последовательности по одному из интерфейсов, если последовательность не получена в течение этой секунды, то управление передается прошивке пользователя.
3) Если есть прошивка, а настроечный байт (OPTBL) не разрешает старт бутлоадера, то микроконтроллер всегда стартует с программы пользователя.

А не могли бы вы для быстрого старта,указать на наилучшую на ваш взгляд среду разработки и схему программатора

Выбор сред для программирования не велик. Я пользую следующее:
1) Среда STVD + STVP - в ней ассемблер и отладчик-программатор - скачивается бесплатно с сайта ST Microelectronics.
2) Компилятор Cosmic (Си+ассемблер) - интегрируется в STVD (до 16 килобайт кода - бесплатный - ключ по мылу, лечение есть в интернетах).
3) Программатор ST-LINK (Я пользуюсь STM8S-DISCOVERY - в нем и программатор ST-LINK и отладочная плата - раза в 3 дешевле, чем просто программатор, для этой серии его достаточно).
Схемы программатора подобной AVR-овским и PIC-овским как таковой нет, самый бюджетный вариант - загрузчик через UART (потребуется только преобразователь UART-RS-232 или какой-нибудь UART-USB).
Документации на русском практически нет - встречал в интернетах пару коротких статеек и все.

Re: Программирование STM8

Вс окт 03, 2010 11:46:35

надо ли как то модифицировать прошивку для камня с прошитым загрузчиком или достаточно убедится что размер проги не превышает размер флеша - размер бутлодера.

Re: Программирование STM8

Вс окт 03, 2010 11:54:25

Для тех, кому трудно по тем или иным причинам изучать даташиты на английском перечислю что есть в STM8S (вольный перевод первой страницы даташита - пишу по памяти, возможно придется корректировать):
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 МГц).
Если еще что вспомню или обнаружу - дополню список.
Последний раз редактировалось DrWatson Вс окт 03, 2010 14:11:39, всего редактировалось 3 раз(а).

Re: Программирование STM8

Вс окт 03, 2010 11:58:01

radio-kot писал(а):надо ли как то модифицировать прошивку для камня с прошитым загрузчиком или достаточно убедится что размер проги не превышает размер флеша - размер бутлодера.

В моделях с встроенным загрузчиком код этого самого загрузчика находится в ROM (с адреса 0x6000) - эта область не перепрограммируемая (типа масочного ПЗУ), для прошивки пользователя (которая начинается с адреса 0x8000) доступно все адресное пространство Flash-памяти программ.
В то же время есть возможность у всех моделей прошить свой собственный защищенный от перезаписи загрузчик (так называемый User Boot Code) размером до 255 страниц, каждая страница от 64 до 512 байт в зависимости от модели, начинающийся с адреса 0x8000, тогда основная программа будет размешаться выше по адресам (над загрузчиком).
Последний раз редактировалось DrWatson Вс окт 03, 2010 12:29:02, всего редактировалось 1 раз.

Re: Программирование STM8

Вс окт 03, 2010 11:58:51

DrWatson,спасибо за исчерпывающую информацию.

Re: Программирование STM8

Вс окт 03, 2010 13:35:08

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

Я уже пообщался с данными мк. Стоит отметить очень легкое освоение периферии. Просто влюблен в stm8l152 который по возможностям просто рвет м32 от атмел. Также неплох контроллер, стоящщий в дискавери. Так что советую. Могу так же поделиться своими наработками (жк по SPI, I2C часы, приемник..... ШИМ)

Re: Программирование STM8

Вс окт 03, 2010 13:45:15

[Пропостил сообщение, чтобы получать уведомления об ответах отсюда, интересно.]

Re: Программирование STM8

Вс окт 03, 2010 14:08:10

Про линейную адресацию сказать не забыл, а про выполнение команд из ОЗУ не упомянул - дополнил.
Стоит отметить очень легкое освоение периферии.... ....Могу так же поделиться своими наработками (жк по SPI, I2C часы, приемник..... ШИМ)

Регистров много, но в основном однотипные для каждого вида периферии во всем семействе.
Поделиться наработками - всегда пожалуйста и заранее спасибо.

Re: Программирование STM8

Вс окт 03, 2010 16:51:24

Ждем примеров!Очень полезный опыт.

Re: Программирование STM8

Вс окт 03, 2010 16:58:41

Так же интересны данные МК, пока детально не разбирался, так только разовые набеги :)
http://zib.sibinet.com/

Re: Программирование STM8

Пн окт 04, 2010 20:20:51

DrWatson Я понимаю что в Гондурасе они в любом ларьке валяются ...
Где в России их купить/заказать , с отправкой почтой ?
И контроллеры и программатор .

Гы... нашел в Элитане , и цены вроде ничего.

DrWatson Какой программатор лучше взять ST-LINK или DISCOVERY?
Какие контроллеры из STM8 и STM32 ?

Re: Программирование STM8

Пн окт 04, 2010 22:59:02

Брал там же (не в Гондурасе :) ) и STM8S-DISCOVERY и контроллеры (брал самые дешевые) - STM8S103xx - в 20-ногом SSOP (шаг у них 0,65, но, ЛУТ потянет, не говоря уж о ФР), STM8S903 - LQFP-32, шаг ног 0,8 - в самый раз - на нем сейчас делаю усилок, по одному STM8S207 и STM8S208 - много памяти и ног.
с STM32F-чего-то-там (ARM Cortex M3) взял на пробу STM32-PRIMER2 - недорого и сердито, но пока руки не дошли поковырять его. Подумываю о (а точнее коплю на) покупке ST-LINK и парочке STM32 (шаг выводов у них 0,5, что несколько пугает, но через макетку думаю не проблема будет их задействовать).
А DISCOVERY для STM8S вполне достаточно (достаточно две перемычки разомкнуть или отломить часть ST-LINK), разъемчик SWIM 4-контактный там есть, т.е. полнофункциональный внутрисхемный программатор/отладчик (но только для STM8S).
Чуть попозже выложу таблицу "Ordering infomation" на русском, по которой можно выбрать (узнать) контроллер по параметрам, если будут желающие лицезреть её.

Re: Программирование STM8

Пн окт 04, 2010 23:23:35

dosikus писал(а):Где в России их купить/заказать , с отправкой почтой ?


А ты и не знаешь ???????? Лежат наборчики.

Re: Программирование STM8

Вт окт 05, 2010 00:14:21

Как выбрать микроконтроллер по корпусу и объему 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

Более подробная информация легко находится на сайте производителя (там есть "интерактивная" флэшка с "графиком" по всему семейству)

Re: Программирование STM8

Вт окт 05, 2010 00:36:21

Нужную документацию не всегда получается быстро найти (особенно если трудно сформулировать что точно интересует), потому выкладываю названия документов, которые могут понадобиться для освоения 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, организации пользовательского загрузчика.
Ну еще много других...

Re: Программирование STM8

Вт окт 05, 2010 17:55:20

DrWatson Документацию то нашел без проблем, но вот скорость с ST - это кошмар. 10 кбайт/с .
Вопрос : ни кто не получал от ST сэмплы ?

Re: Программирование STM8

Вт окт 05, 2010 18:48:03

как на счет языка ассемблера для этого микроконтроллера с такими его особеностями(регистры, озу)?
неужели доступ к ОЗУ такой же быстрый как и к регистрам?
хотелось бы увидеть кусок кода с описанием, чтобы было показано наглядно, как это работает.
Ответить