21 октября 2013
Портфель микроконтроллеров компании STMicroelectronics в его нынешнем виде сформировался несколько лет назад (рисунок 1). Исключая различные узкоспециализированные устройства, в нем выделяются 2 семейства контроллеров — 8-битное STM8 и 32-битное STM32. В то время, как последнее основано на ядрах Cortex-Mx производства компании ARM, STM8 — это архитектура собственной разработки. Несмотря на то, что в нашей стране словосочетание «контроллер от SТ» твердо ассоциируется с приборами семейства на ядре Cortex, 8-битные контроллеры удерживают устойчивое лидерство по количеству проданных микросхем, которое составляет около 240 миллионов шт. (по информации за 2011 год).
Рис. 1. Портфель контроллеров STMicroelectronics
Микроконтроллеры STM8 изначально были ориентированы на автомобильный рынок, однако успешность архитектуры позволила вывести данное семейство на широкий рынок. Но лучшие черты, свойственные Контроллерам, ориентированным на автомобильную промышленность, семейство сохранило. Это, в первую очередь, то, что вся память, как Flash, так и Eeprom, построена по технологии Еeprom, благодаря этому энергопотребление слабо зависит от температуры кристалла. Технологический процесс 130 нм гарантирует низкое потребление. Кстати, можно упомянуть, что STMicroelectronics занимает 40% рынка Eeprom-памяти и является неоспоримым лидером в этой нише, происходит это благодаря самым передовым технологиям. А то, что память занимает до 95% кристалла контроллера, гарантирует, что изделия будут отвечать наивысшим требованиям качества.
В данной статье мы рассмотрим более подробно архитектуру контроллера, научимся создавать проект в среде IAR, конфигурировать его под выбранную платформу.
За несколько лет существования микроконтроллеры на ядре STM8 стали де-факто лидером на рынке 8-битных устройств. Ежегодное производство составляет несколько сотен миллионов штук. Микроконтроллеры этого семейства можно найти повсеместно: в бытовой и промышленной электронике, компьютерах, медицинском оборудовании.
Архитектура STM8 настолько проста для программиста, что не требует глубоких знаний для того, чтобы начать работать с контроллером. Очень многое было взято от контроллеров STM32 (читай ARM). В то же время набор команд CISC гарантирует высокую плотность кода, а то, что команды в большинстве 1-тактовые и 16-битные — высокую производительность. Среди разработчиков зачастую бытует мнение, что STM8 — это инкарнация 51 архитектуры, однако это совершенно не верно. Наличие команд относительной косвенной адресации явно говорит о том, что система инструкций оптимизирована под язык «Си» для быстрой обработки условий case. Следует так же отметить, что знаний ассемблера для решения подавляющего числа задач промышленного управления не требуется.
С практической точки зрения, в первую очередь следует обратить внимание на единое 24-битное адресное пространство, в котором замечательно разместилась Flash-память, ОЗУ, Eeprom, а также регистры периферии. Это существенно упрощает написание кода, например, функции для работы с массивами из ОЗУ и Flash-памяти не требуется писать в нескольких экземплярах. Коды различных стеков и библиотек легко портируются, так как в основном рассчитаны на архитектуру фон Неймана (в смысле адресного пространства). При этом шины для доступа к разным типам памятей разделены, что говорит нам о наличии Гарвардской архитектуры.
Для того, чтобы многобайтные команды и данные поступали в ядро без задержек, реализован 3-ступенчатый конвейер. Команды вычитываются из памяти по 32-битной шине, соответственно, за 1 обращение — 2 команды. Код можно выполнять так же из памяти данных, но, так как шина к памяти данных 8-битная, то конвейер будет заполняться гораздо медленнее и производительность будет ниже, однако о такой возможности нужно знать.
Система прерываний реализована в ядре. Прерывания вызываются через вектора, которые расположены в начальной части кода. При этом контекст сохраняется автоматически. Однако для выхода из прерывания требуется инструкция, отличная от инструкции выхода из обычной подпрограммы, потому пользователь должен в том или ином виде сообщать компилятору о том, что функция является обработчиком прерываний. Количество прерываний — до 32, из которых 29 пользовательские, с задаваемым приоритетом, остальные — системные, включая RESET.
Наиболее популярные средства программирования STM8 это среды ST Visual Develop с компилятором производства компании Raisonance и IAR Embedded Workbench. В таблице 1 приведено их краткое сравнение.
Таблица 1. Краткое сравнение сред разработки IAR EW и ST VD
Параметр | ST VD | IAR EW |
---|---|---|
Поддержка ST7 | да | нет |
Ограничение по коду на бесплатную лицензию, Кбайт | 32 | 8 |
Многоплатформенность компилятора | нет | да |
Встроенный дебаггер-отладчик | да | да (ST-LINK) |
Уровень оптимизации кода | высокий | высокий |
В нашем случае мы выберем среду производителя IAR, так как контроллер, который мы будем программировать содержит всего 8 Кбайт памяти программ и по остальным параметрам он не проигрывает ST VD, зато более известен российскому разработчику, так как многие пользовались им для программирования контроллеров других архитектур.
Как уже было упомянуто выше, мы рассмотрим контроллер с 8 Кбайт Flash-памяти, это контроллер линейки Value Line. Почему? В первую очередь потому, что данное семейство позиционируется как самое эффективное в плане цены и не имеет конкурентов со стороны STM32. Данные микроконтроллеры предназначены для создания на их основе различных датчиков, контроллеров управления для бытовой и промышленной аппаратуры. То есть там, где мощность 32 бит не востребована, а стоимость и энергопотребление играют наиважнейшую роль.
Итак, остановим выбор на контроллере STM8S003K3T6. Компания STMicroelectronics для данной линейки выпустила средство для быстрого старта под названием STM8SVLDISCOVERY. Рассмотрим вкратце, что предлагает данная отладочная плата (рис. 2).
Рис. 2. Отладочная плата STM32VLDiscovery
Данная отладочная плата уже содержит встроенный отладчик ST-Link, который впоследствии можно использовать для программирования пользовательских систем.
Периферия микроконтроллеров STM8 очень гибкая и для того, чтобы настроить тот или иной блок в требуемый режим, понадобится настроить до нескольких конфигурационных регистров. Для того, чтобы защититься от мелких ошибок, на исправление которых, как правило, теряется большая часть времени, STMicroelectronics предлагает стандартную периферийную библиотеку. С ее помощью инициализация превращается в запуск функции с несколькими понятными параметрами.
Структура библиотеки приведена на рисунке 3.
Рис. 3. Структура стандартной периферийной библиотеки
Из этой структуры видно, что все обработчики прерываний собраны в одном файле. За каждый периферийный блок отвечает отдельный файл и существует конфигурационный файл, в котором пользователь должен выбрать, какие модули периферии будут включены, а какие не будут. К файлу приложения пользователя подключается единственный файл stm8s.h, а все остальное делается автоматически.
Наличие библиотек не исключает возможность работы напрямую с регистрами. Более того, оба подхода можно комбинировать для достижения наилучших показателей кода.
Данная библиотека свободно скачивается с сайта www.st.com.
Во первых, с сайта http://www.iar.com/ следует скачать и установить среду разработки IAR Embedded Workbench для STM8 в редакции Kickstart (рисунок 4).
Рис. 4. Вид проекта в среде IAR EW
Наипростейший путь создания нового проекта — это воспользоваться шаблоном-примером. В каждом архиве периферийной библиотеки имеется такой пример, который после разархивирования находится в папке ProjectSTM8S_StdPeriph_TemplateEWSTM8.
Мы же, для того, чтобы упростить себе задачу, возьмем периферийную библиотеку с шаблоном проекта именно для этой платы [1] и в этом архиве найдем файл STM8SVLDISCOVERY_DiscoverProjectsProject_templateEWSTM8Project.eww
. Разархивируйте проект и запустите этот файл. Откроется среда IAR. В данном проекте-шаблоне уже настроено все необходимое для того, чтобы работать с контроллером как через библиотеки, так и через регистры (напрямую).Как нетрудно заметить, пользовательские файлы выведены в отдельные папки и их можно быстро найти, чтобы открыть и что-либо изменить. Библиотека периферии выделена в отдельную папку и в нее можно смотреть только для ознакомления, так как все включенные в нее файлы имеют статус «только для чтения». Итак, перед нами классический вид проекта в среде IAR, где главным является файл main.c, в котором содержится функция входа в пользовательское приложение void main(void). Второй пользовательский файл — это stm8s_it.c, в котором содержатся пустые обработчики всех возможных прерываний. Эти обработчики, в случае их использования, останется заполнить собственным кодом.
Рассмотрим подробно настройки проекта. Для этого следует зайти в меню, и выбрать
Рис. 5. Свойства компилятора
Для этого найдем закладку Preprocessor в опциях С/С++-компилятора. В первую очередь обратите внимание, что подключена папка с файлами описаний (*.h) стандартной периферийной библиотеки. Далее требуется обратить внимание на наличие глобального макроса-определения STM8S003. Библиотека работает с разными линейками сери STM8S, потому этот макрос помогает ей понять, с чем ей конкретно придется работать.
В опциях дебаггера по умолчанию уже выбран ST-Link и для того, чтобы загружать проект в плату, достаточно подключить ее по USB и нажать кнопку «Download and Debug» на панели инструментов (рисунок 6).
Рис. 6. Часть панели инструментов с кнопкой запуска
Итак, мы вплотную приблизились к написанию собственного кода. Мы напишем программу, которая будет конфигурировать вывод порта, к которому подключен светодиод, и поуправляем им Перед тем, как приступить к программированию, необходимо скачать принципиальную схему, ее, а также другую полезную информацию по данное плате, можно найти здесь: [2].
Светодиод катодом подключен к PD0, анод подключен через токозадающий резистор к питанию. Таким образом, чтобы включить светодиод, необходимо подать на вывод порта логический 0.
В первую очередь изучите файл-шаблон main.c. Вы найдете в нем, кроме самого основного приложения, интересную функцию void assert_failed(u8* file, u32 line). По умолчанию она отключена макросом USE_FULL_ASSERT. Данная функция позволяет отследить некорректное использование библиотеки в том случае, если вы задали какой-то параметр неверно или перепутали порядок следования параметров. Эту опцию рекомендуется активировать для режима отладки, включив в список преопределенных символов компилятора.
Начинаем модификацию void main(void).
Для того, чтобы понять, какую функцию нужно взять для инициализации из библиотеки, нужно открыть список функций файла stm8s_gpio.c, и станет очевидно, что нужна функция GPIO_Init (рисунок 7).
Рис. 7. Функции драйвера периферийного модуля GPIO
Тут же можно посмотреть, какие аргументы принимает эта функция. Для этого не нужно открыть толстые справочники, а достаточно просто посмотреть описание функции, расположенное над ней самой в виде комментария (рисунок 8).
Рис. 8. Функция инициализации GPIO
Соответственно, первый аргумент станет очевидно понятными, это GPIOD. А вот для понимания того, что должны из себя представлять остальные, требуется отправиться к определениям GPIO_Pin_TypeDef и GPIO_Mode_TypeDef. И сразу станет ясно, что это GPIO_PIN_0 и GPIO_MODE_OUT_PP_HIGH_FAST соответственно.
Итак, мы получили функцию
GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST)
Включим ее в основной код. Вот и вся инициализация. После этого остается только воздействовать на состояние вывода. Для этого также обратимся в файл библиотеки и найдем наиболее подходящую функцию void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal). Аналогичным образом найдем, какие должны быть у данной функции аргументы для того, чтобы включить или выключить светодиод.
Итак, в итоге мы получим следующий вид функции void main(void) (рисунок 9):
Рис. 9. Функция void main(void)
После этого загрузим код в контроллер и по шагам (клавиша F10) пройдем все команды для того, чтобы убедиться, что код работает.
Микроконтроллеры семейства STM8 — это мощные и, в то же время, недорогие устройства, на которых можно строить различную домашнюю и промышленную автоматику. Крайне невысокая цена контроллеров линейки Value Line делает их весьма конкурентоспособными на рынке средств для построения различных датчиков (дыма, газа) там, где массовость, компактный размер и цена важны в равной степени. А то, что контроллер очень удобен в использовании как в электрическом, так и в программном смысле, делает возможным окончить разработку в кратчайшие строки.
1. http://www.st.com/web/en/catalog/tools/PF257969
2. http://www.st.com/web/en/catalog/tools/PF252276#.
Получение технической информации, заказ образцов, поставка — e-mail: [email protected]
•••
Для тех, кому лень читать целиком: В STM8S-DISCOVERY отлично заливается прошивка от ST-LINK/V2 и все работает.
Тех, кто хочет узнать, что довело меня до жизни такой, приглашаю под кат.
Несмотря на то, что я порядочный ретроград, прогресс таки докатился и до меня — в текущей разработке у меня будет стоять новый модный STM8S103F3P6 по причине выдающейся цены оного. А, кстати, о ретроградах…
Так вот, у меня возникла необходимость программировать STM8. Посему я достал с полки упомянутую в заголовке плату, сдул с нее пыль и попытался запрограммировать контроллер. Не вышло. Надо сказать, что у меня и до этого были проблемы с ST-LINK (V1), и тогда я даже нашел решение; тем не менее, сейчас не прокатило и это. Не знаю в чем дело, но факт — ST-LINK окончательно отказался работать на моей системе.
В общем, я задумался о том, как бы материализовать себе ST-LINK/V2. В принципе, такие программаторы у меня были на платах STM32-Discovery — но на отладках, как известно, стоит урезанная версия, которая может программировать только то семейство, для которого эта отладка предназначена. Купить — вариант понятный, но это надо еще из дома выходить, да и программатор мне был нужен вотпрямщас. Грустно блуждая по интернету, я в очередной раз наткнулся на человека, который сделал ST-LINK/V2 сам. Посмотрел я на это, посмотрел, и вдруг понял, что схема, приведенная в статье, совершенно не противоречит схеме программатора STM8S-DISCOVERY (стр. 16)! Собственно, в программаторе и там, и там канонично используется STM32F103C8T6, включение значимых ножек по схеме совпадает…
В общем, я запаял хедеры разъема JTAG’а программатора на STM8S-DISCOVERY и подключил к нему сигналы SWD (они находятся на тех же пинах, что и JTAG) от программатора с платы STM32-VLDISCOVERY, после чего с помощью STM32 ST-LINK Utility снял защиту, стер кристалл и залил бинарник прошивки, который взял из архива, скачанного по ссылке из той статьи, где человек самостоятельно собирал программатор. После подключения к компьютеру подопытный девайс определился как ST-LINK/V2. Далее я штатно обновил прошивку с помощью ST-LINK Upgrade Tool и в качестве теста попробовал подключиться к STM8S103F3P6 из STVP. Бинго! Все заработало!
Программировать STM32 через мой новый ST-LINK/V2 и использовать JTAG на нем я пока не пробовал, но, судя по схеме, это возможно через тот же самый выведенный порт JTAG’а.
Так что, если у кого-то есть STM8S-DISCOVERY с ST-LINK V1 и какая-нибудь из плат STM32-DISCOVERY, с помощью последней можно легко залить прошивку ST-LINK/V2 в первую и получить полноценный ST-LINK/V2.
Когда мы приезжаем к ней в гости, нас всегда встречает богатый стол, с большим количеством блюд. Поэтому, мы сразу решили делать прибор, полезный на кухне. Вместе мы часто играем в различные настольные игры — лото, различные игры с кубиком. Значит, наш прибор должен и тут помогать.
Подумав немного, сын решил делать продвинутый кухонный таймер. Я ему немного помог со схемой. Основные функции нашего подарка:
Микроконтроллер — STM8S003F3P6 — с ним мы уже работали, так что все знакомо. ST-link уже есть.
Микросхема заряда и вся обвязка у МК, как у велокомпьютера.
В качестве пищалки, очень компактная и громкая пищалка HC0903A
Аккумулятор — LIR2032. Всего 45 mAh, но этого хватит на 40 часов непрерывной работы таймера. От кварцевого резонатора решили отказаться (нужны выводы), особенная точность нам не нужна, ну и у STM8 довольно точный внутренний генератор. Микросхема заряда — TP4056.
Управление — 2 тактовые кнопки. Прибор все время находится в спящем режиме, потребление меньше 5 мкА, спать может долго. Плату защиты для аккумулятора делать не стали, особенно не нужна. У МК нижний предел 3В, так что сильно не просядет. При включении идет музыка, включается индикатор (бросок тока), и если аккумулятор севший, то МК перегрузится и перейдем в спящий режим, что является сигналом к зарядке. Заряжается он током 100 мА около 40 минут, что в принципе очень быстро. Схему и программу можно скачать на github, ссылка в конце.
Корпус сын решил делать сам из монтажного короба 40 х 16 мм. Раскрасил акрилововыми красками, в качестве стекла вырезали кусок из DVD диска. Получилось очень симпатично.
Трассировку платы сын делал сам в Kicad. Расположение компонент придумал он же. Кнопки по бокам от индикатора, пищалка внизу, аккумулятор на ней. Все вошло плотно, ничего ни куда не болтается. Плата двухсторонняя. Делали из одностороннего стеклотекстолита толщиной 0.8мм с помощью метода холодного переноса тонера. Две половинки платы соединили и зафиксировали перемычками. Из разъемов — micro usb, питание и программирование.
Программно это делается очень просто. Задействуется таймер, и через равные интервалы времени, с большой частотой, например каждые 300 мкс, будем выводить по одному разряду по кругу — 1-2-3-1-2-3. Нам будет казать что цифры светятся одновременно, как в кино. Если дополнительно добавить еще пустые разряды, то можно управлять яркостью. То есть, будет такая схема вывода информации — 1-2-3-пусто-пусто-пусто-пусто-1-2-3-пусто-пусто… Управление яркостью нужна для того, чтобы снизить энергопотребление. Таким образом, например без применения яркости, один разряд потребляет 24 мА, а с применением можно сократить до 1-2 мА. При этом цифры все еще четко и далеко видно. Сын поигрался с частотой, яркостью, когда все перестало мерцать, ему понравилось. Оказалось, программировать такой типа индикатора довольно легко и удобно.
Второй сложный момент — это придумать простой, как говорится, интуитивно понятный интерфейс, когда у нас 3 разряда индикатора и 2 кнопки. Но я считаю, ему это удалось.
Придумали с кнопками так:
Первые испытания секундомера и таймера прошли на ура. Засекали разное время, сверяли с точными часами, ошибка 1-2 секунды на час. Отрабатывали звук сигнала.
Минималистичная плата для разработки и прототипирования на микроконтроллере STM8S003F3P6. Помимо микроконтроллера на плате имеются: разъем SMIM-интерфейса, кнопка для перезагрузки, контактные площадки для распайки выводов МК, стабилизатор 3.3 В, место для установки внешнего кварца и разъем Mini-USB, через который может осуществляться питание схемы.
Теxнические характеристики
Для покупки регистрация не обязательна! Если хотите сделать заказ, — просто добавьте нужные вам товары в корзину, укажите свои данные и нажмите кнопку «Оформить заказ». Мы свяжемся с вами в ближайшее время.
Оплата
— перевод на карту ПБ
— онлайн без комиссии через Приват24 (система LiqPay)
— безналичный расчет без НДС для юридических лиц
— наличными или картой при доставке (только при заказе от 100 грн)
— наличными в офисе
Нашли дешевле? Напишите нам об этом в чат — кнопка в левом нижнем углу экрана. В сообщении укажите ссылку на активную страницу такого же товара в украинском интернет-магазине и мы пересмотрим цену.
Доставка
— Новая Почта
— Укрпочта (только при предоплате)
— Самовывоз (также при необходимости можем отправить на такси по Ивано-Франковску)
Отправка товара происходит каждый рабочий день. Заказанный товар в большинстве случае выезжает в тот же день. Заказы самовывозом можно забрать в нашем магазине. После покупки позвоним вам и скажем, когда посылка с заказом будет готова к выдаче.
Гарантия и возврат
— возврат в течение 14 дней, если товар не подошел
— гарантия до 6 месяцев на товары собственного изготовления
При таком раскладе по обеим позициям, опять же, на мой взгляд, оказывается довольно привлекателен чип ATmega328p без лишних деталей. То есть, практически совсем без деталей — что не меняет главного: куча цифровых и аналоговых пинов и достаточно скорости много для чего.
Причем мне глубоко симпатична идея использовать контроллеры в корпусе TQFP-32 с распайкой на плате-адаптере, о чем и пойдет речь.
Итак, делать будем простейшую Arduino на частоте 8 МГц. Не самая высокая скорость, зато достаточно практически голого чипа.
Главный плюс такой конструкции в том, что плата-адаптер может выполнять и роль простейшей макетной платы для каких-то несложных изделий. Альтернатива — ATmega328 в DIP-корпусе — в этом случае будет выглядеть не так хорошо. Или так же хорошо, но тоже на плате-переходнике.
С самого начала хочу обратить внимание, что в заголовке указаны цены за 10 штук контроллеров ($11) и десять же плат-переходников ($2,78), что дает нам примерно $1,4 за готовый комплект.
Про контроллеры ничего особенного сказать не могу, кроме того, что все их свойства подробнейшим образом описаны в соответствующем техническом документе Atmel. При этом также надо понимать, что ATmega328p — тот же самый контроллер, который применяется в популярных платах Arduino начального уровня: UNO, Pro Mini, Nano.
Начальный уровень, тем не менее, пугать не должен, поскольку 32 КБ под код, 2 КБ на исполнение и чертова дюжина цифровых пинов плюс семерка аналоговых, да еще разведенные там же специальные интерфейсы — настоящий, в общем-то клад, даже если ограничиться только средой Arduino.
Если не верите, то продолжаю хвастаться тем, что крутится на Arduino Uno.
Что касается идеи с платами-переходниками, то она у меня в голове с тех пор, как в поисках простого способа использовать купленные по случаю ATtiny85 в корпусах SOIC8, наткнулся на подходящие переходники в бутике Чип-и-Дип. Ценник там все знают, но ждать месяц Китая ради пары контроллеров не хотелось.
Но раз это есть в ЧиД, значит есть и в том же Китае. Причем, что характерно, в различных вариациях: односторонние, двусторонние, квадратные, прямоугольные.
Я выбрал переходник только с TQFP-32, разведенным на выводы с шагом, по-моему, 2 мм. По крайней мере то, что показал штангенциркуль, на 2,54 не совсем тянет. Хотя могу и ошибаться.
Еще одна важная характеристика переходника — шаг контактных площадок под контроллер. Насколько я понял, в данном конструктиве это 0,8 мм, однако контроллер существует и в других ипостасях (QFN) с шагом 0,5 мм. В дальнейшем речь идет именно о корпусе TQFP-32 с шагом 0,8 мм.
Особенность (ну, на мой вкус) переходника в том, что на оборотной стороне сквозные отверстия с металлизацией дублируются обычными площадками. Кроме того, по внутреннему периметру напротив каждой площадки вывода микроконтроллера расположены соединенные между собой контактные площадки, которые также выведены на пару сквозных отверстий по центру коротких сторон платы-адаптера.
Вот это на самом деле очень крутое решение, поскольку так и просится на подключение к минусу (земле), что еще более упрощает макетирование. Подключать можно, разумеется и к любой другой цепи, которую требуется развести на как можно большее количество контактов.
Размеры платы при этом следующие:
Качество изготовления, на мой взгляд, неплохое. Но мне не понравилась довольно тонкая маска (или как называется слой краски поверх проводников?), которую умудрился местами сцарапать паяльником, пока распаивал контроллер.
С контроллером на борту, те самые царапины:
Паяется к слову, элементарно, даже припоя добавлять практически не нужно. Достаточно поставить контроллер на площадки и прогреть выводы паяльником. Для удобства, правда, добавил флюса.
В принципе, этого уже достаточно, чтобы начать пользоваться контроллером, как Arduino-совместимой платой. Однако я решил пойти немного дальше (чуть-чуть) по совету уважаемого Ника Гаммона и добавил подтягивающий резистор к пину Reset и пару конденсаторов на 0,1мкФ по питанию и пину AREF. Пин AREF по его же совету соединил с VCC.
При этом обратите, пожалуйста внимание на тот факт, что распиновка ATmega328p в DIP, которую поминают на каждому углу, отличается от TQFP.
Поэтому сообщаю, что резистор 10К стоит между пинами 4 и 29, конденсаторы — между 3 и 4, а также между 20 и 21. При этом VCC — это пин 4, а GND — пин 3. Это все, что касается наиболее критичного.
В целом все хорошо видно по замечательной картинке от Hobbytronics:
Когда все готово, остается последний шаг для превращения в Arduino: загрузка, простите, загрузчика. Для того можно использовать программатор, которого у меня нет. А кроме программатора подойдет другая плата Arduino. Я использую свободную на данный момент Arduino Mega 2560.
Для программирования необходимо, во-первых, добавить в среду Arduino описание контроллера. Для этого идем на официальный сайт Arduino и скачиваем оттуда подходящий для установленной у вас версии среды архив описаний.
Например:
Когда описания скопированы, следует запустить Arduino и загрузить скетч программатора в Arduino, которая будет использоваться в качестве этого самого программатора. Скетч находится в меню Файл — Примеры — ArduinoISP.
Разумеется, следует выбрать свою плату и порт. Я выбираю Mega, потому что у меня она и есть:
После загрузки скетча программатора необходимо переключиться на целевую плату. Т.е. в нашем случае — ATmega328 с частотой 8 МГц и внутренним задающим генератором. Она будет в списке плат, если описания, о которых говорил выше, скопированы правильно:
Теперь нужно соединить линии MISO, MOSI и SCK платы-программатора и платы с будущей Arduino, а также подключить RESET, GND и VCC. Плюс питания лучше именно в последнюю очередь.
Исходя из приведенной выше инфографики и описания Arduino Mega, вырисовывается следующая картина:
SPI — Arduino Mega — ATmega328p
MISO — 50 — 16
MOSI — 51 — 15
SCK — 52 — 17
SS (RESET) — 53 — 29
Физическое подключение на ваш вкус, я применил исключительно варварский метод — обычные макетные провода прямо в отверстия платы, без пайки и изоляции:
Если все готово — записываем загрузчик. Сначала убеждаемся, что выбран правильный программатор (Сервис — Программатор — Arduino as ISP):
Потом делаем Сервис — Записать загрузчик:
Ну там скрещиваем пальцы и все такое. По крайней мере я считал это существенным, поскольку предполагал, что мог допустить непропай, мог убить контроллер статикой, накосячить с подключением и т.п.
В моем случае загрузчик прошился нормально. Как получить подтверждение более материальное, чем сообщение среды? Ну как — конечно, нужно Blink.
Открываем скетч из Файл — Примеры — 01. Basics — Blink:
Код не меняем, плату не меняем. Но теперь плату с контроллером подключаем через адаптер USB-Serial, а не Arduino, для чего крест-накрест соединяем RX и TX адаптера и контроллера. Напоминаю, что по распиновке описанного корпуса RX — 30, TX — 31. Не забываем соединить адаптер и плату общей землей и подать питание на плату (можно от того же адаптера).
Теперь в среде Arduino выбираем порт, к которому подключился адаптер и заливаем скетч. Хочу сказать, что про RESET я не забыл: изначально подключил, и следил за поведением USB-Serial адаптера, чтобы успеть сбросить контроллер перед загрузкой скетча. Однако этого не понадобилось — скетч загрузился без дополнительной перезагрузки контроллера.
Возможно, что это только в первый раз, тогда напоминаю, что RESET у контроллера — пин 29. Также напоминаю, что нумерация пинов на плате-переходнике — это не Arduino-нумерация. Поэтому упомянутый в скетче пин 13, к которому подключается светодиод — физический пин 17 чипа и, соответственно, платы-переходника.
Ну а что получилось — уже видели 🙂 Лично я доволен и попробую теперь вставить плату в некое устройство, о котором, если получится расскажу немного позже.
Спасибо за внимание.
В этом обзоре предлагаю вам, уважаемые читатели, статью о «воскрешении» сгоревшего паяльника Tomizawa FZ-880C. Травка, лужение, пайка и программирование микроконтроллера в комплекте. Кому интересно — добро пожаловать под кат.
Сначала хочу предупредить, что если вы попытаетесь повторить описываемую в статье процедуру ремонта этого устройства, то я не несу никакой ответственности за возможный вред, нанесённый вашему здоровью и имуществу, возникший из-за или в процессе вашего вмешательства и изменения электрической схемы оригинального устройства, а также из-за несоблюдения последовательности прошивки микроконтроллера устройства. Не забывайте, низковольтная часть гальванически не развязана от высоковольтной, посему все действия по ремонту и прошивке микроконтроллера устройства необходимо производить при отключенном шнуре питания!
Итак, начну.
Как-то однажды зашёл ко мне друг на кружечку чая и притащил с собой небольшой пакетик с целью подарить его мне. В том пакетике оказалось несколько жал для Hakko-совместимого паяльника. Надо сказать, что до того времени я пользовался только отечественными паяльниками с медным жалом, посему они мне были без особой надобности, но тем не менее я их взял с благодарностью, другу-то они точно были ни к чему, у него даже паяльника-то нет. Посмотрел я на них, покрутил в руках, и решил всё же попробовать перейти на пайку необгораемыми жалами. Но, разумеется, для этого мне нужен соответствующий паяльник. Просмотрев несколько обзоров паяльников на Муське, я решил взять недорогой паяльник с керамическим нагревателем, совместимый с 900-ми жалами — Tomizawa FZ-880C. Заказал его на Tmart-е, 3 недели ожидания, и он передо мной. И вот я уже мчусь домой с почты, быстро-быстро его распаковываю (кстати фото упаковки не будет, изначально я не планировал писать обзор, сам паяльник находился в простом полиэтиленовом пакете), нахожу переходник, включаю в розетку — работает! Загорелись светодиоды, начало накаливаться жало. Решив попробовать паяльник в более удобных условиях, я взял удлинитель электрической сети, настольную лампу, припой, старую плату от магнитофона в качестве подопытного, и, собственно, героя обзора, я расположился за столом, предвкушая удовольствие от работы хорошим инструментом. Ан нет, фортуна в этот день была не на моей стороне, включив паяльник в сеть, я услышал слабый щелчок откуда-то изнутри корпуса паяльника, все светодиоды на долю секунды загорелись и погасли, жало не грелось вовсе. С тех пор паяльник больше не включался…
Решив узнать в чём дело, я вскрыл его корпус и был шокирован: отвратительный монтаж, неотмытый флюс, и вообще мне паяльник показался крайне кустарной поделкой. Ну что ж, надо ремонтировать, не выбрасывать же… Прежде всего, нужно было найти причину выхода устройства из строя. Как оказалось впоследствии, паяльник сгорел по причине пробоя, приведшего к короткому замыканию конденсатора C2 (большой жёлтый элемент на фото).
Общий вид платы
Расскажу чуть подробнее об одной гадости, которую подстроили производители сего паяльника. Посмотрите внимательно на фото
Перемычка!
В процессе ремонта паяльника я эту перемычку перерезал, а сопротивление токоограничивающего резистора повысил до 150 Ом, как рекомендовал автор переделки. Также я выпаял стабилитрон и вместо него впаял широко известную микросхему-стабилизатор TL431 с делителем из резисторов, подобранных так, чтобы напряжение стабилизации составляло 3,3 Вольта (в моём случае делитель состоит из двух резисторов на 1 и 3 кОм). Схема этого блока выглядит так:
Отдельно стоит сказать про замену конденсатора C2. В оригинале, на плате паяльника припаян малогабаритный овальный плёночный конденсатор CBB20 0.47 мкФ х 450 В производства Shenzhen Surong Capacitors Co., Ltd., однако мне найти такой или подобный в радиомагазинах города так и не удалось, другие же с такой же ёмкостью и рабочим напряжением, будучи установленными на плату, банально не влезали в корпус паяльника. Но мой взгляд случайно пал на 2 конденсатора 0.22 мкФ х 630 В, приобретённые для другого моего проекта (который, к слову сказать, я надеялся осуществить с помощью этого паяльника). Оказалось, что такие конденсаторы имеют достаточно малые габариты, чтобы быть установленными в паре с двух сторон платы, и при этом успешно влезать в корпус паяльника. Общая ёмкость их, как несложно посчитать, составила 0.44 мкФ, чего, как оказалось, вполне достаточно для нормальной работы низковольтовой части паяльника.
Также были выпаяны и заменены на исправные все дохлые резисторы, диоды, транзисторы, электролитический конденсатор фильтра питания низковольтной части, дешифратор 74HC138D, а также был выпаян микроконтроллер. Но время шло, ремонт силовой и низковольтной части схемы я уже закончил, а микроконтроллер и ST-Link пока ещё не пришли в моё почтовое отделение, а проверить паяльник очень хотелось, возможно где-либо ещё таились не замеченные мною неисправности. Вот только как это сделать? Решение подсказал alsav в переписке по электронной почте, оказалось, что для включения нагревателя достаточно всего лишь подать на 10 вывод посадочного места под старый микроконтроллер напряжение 3,3 Вольта, что приведёт к открытию транзистора, управляющего светодиодом оптосимистора, тот, в свою очередь, откроет тиристор, и через нагреватель потечёт ток. Я сделал так, и о чудо, случайно обжёгся об нагревшийся нагреватель! Никогда ещё не был так рад обжечься :)))
Убедившись, что всё работает, в куда более бодром состоянии духа я приступил к изготовлению печатной платы под новый микроконтроллер. Изготавливать плату было решено старым-добрым ЛУТом, травить в перекиси водорода. Я скачал все файлы с GitHub’а проекта в одном ZIP-архиве, распаковал его и нашёл файл ctrl-brd_reduced-F_Cu.ps, затем распечатал его. Если вы пользователь Ubuntu Linux, то открыть файл формата PostScript не составит проблем, встроенное приложение Evince, также известное как «Просмотр документов» позволит вам это сделать без малейших проблем. Для распечатывания этого файла в Windows можно использовать GSview, предварительно установив интерпретатор/обработчик формата Postscript — GPL Ghostscript. Я распечатал файл на фотобумаге, при помощи утюга перевёл изображение на фольгу, размочил и снял фотобумагу, а затем отправил плату травиться в раствор для травления. Далее — лужение платы, припаивание двух конденсаторов и ожидание появления в моём почтовом ящике почтового извещения для последующего получения в почтовом отделении двух мелких пакетов: одного с микроконтроллером, а второго — с ST-Link v2.
Подготовка платы
STM8 и ST-Link v2
Листочек
Припаяв микроконтроллер к самодельной плате, я приступил к его прошивке. Для этого к плате микроконтроллера нужно припаять несколько проволочек, при помощи которых дальнейшем плату можно будет подключить к ST-Link’у. Прежде всего нужно сказать, что для прошивки контроллеров семейства STM8 используется стандарт SWIM, так что нужно найти на плате и на программаторе соответствующие выводы для обмена данными. Кроме того, микроконтроллер нужно запитать напряжением 3,3 Вольта, поэтому находим на программаторе соответствующие выводы и тоже их подключаем. Нужно подключать вывод RST или нет — я точно не знаю, у меня и без него всё неплохо прошилось.
Подготовка к прошивке
Программирование STM8
Точки припаивания
Итог сборки
Заработало!
Ещё косяки производителя
В завершении повторюсь, вся конструкция паяльника напоминает дичайший самопал, не знаю уж, это мне так повезло, или TMart всем отправляет такие паяльники, но в итоге даже после переделки мне он всё равно не нравится. Скорее всего буду покупать другой, а этот «допилю» и отложу в резерв. Кстати, может кто-то в комментариях сможет посоветовать мне проверенный хороший и не очень дорогой паяльник или паяльную станцию с керамическим нагревателем, поддержкой жал Hakko 900M и мощностью не менее 50 Вт? Я был бы очень признателен! Пока облизываюсь вот на это или, как вариант, на это.
В качестве итога всему сказанному могу посоветовать лишь одно — не связывайтесь с этим паяльником, проблем с ним больше, чем удовольствия от работы.
Небольшое примечание
P.S. По всей видимости мне (похоже как и многим другим) Tmart прислал адовые подделки отвратительного качества. Вот обзор, тест, и разборка «нормального» паяльника Tomizawa FZ-880B.Просто сравните увиденное с моими фотографиями.
Знакомство с STM8 мне хотелось начать с какого нибудь полезного устройства. Им оказался счетчик витков для ручного намоточного станка.
Мне хотелось сделать устройство с батарейным питанием от двух микропальчиковых батарей, потребляющее мало энергии в рабочем режиме, имеющее простое кнопочное управление-«Сброс»,»Вкл/Выкл». Счетчик должен уметь реверсно считать. Иногда приходится отматывать витки, или бывают не штатные ситуации.
В наличии были STM8S003F3P6 и STM8L051F3P6 в корпусах TSSOP-20. Выяснилось что S003 не годится для моей задумки-у нее питания 3-5в, и скорее всего при 50% разряде 3вольтовой батареи микроконтроллер работать не будет. Поэтому выбор пал на STM8L051F3P6. По даташиту питание у нее от 1,8 до 3,6в. В качестве дисплея решено было использовать МT-10T7 Российского производителя МЭЛТ. Данный ЖК был куплен лет 7 назад, с тех пор достойного применения так и не нашел.Выкинуть его было жалко.
Начнем с датчиков. В начале решено было использовать интегральные датчики Холла,формирующие логический сигнал на выходе. Они мне достались с платы подводного фонаря. Оказалось что они не воспринимают короткие изменения магнитного поля. Даже при не больших оборотах, счетчик отказывался считать. Это меня огорчило. Пришлось изобретать свой велосипед. Решил использовать датчики холла от мотора cd-rom привода и lm358. Крайне сомнительно была работа этой затеи от 3в. Но попытка не пытка. На мое удивление схема отлично заработала при таком питании.
Схема проще не придумаешь. R5-задает ток через датчики Холла U1,U2. На DA1, сделан усилитель с КУ=50.К его выходам подключены транзисторы Q1,Q2 представляющие преобразователя уровней.Входы микроконтроллеров подтянуты через резисторы к плюсу,поэтому дополнительный огород городить не стал. Сигналы с выходов DA1 не соответствуют логическим уровням STM8. Зачем на плате предусмотрены элементы С1,С2-уже и не помню.Очевидно собирался бороться с помехами. Транзисторы на самом деле bc817-40. Но и те что на схеме должны работать. Датчики холла hw-101A(маркировка D).
Питание на датчик, и дисплей приходят с вывода PB1 микроконтроллера. Нагрузочной способности для этих целей более чем достаточно.
R1 это перемычка. Номинала «0»(пофигистора) у меня не нашлось,поэтому поставил самый мелкий что был.
Максимальное значение для счета это 65535. Кнопка «RESET» используется для сброса показаний счетчика, «ON/OFF» -вкл/выкл устройства.
Так как это мой второй проект на STM8, печатную плату можно назвать скорее отладочной.
Фото готового устройства.
В качестве датчика оборотов выступает стеклотекстолитовый диск, с приклеенным на нем ниодиевым магнитом диаметром 5мм,толщиной 1мм, и плата с датчиками Холла.Растояние между магнитом и датчиками около 5мм. Половина знакомест на дисплее осталась не задействована. Ни чего умнее не придумал-как показывать там напряжение питания. Контрастности индикатора не достаточно,поэтому пришлось наклонить всю плату под 45градусов. На фото датчик прикреплен скотчем, потом я его прикрепил несколькими витками изоленты. Конструкция получилась не шибко эстетичной, но этого мне вполне достаточно. Сам намоточный станок-ничто иное как старый механизм для перемотки кинопленки.Ни знаю какие манипуляции он был призван производить, но на него надевается бобина с пленкой. Индикатор,батарейный отсек, плата микроконтроллера приклеены к куску текстолита термоклеем.
Потребляемый ток во включенном состоянии 12,8мA , в выключенном 1,71мкА.
Программное обеспечение.
На звание гугу программирования ни коем разе не претендую, для спецов этот момент не будет интересен.
Код написан в среде IAR Embedded Workbench IDE. Микроконтроллер работает от встроенного RC генератора HSI с частотой 16мгц. Подсчетом числа витков занимается таймер общего назначения TIM2. Он имеет 16битный счетный регистр, и возможность работы с экодером(encoder mode). Это существенно облегчает задачу. Достаточно настроить таймер, и забыть. Он сам по себе будет считать значения, и реализовывает возможности реверсного счета. Правда значения там в два раза больше реальных получаются,из за оссобеностей работы этого режима.
Конечно же значения из TIM2 нужно как то извлекать, и выводить на экран. Этим занимается 8битный TIM4, генерирующий прерывания, по которому происходит эта операция. Прерывания приходят каждые 8мс.В обработчик засунут опрос кнопки «сброс»,и манипуляции по выводу информации от АЦП и TIM2 на экран.
Измерением напряжения батареи занимается АЦП. Вход опорного напряжения, внутри соединен с плюсовым источником питания микроконтроллера. Выбрать внутренний источник нельзя(как это например сделано в AVR). Зато можно измерить напряжение этого самого источника. Напряжение источника VREF измерено на заводе и записано в VREFINT_Factory_CONV byte,его можно считать.
Что бы основной программе не было скучно, она смотрит-не завершено ли преобразование АЦП и на основе 16 выборок вычисляет среднее.
Включение/выключение схемы реализовано на основе внешнего прерывания по нажатию на кнопку. По приходу прерывания меняем переменную, и сидим ждем пока кнопку отпустят.
Если пользователь хочет выключить устройство,то основная программа сохраняет значение счетного регистра TIM2 в ОЗУ. Все не задействованные выводы делает выходами,устанавливает на них нуль. Если этого не сделать у меня ловит помехи. Отключаем источник эталонного напряжения VREF и АЦП и засыпаем. Использован самый экономичный режим halt. Проснется микроконтроллер от нажатия кнопки «On»,по внешнему прерыванию(External interrupts).
Прошивка микроконтроллера.
Это отдельная история. Когда покупал STM32F0 Discovery, думал что программатор на ней умеет шить STM8.Оказалось что нет. Тратить деньги на отдельный программатор не хотелось, а возможности прошивки по USART меня не впечатлила(не всё 8битное семейство умеют это).
По ссылке нашел полноценный ST-Link. Внимательно посмотрев на схему,и на Discovery, выяснилось -можно допаять недостающие детали,обновить ПО, и получить почти полноценный программатор. Что и сделал. Все заработало. Теперь мой Discovery умеет шить STM8. Фото, без комментариев.
Файлы проекта.
В этой части руководства я расскажу о программировании и отладке микроконтроллеров STM8. Под программированием я подразумеваю перенос программы с вашего ПК во флэш-память микроконтроллеров STM8 . Этот процесс является жизненно важным шагом в обучении использованию любых микроконтроллеров. Поэтому четкое знание того, что требуется и как успешно выполнять программирование, является обязательным.
Большинство современных микроконтроллеров поддерживают какой-либо последовательный канал для программирования и отладки.Под последовательным я подразумеваю, что им не нужно много проводов для этой связи, нужны только два или три провода. В микроконтроллерах серии STM8 он называется SWIM. Это расшифровывается как однопроводной интерфейсный модуль. Это высокоскоростной канал связи между MCU и программатором / отладчиком . SWIM требуется только один провод для передачи данных. Этот вывод обозначен как SWIM на схеме выводов микроконтроллера.
Этот вывод также обозначен на плате разработки .
этот вывод должен быть подключен к выводу SWIM программатора / отладчика.Также должны быть подключены заземляющий контакт и контакт NRST (Resent). На этом подключение завершено. На изображении ниже показан программатор / отладчик, вы можете увидеть маркировку. Плата для разработки также должна получать питание с помощью кабеля micro-USB.
Последнее программное обеспечение, которое будет работать на чипе STM8, будет представлено в виде файла HEX. Вы могли получить его из Интернета или от человека, которого наняли для разработки программного обеспечения, или вы могли создать его самостоятельно, используя один из инструментов разработки.Программное обеспечение программатора считывает программу из этого HEX-файла и записывает ее во флэш-память микросхемы STM8, чтобы она могла ее выполнить.
Я использую программное обеспечение ST Visual Programmer или STVP, оно доступно бесплатно от ST. Вы можете скачать его отсюда и установить на свой компьютер. Он также устанавливает драйверы для ST-LINK V2.
Когда вы запускаете его в первый раз, вы получаете диалоговое окно конфигурации, как показано на изображении ниже. Он позволяет вам выбрать оборудование для программирования, режим программирования и целевой микроконтроллер.Выберите ST-LINK в качестве оборудования и режим программирования как SWIM.
Главное окно STVP показано ниже. Вам просто нужно выбрать файл HEX с помощью команды открытия, а затем нажать кнопку «Программа».
Я прикрепляю файл HEX, который мигает светодиодом на PB5 STM8S103F3. Это обычное крепление светодиода к макетной плате, показанное на изображении выше. Вы можете попробовать описанную в этой статье процедуру записи, используя этот HEX-файл.
Мы сердечно благодарим следующих людей, которые поделились этой страницей в различных социальных сетях и вдохновили нас на разработку более качественного контента!
Маджид Куябади, Бипин Кумар Синха, Клаудиу, Григоре Ман, Эльман, Анисио, Ларс Мадсен, Рахул, Ким Кёнхан, Хенти, Махди Хоссейни, Мадеш, Уттам Дутта, Авинаш, Авинаш Гупта,
платформа = ststm8
STM8 — это семейство 8-битных микроконтроллеров от STMicroelectronics, расширенный вариант архитектуры микроконтроллеров ST7.Микроконтроллеры STM8 особенно дешевы для полнофункционального 8-битного микроконтроллера.
Для получения более подробной информации посетите сайт производителя.
Отладка — решение «в один клик» для отладки с нулевой конфигурацией.
Вы можете переключаться между стабильными выпусками платформы разработки ST STM8 и последней апстрим-версии с использованием платформу в «platformio.ini» (файл конфигурации проекта), как описано ниже.
; Последняя стабильная версия [env: latest_stable] платформа = ststm8 доска =... ; Кастомная стабильная версия [env: custom_stable] платформа = [email protected] доска = ...
[env: upstream_develop] платформа = https://github.com/platformio/platform-ststm8.git доска = ...
Имя | Описание |
---|---|
framework-arduinostm8 | API-интерфейс программирования, подобный Arduino, для микроконтроллеров STM8 |
framework-ststm8spl | Стандартная периферийная библиотека для микроконтроллеров ST STM8S / A |
инструмент-openocd | Открыть встроенный отладчик.Бесплатная и открытая отладка на кристалле, внутрисистемное программирование и тестирование границ |
инструмент-stm8binutils | Набор инструментов STM8 с отладчиком GDB |
инструмент-stm8flash | stm8flash — приложение для программирования устройств stm8 с помощью SWIM / stlinkv (1,2). |
инструмент-stm8gal | stm8gal — это приложение для программирования или чтения памяти STM8 с использованием встроенного загрузчика ПЗУ (BSL) через интерфейс UART или SPI |
инструментальная цепочка-SDCC | Компилятор C для малых устройств |
Предупреждение
Пользователи Linux :
Пользователи Windows:
Убедитесь, что у вас правильно установлен драйвер USB с платы производитель
Имя | Описание |
---|---|
Ардуино | Arduino Wiring-based Framework позволяет писать кроссплатформенное программное обеспечение для управления устройствами, подключенными к широкому спектру плат Arduino, для создания всех видов творческого кодирования, интерактивных объектов, пространств или физического опыта |
Стандартная периферийная библиотека | Стандартная периферийная библиотека ST предоставляет набор функций для работы с периферией микроконтроллеров семейства STM32. |
Эта отладочная плата представляет собой минимальную коммутационную плату для микроконтроллера STM8S003F3P6 STM8. Все контакты ввода / вывода отмечены и подключены к стандартным контактам 2,54 мм для удобного использования.
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
БЫСТРЫЕ ССЫЛКИ:
ЧТО ТАКОЕ STM8
Недорого, 8 -битовый микроконтроллер производства ST, который может заменить Arduino / ATMEGA в простых приложениях.
ПИТАНИЕ ПЛАТЫ
На задней стороне вы можете увидеть LT1117-3.3 в SOT223, который преобразует входное напряжение с контактов RAW (левые углы) в 3.3 В. Плата также может питаться через разъем USB, но линии передачи данных, к сожалению, нигде не подключены.
Для внешних цепей можно использовать как входное напряжение, так и регулируемое 3,3 В, они доступны на нижнем коллекторе. Что сбивает с толку, вывод «5V» напрямую подключен ко входу, регулятора на 5 В нет. С подключенным USB вы, конечно, получите что-то довольно близкое к 5 В.
Если вы планируете управлять чем-то энергоемким с выходом 3,3 В, имейте в виду, что на регуляторе нет радиатора, поэтому его можно легко достать. горячий, если вы используете более высокое входное напряжение или переборщили с потребляемым током.Для Neopixels и подобных устройств я рекомендую подключать их напрямую к линии 5 В (при условии, что вы запитываете плату от USB!).
Есть еще два способа питания платы, а именно контакты в нижнем ряду и Вывод «3V3» в заголовке программирования. Похоже, вы можете просто подключить внешний источник 3,3 В к любому из контактов «3V3», и он будет работать. Я волновался, что LDO может не понравиться, но он работает нормально.
Это означает, что вы можете запитать его прямо от программатора, но будьте очень осторожны с большими нагрузками: в ключе ST-Link есть действительно крошечный регулятор (фото ниже).Легко жарить.
Taobao купил одинSTM8S003Разработка платы, всего несколько долларов, нет ничего! ! ! Такое ощущение, что его купили по такой дешевой для него цене, но опять же, дешево и нехорошо, это совсем не цена. Недавно я отладил лазерное сельскохозяйственное оборудование и купил STM32F407, который до сих пор является флагманским процессором высокого класса серии STM32 (июль 2017 г.). Я думаю о мобильных телефонах ~ ха-ха.в любом случае. .. Сделайте отступление, сегодня я хочу записать STM8S003
Давайте посмотрим на введение в новый фильм об этом мошенничестве :::
STM8S Основные характеристики основной платы:
Эта плата разработки использует линию питания MicroUSB и интеллектуальную линию передачи данных мобильного телефона совместима, линию передачи данных легко получить. это важная особенность, которая отличает этот модуль от других товаров для дома.
Сверхнизкая цена, удобный дизайн и полный набор материалов сэкономят вам деньги, время, силы и нервы!
STM8S Основные характеристики основной платы:
1. Используйте STM8S003F3P6Master управляющую ИС.
2. Вы можете использовать контакт 2,54 на плате или контактной площадке для получения питания. При использовании пэда для подачи питания диапазон входного напряжения составляет 4,5-15 В, и он может одновременно выводить 3,3 В наружу через контакт!
Примечание. Контактный разъем 5 В подключается к входному источнику питания модуля.
3. Выведите все контакты, метка контакта отмечена рядом с контактом, с кнопкой сброса, индикатором питания и индикатором демонстрации программы. Хотя воробей небольшой, у него пять внутренних органов.
4. Поддержка режима отладки SWIM.
Техническая информация:
Ссылка для скачивания:
Информация о программе STM8Series: http://pan.baidu.com/s/1dDF3QNJ
Программный инструмент STM8 IAR + STVP: http: // pan.baidu.com/s/1sjDfSLJ
STM8другая информация: http://pan.baidu.com/s/1o6Jpox0
1. Принципиальная схема основной платы (формат PDF) и программыtestSource. Запустите тестовую программу, светодиодный индикатор будет мигать после включения, поэтому вы можете проверить, нормально ли работает основная плата.
2. Обеспечить в среде разработки IAR и STVD Операция регистрации и работа функций библиотеки Два набора поддерживающих подпрограмм порта ввода / вывода, подпрограммы таймера, подпрограммы отправки UART, подпрограммы приема UART, примеры переключения часов, подпрограммы AD.
3.STM8 Приложения
4.STM8 Библиотека пакетов
5.STM8 Регистрация программирования каждого функционального модуля
6.IARD Среда разработки и программное обеспечение для программирования STVP
STM8S103F3P6 Сравнение производительности:
Как видите, суть в том, что их всего 100 раз, но я не думаю, что он будет использован один раз. ,,
Эти простые коммутационные платы доступны на aliexpress за сумму до одного человека. Доллар (я получил свой по 67 центов, включая доставку из Китая).Эти доски — моя основная платформа для разработки.
Аппаратные функции очень похожи на ATmega8:
Название платы | stm8blue |
---|---|
ЦП | STM8S103F3P6 |
Часы | 16 МГц, внутренний генератор |
Вспышка | 8 КБ |
RAM | 1 КБ |
EEPROM | 640 байт |
Напряжение ввода-вывода | 3.3В |
GPIO | 14 |
последовательные соединения | UART, SPI, I2C |
ШИМ | 4 (до 7 при альтернативном сопоставлении) |
АЦП | 5 каналов, 10 бит |
светодиод | PB5 (Arduino D3), активный низкий уровень, общий с I2C, красный |
интерфейс программирования | SWIM, без серийного загрузчика |
Разъем USB | mini, только питание (линии передачи данных не подключены) |
Один (красный) светодиод подключен к GPIO PB5 (вывод 11 процессора).Этот светодиод горит низким уровнем активности. Имейте в виду, что это один из сигналов I2C и с использованием светодиода. блокирует шину I2C . Кнопка предназначена для сброса. ЦП работает от 3,3 В, а линейный регулятор встроен в плату. Разъем micro USB есть только для питания (5 В) линии передачи данных не подключены.
Все контакты ЦП легко доступны на (дополнительных) разъемах для контактов (шаг 2,54 мм, идеально подходит для макетов).
Они очень похожи на платы ESP14 Wifi и большинство программ также будет работать с этими китайскими жемчужинами.
Я использую совместимый флеш-инструмент ST-Link V2 из зеленого пластика. Корпус. Тот, что в металлическом корпусе, имеет другую распиновку.
Подключение к flashtool:
Название сигнала | P3 на плате процессора | Инструмент для зеленой вспышки | Инструмент для зачистки металла |
---|---|---|---|
3V3 | 1 | 2 | 7 |
ПЛАВАТЬ | 2 | 5 | 5 |
ЗЕМЛЯ | 3 | 7 | 3 |
НРСТ | 4 | 9 | 1 |
Из-за плохого качества производства печатных плат некоторые более свежие партии (по состоянию на 2020 г.) Платы stm8blue, похоже, не имеют рабочего подключения к GND на SWIM разъем или короткое замыкание вывода SWIM на GND.
Вывод SWIM укорочен на GND
Попробуйте подключить GND к другому контакту GND платы или запитать плату через USB.
Большинство плат поставляются с запрограммированным миганием. Если светодиод мигает, когда плата питается от USB, но не работает, когда она подключена только к флешке. инструмент, на вашей плате, вероятно, отсутствует соединение GND.
Мои коммутационные платы поставлялись с предварительно запрограммированной программой мигания и активным бит защиты от записи.Для разблокировки перед первым использованием с помощью команды линия:
stm8flash -cstlinkv2 -pstm8s103? 3 -u
То же самое можно сделать из Arduino IDE, нажав Инструменты-> Записать. Загрузчик после выбора платы на базе STM8 и правильного выбора тип программатора (ST-Link V2). Название этого пункта меню не говорит само за себя, но я не мог найти способ изменить его или добавить еще один запись с лучшим названием. (Если знаете как, откройте вопрос)
Требуемый двоичный файл для stm8flash
включен в загрузку
автоматическая установка.В системах Windows его можно найти в каталоге AppData \ Local \ Arduino15 \ packages \ sduino \ tools \ STM8Tools \ 2019.02.05 \ win
.
Альтернативой графического интерфейса пользователя является инструмент STVP от ST, но он включает установку другой программный пакет (см. выпуск №85).
Среда Arduino использует собственную схему нумерации выводов, независимую от номера контактов физического процессора. Многие скетчи и библиотеки Arduino содержат жестко запрограммированные предположения о количестве контактов со специальными функциями.В идеале все эти числа должны быть одинаковыми, и все программы могут быть скомпилирован без изменений.
Здесь я обсуждаю возможное отображение контактов схемы и проверьте, насколько близко мы могли бы подойти к идеальному отображению. К сожалению, оказывается, что идеальное отображение невозможно.
В итоге выбрал простую геометрическую нумерацию квадрата UFQFPN20 пакет, начиная с вывода порта PA1 и считая с 0. Это приводит к это отображение:
sduino штифт | STM8S103 вывод порта процессора |
---|---|
0-2 | PA1-PA3 (PA1 и PA2 только слабые драйверы вывода) |
3-4 | PB5-PB4 (в обратном порядке) |
5-9 | PC3-PC7 |
10-15 | ПД1-ПД6 |
плюсов такого подхода:
минусов такого подхода:
Я все еще не очень доволен этим отображением.Вместо того, чтобы упрощать
это только добавляет еще один уровень абстракции и путаницы. Чтобы избежать этого, я
добавлены определения для обычных имен выводов ЦП, например PA1
и PD2
. в
В конце концов, эти обозначения кажутся мне намного проще. Я открыт для предложений
для лучшего сопоставления номеров контактов.
Выбранное отображение контактов для STM8S103 (возможная альтернативная функция в паратезов):
Phys. STM8 контакт | Имя | Функции | Геометрическое отображение | специальные функции |
---|---|---|---|---|
1 | PD4 | UART_CLK / T2-1 / звуковой сигнал | 13 | ШИМ |
2 | ПД5 | TX / Ain5 | 14 | Аналог A3 |
3 | ПД6 | RX / Ain6 | 15 | Аналог A4 |
5 | PA1 | (OscIn, без HS) | 0 | |
6 | PA2 | (OscIn, без HS) | 1 | |
10 | PA3 | SS / T2-3 | 2 | ШИМ |
11 | PB5 | SDA LED | 3 | |
12 | PB4 | SCL | 4 | |
13 | PC3 | T1-3 / [T1-n1] | 5 | ШИМ, (n ~) |
14 | PC4 | T1-4 / Ain2 / [T1-n2] | 6 | ШИМ, аналоговый A0, (n ~) |
15 | PC5 | SCK / [T2-1] | 7 | (~) |
16 | PC6 | MOSI / [T1-1] | 8 | (~) |
17 | PC7 | MISO / [T1-2] | 9 | (~) |
18 | ПД1 | (плавание) | 10 | |
19 | ПД2 | Ain3 / [T2-3] | 11 | Аналог A1, (~~) |
20 | PD3 | Ain4 / T2-2 | 12 | ШИМ, аналог A2 |
Контакты D3 / D4 (SDA / SCL, PB5 / PB4) отличаются от других, поскольку они правда открытые сливные штифтыЭто означает, что они могут только снизить выходную мощность или открыто. Чтобы поднять его на высокий уровень, им требуется внешний подтягивающий резистор. Это причина, по которой светодиод на этой коммутационной плате подключен между + 3,3 В и контакты, а не между контактом и GND, как обычно. Так это возможно для управления светодиодом путем записи нуля в выходной регистр.
D5 / D6 (PA1 / PA2, OscIn / OscOut) слабее остальных контактов. Старайтесь избегать эти контакты для светодиодов и других приложений с более высоким током.
8-разрядные микроконтроллеры STM8S003F3 / K3 value line предлагают 8 Кбайт флэш-памяти программ, а также встроенную EEPROM с истинными данными.В справочном руководстве по семейству микроконтроллеров STM8S (RM0016) они упоминаются как устройства с низкой плотностью размещения. Устройства линейки недорогих устройств STM8S003F3 / K3 обеспечивают следующие преимущества: производительность, надежность и снижение стоимости системы. Производительность и надежность устройства обеспечивается поддержкой EEPROM с истинными данными. до 100000 циклов записи / стирания, усовершенствованное ядро и периферийные устройства, изготовленные по новейшей технологии с тактовой частотой 16 МГц, надежные операции ввода-вывода, независимые сторожевые таймеры с отдельным источником тактовой частоты и система защиты тактовой частоты.Стоимость системы снижается благодаря высокому уровню интеграции системы с внутренними тактовыми генераторами, сторожевым таймером и сбросом при отключении питания.