Форум РадиоКот https://radiokot.ru/forum/ |
|
Программирование STM8 https://radiokot.ru/forum/viewtopic.php?f=62&t=35768 |
Страница 1 из 129 |
Автор: | DrWatson [ Вс окт 03, 2010 10:04:46 ] | ||||
Заголовок сообщения: | Программирование STM8 | ||||
Начну новую тему по микроконтроллерам, пока обделенным вниманием на форуме. Сразу выкладываю кое-какие наработки в виде исходников. Если что не понятно постараюсь разъяснить. Может стиль программирования через одно место, но практически все проверено в работе, потому сильно прошу не пинать.
|
Автор: | radio-kot [ Вс окт 03, 2010 10:21:01 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Для STM8 есть отличный стартовый набор с USB отладчиком ! Очень дешево и доступно. STM8S-DISCOVERY - Отладочный набор на базе микроконтроллера STM8S105 с интегрированным на плату программатором отладчиком ST-Link для микроконтроллеров STM8S. ![]() |
Автор: | Vov123 [ Вс окт 03, 2010 10:48:05 ] |
Заголовок сообщения: | Re: Программирование STM8 |
А не могли бы вы для быстрого старта,указать на наилучшую на ваш взгляд среду разработки и схему программатора,да может быть,извините за наглость,у вас есть ссылки на литературу на русском по контроллерам STM8S... |
Автор: | DrWatson [ Вс окт 03, 2010 10:49:19 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Цитата: Для 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). Документации на русском практически нет - встречал в интернетах пару коротких статеек и все. |
Автор: | radio-kot [ Вс окт 03, 2010 11:46:35 ] |
Заголовок сообщения: | Re: Программирование STM8 |
надо ли как то модифицировать прошивку для камня с прошитым загрузчиком или достаточно убедится что размер проги не превышает размер флеша - размер бутлодера. |
Автор: | DrWatson [ Вс окт 03, 2010 11:54:25 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Для тех, кому трудно по тем или иным причинам изучать даташиты на английском перечислю что есть в 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 11:58:01 ] |
Заголовок сообщения: | Re: Программирование STM8 |
radio-kot писал(а): надо ли как то модифицировать прошивку для камня с прошитым загрузчиком или достаточно убедится что размер проги не превышает размер флеша - размер бутлодера. В моделях с встроенным загрузчиком код этого самого загрузчика находится в ROM (с адреса 0x6000) - эта область не перепрограммируемая (типа масочного ПЗУ), для прошивки пользователя (которая начинается с адреса 0x8000) доступно все адресное пространство Flash-памяти программ. В то же время есть возможность у всех моделей прошить свой собственный защищенный от перезаписи загрузчик (так называемый User Boot Code) размером до 255 страниц, каждая страница от 64 до 512 байт в зависимости от модели, начинающийся с адреса 0x8000, тогда основная программа будет размешаться выше по адресам (над загрузчиком). |
Автор: | Vov123 [ Вс окт 03, 2010 11:58:51 ] |
Заголовок сообщения: | Re: Программирование STM8 |
DrWatson,спасибо за исчерпывающую информацию. |
Автор: | ведущий специалист [ Вс окт 03, 2010 13:35:08 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Да, автор темы забыл сказать еще про то что адресация в данной линии абсолютно линейная, поэтому в некоторых случаях возможно и выполнение команд из срам памяти. Да, между прочим....ст линк (программатор и отладчик) стоит очень дешево в сравнение с тем же инструментарием для AVR. Я уже пообщался с данными мк. Стоит отметить очень легкое освоение периферии. Просто влюблен в stm8l152 который по возможностям просто рвет м32 от атмел. Также неплох контроллер, стоящщий в дискавери. Так что советую. Могу так же поделиться своими наработками (жк по SPI, I2C часы, приемник..... ШИМ) |
Автор: | YS [ Вс окт 03, 2010 13:45:15 ] |
Заголовок сообщения: | Re: Программирование STM8 |
[Пропостил сообщение, чтобы получать уведомления об ответах отсюда, интересно.] |
Автор: | DrWatson [ Вс окт 03, 2010 14:08:10 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Про линейную адресацию сказать не забыл, а про выполнение команд из ОЗУ не упомянул - дополнил. Цитата: Стоит отметить очень легкое освоение периферии.... ....Могу так же поделиться своими наработками (жк по SPI, I2C часы, приемник..... ШИМ) Регистров много, но в основном однотипные для каждого вида периферии во всем семействе. Поделиться наработками - всегда пожалуйста и заранее спасибо. |
Автор: | Desired [ Вс окт 03, 2010 16:51:24 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Ждем примеров!Очень полезный опыт. |
Автор: | Zheleznjakov [ Вс окт 03, 2010 16:58:41 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Так же интересны данные МК, пока детально не разбирался, так только разовые набеги ![]() http://zib.sibinet.com/ |
Автор: | dosikus [ Пн окт 04, 2010 20:20:51 ] |
Заголовок сообщения: | Re: Программирование STM8 |
DrWatson Я понимаю что в Гондурасе они в любом ларьке валяются ... Где в России их купить/заказать , с отправкой почтой ? И контроллеры и программатор . Гы... нашел в Элитане , и цены вроде ничего. DrWatson Какой программатор лучше взять ST-LINK или DISCOVERY? Какие контроллеры из STM8 и STM32 ? |
Автор: | DrWatson [ Пн окт 04, 2010 22:59:02 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Брал там же (не в Гондурасе ![]() с STM32F-чего-то-там (ARM Cortex M3) взял на пробу STM32-PRIMER2 - недорого и сердито, но пока руки не дошли поковырять его. Подумываю о (а точнее коплю на) покупке ST-LINK и парочке STM32 (шаг выводов у них 0,5, что несколько пугает, но через макетку думаю не проблема будет их задействовать). А DISCOVERY для STM8S вполне достаточно (достаточно две перемычки разомкнуть или отломить часть ST-LINK), разъемчик SWIM 4-контактный там есть, т.е. полнофункциональный внутрисхемный программатор/отладчик (но только для STM8S). Чуть попозже выложу таблицу "Ordering infomation" на русском, по которой можно выбрать (узнать) контроллер по параметрам, если будут желающие лицезреть её. |
Автор: | radio-kot [ Пн окт 04, 2010 23:23:35 ] |
Заголовок сообщения: | Re: Программирование STM8 |
dosikus писал(а): Где в России их купить/заказать , с отправкой почтой ? А ты и не знаешь ???????? Лежат наборчики. |
Автор: | DrWatson [ Вт окт 05, 2010 00:14:21 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Как выбрать микроконтроллер по корпусу и объему 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 Более подробная информация легко находится на сайте производителя (там есть "интерактивная" флэшка с "графиком" по всему семейству) |
Автор: | DrWatson [ Вт окт 05, 2010 00:36:21 ] |
Заголовок сообщения: | Re: Программирование STM8 |
Нужную документацию не всегда получается быстро найти (особенно если трудно сформулировать что точно интересует), потому выкладываю названия документов, которые могут понадобиться для освоения 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, организации пользовательского загрузчика. Ну еще много других... |
Автор: | dosikus [ Вт окт 05, 2010 17:55:20 ] |
Заголовок сообщения: | Re: Программирование STM8 |
DrWatson Документацию то нашел без проблем, но вот скорость с ST - это кошмар. 10 кбайт/с . Вопрос : ни кто не получал от ST сэмплы ? |
Автор: | Томатный [ Вт окт 05, 2010 18:48:03 ] |
Заголовок сообщения: | Re: Программирование STM8 |
как на счет языка ассемблера для этого микроконтроллера с такими его особеностями(регистры, озу)? неужели доступ к ОЗУ такой же быстрый как и к регистрам? хотелось бы увидеть кусок кода с описанием, чтобы было показано наглядно, как это работает. |
Страница 1 из 129 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |