Частотомер на stm8

CAMOKAT-BETEPAHA › Блог › Программирование микроконтроллеров: STM8 — как прошить?

Скоро буду выкладывать материал по поделкам на микроконтроллерах STM8S003F3P6, поэтому начинающим нужно знать, как его прошить.

Для прошивки микроконтроллера советую использовать USB свисток ST-LINK V2
Купить его можно в магазинах радиотоваров, к примеру в Чип и Дипе (дорого и быстро) или на Алиэкспресс (дешево и долго).
Для поиска по названию используем фразу » ST-LINK V2 » Выглядит программатор в виде, очень похожем на УСБ флешку. С одной стороны порт УСБ, с другой стороны стандартный 10 контактный разъем пинов.
Назначение контактов есть на корпусе. Только нужно учесть, что шлепают их на фабриках Китая много кто, и порой у разных производителей нумерация контактов отличается.

Между программатором и микросхемой должен быть посредник, ибо напрямую к ножкам микросхемы программатор не подключить. Эта вещь называется отладочная плата, ее можно купить там же, где и сам программатор. Отладочная плата уже содержит сам микроконтроллер, всю обвязку достаточно подключить проводами ее к программатору и можно прошивать. Для поиска на алиэкспресс достаточно ввести название чипа микроконтроллера, например » STM8S003F3P6 » Помимо самих микросхем в поиске будут выпадать и отладочные платы на них.

Если отладочная плата не подходит, потому что есть отдельно купленные чипы микроконтроллеров, и их нужно неоднократно прошить, то используются отладочные платы с панельками микросхем. В такую плату вставляется микроконтроллер и прошивается. Стоимость таких плат достаточно дороже, ищется на Алиэкспресс по фразе » TSSOP20 Burning «

Если печатка делается самостоятельно, то можно вывести отдельные контакты на разъем программатора, так называемое «внутресхемное программирование», тогда отладочная плата не нужна, можно напрямик подсоединить свою плату к программатору и прошить ее после распайки компонентов платы.

Для этого под программатор выводится 4 ноги микроконтроллера, это ножки:

7 ножка чипа VSS к минусу GND программатора
9 ножка чипа VDD к 3.3V или 5.0V программатора
18 ножка чипа PD1 к контакту SWIM программатора
4 ножка чипа NRST к контакту RST программатора

Особенности использования ножек при самостоятельной разработке:
Если линия 4 ножки сброса тянется дорожкой далеко от микроконтроллера к разъему, то подтяните ее резистором к плюсу питания резистором на 10 килоом.
Порт PD1 (18 ножка чипа) можно использовать на свои нужды, помимо вывода на разъем программатора, но в этом случае ее нельзя использовать с емкостной нагрузкой.

В качестве софта для прошивки можно использовать нагугленное для STM, я же покажу, как пользоваться родной софтиной «ST Visual Programmer» которую можно найти на сайте www.st.com, забив в тамошний поиск фразу » STVP-STM8 » Для скачивания на официальном сайте нужна регистрация, но можно воспользоваться моим скачанным оттуда архивом без регистрации umat.ru/files/en.stvp-stm8.zip (версия архива 42.0.0 конца 2018 года)

При установки софта установится все необходимое, драйвера программатора и сама программа. Название приложения «ST Visual Programmer» Запускаем его.

Сначала нужно настроить . В конфигурации вводим тип программатора, режим и название чипа

Теперь можно открыть файл прошивки. File>Open…

Файл прошивки имеет расширение файла .s19/ После загрузки прошивки в программу произойдет следующее:

В области описания (выделено красным) в разделе PROGRAM MEMORY будет указаны сведения файла прошивки. В поле главной вкладки PROGRAM MEMORY (синим) будет массив данных прошивки, в поле лога внизу (зеленым) будет этот самый лог загрузки. Поподробнее о нем: Последняя строка «Файл успешно загружен. Контрольная сумма …». Но перед этим куча ошибок с указанием строки, адреса и «выход за пределы — проигнорировано». Это нормально. Файл прошивки содержит всю область памяти, включая адреса с 0х4000 по 0х407F, этот диапазон является проигнорированной ЕЕПРОМ памятью, который относится а следующей вкладке «DATA MEMORY», на который нужно теперь перейти (нажать, где красным, ниже на картинке)

Загружать данные в «DATA MEMORY» необходимо, если область памяти ЕЕПРОМ содержит эти самые данные. Проверяем, открыв тот же самый файл прошивки. Загрузка будет идти подольше, большая часть файла прошивки будет проигнорирована, но область памяти ЕЕПРОМ будет успешно загружена:

Если в поле массива данных видны какие либо шестнадцатеричные значения, то значит прошивать их нужно. Если там все будет по нулям, то шить их нет необходимости. Я, к примеру, зачастую, если даже в описание поделки описано, что «настройки сохраняются в энергонезависимой памяти», не заполняю область ЕЕПРОМ данными, делая первичную инициализацию ЕЕПРОМ при первом запуске микроконтроллера. То есть микроконтроллер сам прошивает ЕЕПРОМ, поэтому сам файл прошивки не содержит этих данных.

Вкладка «OPTION BYTE» это те же самые фьюзы, как у микроконтроллеров АТтини, но менять их значения, как правило, нет никакой необходимости (фух!) — поэтому описывать их и не буду. После загрузки прошивки в программу можно подключать программатор и сам микроконтроллер или отладочную плату с ним. Для загрузки прошивки в микроконтроллер, необходимо нажать кнопку «загрузить все» (красным)

Если все прошло успешно, то быстро «проскачут» шкалы выполнения (зеленым) и в логе пробегут данные выполнения (синим) Если логи содержат фразы » completed» «successfully» то все успешно прошилось.
Если что то пойдет ни так, и логи закраснеют красными ругачками, то что то пошло не так. Подробнее о ругачках:

» Нет соединения с микроконтроллером…» Проверьте, правильно ли контачат провода программатора и жив ли сам чип.

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

«Чип залочен». Если залочить чип (заблокировать ему возможность записи и чтения прошивки), то нужно сначала снять защиту ( прошивка в памяти контроллера конечно потеряется).
Нужно перейти на вкладку «OPTION BYTE»( синим), убедится, что значение параметра защиты выключено (красным) и нажать на кнопку » записать данные» (зеленым).

Изучаем STM8S Медленный старт. Часть 0

0. На кого ориентирован материал, зачем и почему

При написании данной статьи, я предполагаю, что читающий умеет:

  • Внимательно читать (что редкость)
  • Немного работать с англоязычной технической литературой (ну или мотивацию научиться, т.к. первый язык программиста — английский)
  • Паять (хотя бы минимальные навыки)
  • Программировать на С (опять же, не все так сложно)
  • Гуглить (без этого никуда)
  • Пользоваться мультиметром и имеет прочие базовые навыки (по типу «не суй пальцы в розетку»)

Целями статьи считаю:

  • Обзорно пробежать все этапы разработки системы на базе микроконтроллера
  • Дать необходимые вводные для человека практически не посвященного
  • По возможности формирование у читающего понимания того, где, что и как найти

Думаю имеет смысл сделать подробный курс программирования МК.

Мне послужит поводом изучить всю периферию более детально и попутно поможет другим.
Знаю, что уже существует огромное количество статей и даже обучающих курсов, но я имею слегка иной подход. (Возможно получу адекватную критику, изменю мнение и примкну к MX Cube ребятам).

Грустно видеть, как stm контроллеры превращают в arduino.

По поводу arduino:

Есть 3 (известных мне, мб я просто не дорос) подхода к разработке ПО на МК:

  1. Разработка на ассемблере
  2. Разработка под конкретную модель МК
  3. Разработка с использованием HAL и им подобных библиотек

1) Я сторонник такого мнения, что если ты строишь дом, то не стоит обжигать каждый кирпич из глины своими руками, потому ассемблер отпадает (хоть и начинал с этого). Слишком низкая скорость разработки.

2) Библиотеки HAL и т.п. для начинающего непрозрачна и слишком много моментов «просто пиши вот так». Потому — тоже в помойку.

3) Наиболее здоровым вариантом для начинающего считаю процесс создания ПО под конкретный МК, полученные навыки позволят разобраться и с 8L и 32 сериями (хоть это и больно делать единолично по документации).

Вы наверно заметили, что arduino в этом списке не фигурирует, потому что это образовательная платформа и для разработки на её базе компактных устройств не предназначена. Но подход к её программированию по какой-то (мне не известной) причине переносится и расползается по интернету. И даже применяется в реальных коммерческих проектах. (представляет собой, «скачал на форуме библиотеку, подключил, заработало, как работает не знаю»).

Я же предлагаю, с моей точки зрения, академически и методически более осмысленный подход.

1. Выбор микроконтроллера

У меня в наличии имеется несколько STM8S105K6 в корпусе LQFP32, он из этого семейства, потому выбираю его.

Вы можете выбрать любой МК в пределах серии.

Есть готовые Discovery платы от ST, можно купить у китайцев или заказать с других ресурсов. Есть готовые платы на STM8S103F3P6 и ей подобные от китайцев.

Но, следует учесть, что готовые платы предназначены для обучения.

На сайте производителя st.com, находим свой МК и скачиваем к нему документы:

Reference manual: RM0016 — общий документ для всех МК семейств STM8S и STM8AF. Далее RM.
Datasheet: У меня DS5855 — документ к моделям STM8S105C4/6, STM8S105K4/6 и STM8S105S4/6. Далее DS.

Из вкусного у него (поверхностно):

  • Поддержка 16 МГц
  • 32 Кб Flash памяти, 1 Кб EEPROM и 2Кб RAM
  • Питание 2.95-5.5В
  • 8-и 16-битные таймеры
  • UART, SPI, I2C
  • 10-битный АЦП
  • до 38 дискретных входов/выходов

2. Необходимое оборудование

Я вижу два варианта работы с МК:

Здорово, классно, мне нравится. Так делают многие люди.

В этом случае для МК нужна будет так называемая обвязка. План простой:

  1. Берем макетную плату, в моем случае TQFP(32-64PIN)0.8MM, запаиваем на неё МК
  2. Берем двухрядную гребенку PLS-2×40 припаиваем к отверстиям, которые ведут к выводам МК
  3. Берем печатную макетную плату (у меня 9х15 см) и припаиваем на нее прошлый бутерброд
  4. Смотрим RM пункт 7. Power supply, читаем. Написано нужен конденсатор соединяющий вывод VCAP и наши 0В источника питания. Еще написано, что подробней в смотреть нужно в DS к конкретному МК в секции electical characteristics. Для меня это пункт 10.3.1 VCAP external capasitor со ссылкой на Table 18 где и указан номинал 470 — 3300 нФ. Я взял 1 мФ (на схеме C3). (для чего он нужен, надеюсь, почитаете сами в RM)
  5. Там же в DS в пункте 10.3.8. Reset pin characteristics находим номинал конденсатора 0.1мФ(на схеме C4). Резистор R4 номиналом 10 КОм используют в отладочных платах и различных application note, хотя внутри МК уже есть подтягивающий резистор номиналом от 30 до 80 КОм (если верить тому же DS). Параллельно конденсатору C4 ставим нашу кнопку сброса. Такую схему сброса можно увидеть например в Desighn note DN0005.
  6. Также, ST любят добавлять на отладочные платы конденсаторы по питанию на 100нФ, в количестве N выводов подключенных к питанию +1. На схеме нарисовано всего C1, C2 и C5 3 шт, и на плату я их не паял, но смысл вы поняли. На столе работать будет и без них, а в реальной коммерческой разработке лучше этим делом озаботиться при разведении платы устройства.
  7. Распаять SWIM разъем программирования (я делаю из PLS-1×40)
Читайте также  Методы обнаружения жучков

У меня получилось такое чудо:

Здорово, классно, мне нравится. Так делают многие люди.

Стоит ознакомиться с конфигурацией платы, если это плата от ST, то она сразу с программатором и подключается USB type B кабелем. На сайте ST будет схема на странице продукта. На плате будут кнопки, светодиоды, пищалки, ёмкостные кнопки и прочие прелести с которыми можно поиграться.

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

Шелкографии названий выводов лучше не верить и перепроверить сравнив с DS.

Работу с контактными макетными платами (breadboard) я не рассматриваю потому, что не использую.

Плюс нужен программатор, у меня китайский ST-Link V2. Умеет программировать и STM8 и STM32.

3. Выбор IDE

Для меня вопрос выбора пока не актуален, работаю в IAR для STM8, ибо в ней делали проект над которым я сейчас работаю, по той же причине старая версия.

Идем на сайт iar.com, в поиске набираем модель своего МК.
Скачиваем IAR Embedded Workbench for STM8, выбираем при установке size-limited evaluation и миримся с ограничением в 8 Кб кода. Или покупаем. Есть на запрещенных на территории РФ ресурсах взломанные версии, но для коммерческих проектов не годится.

Инструкция по установке есть в самом установщике либо в гугле.
Я использую версию 6.5.3.2581.
Устанавливаем среду, вместе с ней драйвера на программатор.

4. Создание проекта

Заходим в IDE, идем Project -> Create new project -> C++

Жмем OK, выбираем директорию (желательно не имеющую кириллицы и пробелов), выбираем имя (без пробелов и кириллицы).

Идем в корневую папку своей IDE и находим папку inc, для меня путь:

Находим среди заголовочных файлов iostm8 свою модель МК, для меня:

Подключаем её в самом начале и добавляем бесконечный цикл.

В меню Project -> Options -> General Options в графе Device выбираем свой МК.

В Project -> Options -> Debugger в графе Driver выбираем ST-LINK.

Находим на панели инструментов кнопку Download and Debug.
При первой компиляции среда попросит выбрать имя .eww файла. (Я называю так же как и проект.)

Внизу в окне Debug Log должны быть сообщения, что:

  • Preprocessor for STM8 — запустился препроцессор
  • Debugger for STM8 — запустился отладчик
  • Connected to STM8 SWIM Debugging system — произошло подключение к МК
  • Loaded debugee — произошла загрузка прошивки
  • Target reset — произошел сброс

Мы попали в режим отладки, но выполнение программы приостановлено.
Там же на панели инструментов находим и нажимаем кнопку Go.
Мы запустили МК в режиме отладки.

Нажимаем Stop debugging, отладка прекращается, но МК питается от программатора и дальше выполняет программу, а именно крутит бесконечный цикл и делает ничего.

Итоги

Получился краткий обзор и вводная в программирование МК серии STM8S без самого программирования. Получилась только база для работы, с этого обычно все и начинается — со сборки макета.

Раскрывать тему подробней смысла не вижу.

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

Насколько выполнены цели судить можно будет по тому, получилось ли у начинающего что-то сделать самостоятельно, используя предложенную мной информацию. (индикатор окно Debug log)

Изучаем STM8S Медленный старт. Часть 0

  • Новости 1С-Битрикс
  • Полезные статьи

0. На кого ориентирован материал, зачем и почему

При написании данной статьи, я предполагаю, что читающий умеет:

  • Внимательно читать (что редкость)
  • Немного работать с англоязычной технической литературой (ну или мотивацию научиться, т.к. первый язык программиста — английский)
  • Паять (хотя бы минимальные навыки)
  • Программировать на С (опять же, не все так сложно)
  • Гуглить (без этого никуда)
  • Пользоваться мультиметром и имеет прочие базовые навыки (по типу «не суй пальцы в розетку»)

Целями статьи считаю:

  • Обзорно пробежать все этапы разработки системы на базе микроконтроллера
  • Дать необходимые вводные для человека практически не посвященного
  • По возможности формирование у читающего понимания того, где, что и как найти

Думаю имеет смысл сделать подробный курс программирования МК.

Мне послужит поводом изучить всю периферию более детально и попутно поможет другим.
Знаю, что уже существует огромное количество статей и даже обучающих курсов, но я имею слегка иной подход. (Возможно получу адекватную критику, изменю мнение и примкну к MX Cube ребятам).

Грустно видеть, как stm контроллеры превращают в arduino.

По поводу arduino:

Есть 3 (известных мне, мб я просто не дорос) подхода к разработке ПО на МК:

  1. Разработка на ассемблере
  2. Разработка под конкретную модель МК
  3. Разработка с использованием HAL и им подобных библиотек

1) Я сторонник такого мнения, что если ты строишь дом, то не стоит обжигать каждый кирпич из глины своими руками, потому ассемблер отпадает (хоть и начинал с этого). Слишком низкая скорость разработки.

2) Библиотеки HAL и т.п. для начинающего непрозрачна и слишком много моментов «просто пиши вот так». Потому — тоже в помойку.

3) Наиболее здоровым вариантом для начинающего считаю процесс создания ПО под конкретный МК, полученные навыки позволят разобраться и с 8L и 32 сериями (хоть это и больно делать единолично по документации).

Вы наверно заметили, что arduino в этом списке не фигурирует, потому что это образовательная платформа и для разработки на её базе компактных устройств не предназначена. Но подход к её программированию по какой-то (мне не известной) причине переносится и расползается по интернету. И даже применяется в реальных коммерческих проектах. (представляет собой, «скачал на форуме библиотеку, подключил, заработало, как работает не знаю»).

Я же предлагаю, с моей точки зрения, академически и методически более осмысленный подход.

1. Выбор микроконтроллера

У меня в наличии имеется несколько STM8S105K6 в корпусе LQFP32, он из этого семейства, потому выбираю его.

Вы можете выбрать любой МК в пределах серии.

Есть готовые Discovery платы от ST, можно купить у китайцев или заказать с других ресурсов. Есть готовые платы на STM8S103F3P6 и ей подобные от китайцев.

Но, следует учесть, что готовые платы предназначены для обучения.

На сайте производителя st.com, находим свой МК и скачиваем к нему документы:

Reference manual: RM0016 — общий документ для всех МК семейств STM8S и STM8AF. Далее RM.
Datasheet: У меня DS5855 — документ к моделям STM8S105C4/6, STM8S105K4/6 и STM8S105S4/6. Далее DS.

Из вкусного у него (поверхностно):

  • Поддержка 16 МГц
  • 32 Кб Flash памяти, 1 Кб EEPROM и 2Кб RAM
  • Питание 2.95-5.5В
  • 8-и 16-битные таймеры
  • UART, SPI, I2C
  • 10-битный АЦП
  • до 38 дискретных входов/выходов

2. Необходимое оборудование

Я вижу два варианта работы с МК:

Здорово, классно, мне нравится. Так делают многие люди.

В этом случае для МК нужна будет так называемая обвязка. План простой:

  1. Берем макетную плату, в моем случае TQFP(32-64PIN)0.8MM, запаиваем на неё МК
  2. Берем двухрядную гребенку PLS-2×40 припаиваем к отверстиям, которые ведут к выводам МК
  3. Берем печатную макетную плату (у меня 9х15 см) и припаиваем на нее прошлый бутерброд
  4. Смотрим RM пункт 7. Power supply, читаем. Написано нужен конденсатор соединяющий вывод VCAP и наши 0В источника питания. Еще написано, что подробней в смотреть нужно в DS к конкретному МК в секции electical characteristics. Для меня это пункт 10.3.1 VCAP external capasitor со ссылкой на Table 18 где и указан номинал 470 — 3300 нФ. Я взял 1 мФ (на схеме C3). (для чего он нужен, надеюсь, почитаете сами в RM)
  5. Там же в DS в пункте 10.3.8. Reset pin characteristics находим номинал конденсатора 0.1мФ(на схеме C4). Резистор R4 номиналом 10 КОм используют в отладочных платах и различных application note, хотя внутри МК уже есть подтягивающий резистор номиналом от 30 до 80 КОм (если верить тому же DS). Параллельно конденсатору C4 ставим нашу кнопку сброса. Такую схему сброса можно увидеть например в Desighn note DN0005.
  6. Также, ST любят добавлять на отладочные платы конденсаторы по питанию на 100нФ, в количестве N выводов подключенных к питанию +1. На схеме нарисовано всего C1, C2 и C5 3 шт, и на плату я их не паял, но смысл вы поняли. На столе работать будет и без них, а в реальной коммерческой разработке лучше этим делом озаботиться при разведении платы устройства.
  7. Распаять SWIM разъем программирования (я делаю из PLS-1×40)

У меня получилось такое чудо:

Здорово, классно, мне нравится. Так делают многие люди.

Стоит ознакомиться с конфигурацией платы, если это плата от ST, то она сразу с программатором и подключается USB type B кабелем. На сайте ST будет схема на странице продукта. На плате будут кнопки, светодиоды, пищалки, ёмкостные кнопки и прочие прелести с которыми можно поиграться.

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

Шелкографии названий выводов лучше не верить и перепроверить сравнив с DS.

Работу с контактными макетными платами (breadboard) я не рассматриваю потому, что не использую.

Плюс нужен программатор, у меня китайский ST-Link V2. Умеет программировать и STM8 и STM32.

3. Выбор IDE

Для меня вопрос выбора пока не актуален, работаю в IAR для STM8, ибо в ней делали проект над которым я сейчас работаю, по той же причине старая версия.

Читайте также  Защита электрооборудования от токов утечки

Идем на сайт iar.com, в поиске набираем модель своего МК.
Скачиваем IAR Embedded Workbench for STM8, выбираем при установке size-limited evaluation и миримся с ограничением в 8 Кб кода. Или покупаем. Есть на запрещенных на территории РФ ресурсах взломанные версии, но для коммерческих проектов не годится.

Инструкция по установке есть в самом установщике либо в гугле.
Я использую версию 6.5.3.2581.
Устанавливаем среду, вместе с ней драйвера на программатор.

4. Создание проекта

Заходим в IDE, идем Project -> Create new project -> C++

Жмем OK, выбираем директорию (желательно не имеющую кириллицы и пробелов), выбираем имя (без пробелов и кириллицы).

Идем в корневую папку своей IDE и находим папку inc, для меня путь:

Находим среди заголовочных файлов iostm8 свою модель МК, для меня:

Подключаем её в самом начале и добавляем бесконечный цикл.

В меню Project -> Options -> General Options в графе Device выбираем свой МК.

В Project -> Options -> Debugger в графе Driver выбираем ST-LINK.

Находим на панели инструментов кнопку Download and Debug.
При первой компиляции среда попросит выбрать имя .eww файла. (Я называю так же как и проект.)

Внизу в окне Debug Log должны быть сообщения, что:

  • Preprocessor for STM8 — запустился препроцессор
  • Debugger for STM8 — запустился отладчик
  • Connected to STM8 SWIM Debugging system — произошло подключение к МК
  • Loaded debugee — произошла загрузка прошивки
  • Target reset — произошел сброс

Мы попали в режим отладки, но выполнение программы приостановлено.
Там же на панели инструментов находим и нажимаем кнопку Go.
Мы запустили МК в режиме отладки.

Нажимаем Stop debugging, отладка прекращается, но МК питается от программатора и дальше выполняет программу, а именно крутит бесконечный цикл и делает ничего.

Итоги

Получился краткий обзор и вводная в программирование МК серии STM8S без самого программирования. Получилась только база для работы, с этого обычно все и начинается — со сборки макета.

Раскрывать тему подробней смысла не вижу.

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

Насколько выполнены цели судить можно будет по тому, получилось ли у начинающего что-то сделать самостоятельно, используя предложенную мной информацию. (индикатор окно Debug log)

Частотомер на PIC16F628А своими руками

Одним из приборов-помощников радиолюбителя должен быть частотомер. С его помощью легко обнаружить неисправность генератора, измерить и подстроить частоту. Генераторы очень часто встречаются в схемах. Это приемники и передатчики, часы и частотомеры, металлоискатели и различные автоматы световых эффектов…

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

Один из таких несложных наборов я недорого приобрёл на сайте китайского магазина здесь: GEARBEST.com

Набор содержит:

  • 1 x PCB board (печатная плата);
  • 1 x микроконтроллер PIC16F628A;
  • 9 x 1 кОм резистор;
  • 2 x 10 кОм резистор;
  • 1 x 100 кОм резистор;
  • 4 x диоды;
  • 3 x транзисторы S9014, 7550, S9018;
  • 4 x конденсаторы;
  • 1 x переменный конденсатор;
  • 1 x кнопка;
  • 1 x DC разъём;
  • 1 x 20МГц кварц;
  • 5 x цифровые индикаторы.

Описание частотомера

  • Диапазон измеряемых частот: от 1 Гц до 50 МГц;
  • Позволяет измерять частоты кварцевых резонаторов;
  • Точность разрешение 5 (например 0,0050 кГц; 4,5765 МГц; 11,059 МГц);
  • Автоматическое переключение диапазонов измерения частоты;
  • Режим энергосбережения (если нет изменения показаний частоты — автоматически выключается дисплей и на короткое время включается;
  • Для питания Вы можете использовать интерфейс USB или внешний источник питания от 5 до 9 В;
  • Потребляемый ток в режиме ожидания — 11 мА

Схема содержит небольшое количество элементов. Установка проста — все компоненты впаиваются согласно надписям на печатной плате.

Мелкие радиодетали, разъемы и т.п. упакованы в небольшие пакетики с защелкой. Индикаторы, микросхема и её панелька для исключения повреждений ножек вставлены в пенопласт.

Принципиальная схема частотомера

Напряжение на выводах микроконтроллера

  1. 4,0
  2. 4,0
  3. 0,3
  4. 5,0
  5. 0,98
  6. 0,98
  7. 0,98
  8. 0,98
  9. 0,98
  10. 0,98
  11. 5
  12. 1,26
  13. 2,13
  14. 4
  15. 4,12

Генератор для проверки кварцев

Приступаем к сборке

Высыпаем на стол содержимое пакета. Внутри находятся печатная плата, сопротивления, конденсаторы, диоды, транзисторы, разъемы, микросхема с панелькой и индикаторы.

Ну и вид на весь набор в полностью разложенном виде.

Теперь можно перейти к собственно сборке данного конструктора, а заодно попробовать разобраться, на сколько это сложно.

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

Конденсаторы маркируются также как и резисторы.
Первые две цифры — число, третья цифра — количество нулей после числа.
Получившийся результат равен емкости в пикофарадах.
Но на этой плате есть конденсаторы, не попадающие под эту маркировку, это номиналы 1, 3 и 22 пФ.
Они маркируются просто указанием емкости так как емкость меньше 100 пФ, т.е. меньше трехзначного числа.

Резисторы и керамические конденсаторы можно впаивать любой стороной — здесь полярности нет.

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

Немного рассмотрим такой компонент, как — подстроечный конденсатор. Это конденсатор, ёмкость которого можно изменять в небольших пределах (обычно 10-50пФ). Это элемент тоже неполярный, но иногда имеет значение как его впаивать. Конденсатор содержит шлиц под отвертку (типа головки маленького винтика), который имеет электрическое соединение с одним из выводов. Чтобы было меньше влияния отвертки на параметры цепи, надо впаивать его так, чтобы вывод соединенный со шлицом, соединялся с общей шиной платы.

Разъемы — сложная часть в плане пайки. Сложная не точностью или малогабаритностью компонента, а наоборот, иногда место пайки тяжело прогреть, плохо облуживается. Потому нужно ножки разъёмов дополнительно почистить и облудить.

Теперь впаиваем кварцевый резонатор, он изготовлен под частоту 20МГц, полярности также не имеет, но под него лучше подложить диэлектрическую шайбочку или приклеить кусочек скотча, так как корпус у него металлический и он лежит на дорожках. Плата покрыла защитной маской, но я как то привык делать какую нибудь подложку в таких случаях, для безопасности.

Далее впаиваем транзисторы, диоды и индикаторы. В отличии от резисторов и конденсаторов здесь нужно впаивать правильно, согласно рисунку и надписям на плате.

Длительность пайки каждой ножки не должна превышать 2 сек! Между пайками ножек должно пройти не менее 3 сек на остывание.

Ну вот собственно и всё!

Теперь осталось смыть остатки канифоли щёткой со спиртом.

Осталось правильно вставить микросхему в свою «кроватку» и подключить питание к схеме.

Питание должно быть В пределах от 5 до 9 В — постоянное стабилизированное без пульсаций. (В схеме нет ни одного эл.конденсатора по питанию.)

Не забудьте у микросхемы есть с торца ключ — он располагается у вывода №1! Не следует полагаться на надпись названия микросхемы — она может быть написана и к верх ногами.

При подключении питания и отсутствия сигнала на входе высвечивается .

Первым делом нашёл кучу кварцев и начал проверять. Следует отметить, что частота кварца, например 32,768 кГц не может быть измерена, т.к. измерение ограничивается в диапазоне от 1 МГц.

Можно измерить, например 48 МГц, но следует иметь ввиду, что будет измерены гармонические колебания кварцевого генератора. Так 48 МГц будет измерена основная частота 16 МГц.

Подстроечным конденсатором можно подстроить показания частотомера по эталонному генератору или сравнить с заводским частотомером.

Режим программирования частотомера позволяет вычесть четыре основные запрограммированные ПЧ частоты 455 кГц; 3,9990 МГц; 4,1943 МГц; 4,4336 МГц; 10,700 Гц, а также любую собственную частоту.

Таблица алгоритма програмирования

Чтобы войти в режим программирования (Prog) нужно нажать и удерживать кнопку в течении 1-2 сек.

Затем нажимаем кнопку и поочередно пролистываем меню:

«Quit» — «Выход» : прерывает режим программирования, ничего не сохраняя.

«Add» — «Добавление» : сохранение измеренной частоты и в дальнейшем эта частота будет складываться с измеряемыми частотами.

«Sub» — «Вычитание» : сохранение измеренной частоты и в дальнейшем она будет вычитаться с измеряемыми частотами.

«Zero«- «Ноль» — обнуляет все ранее запрограммированные значения.

«table» — «Таблица«: в этой таблице можно выбрать основные запрограммированные частоты 455 кГц; 3,9990 МГц; 4,1943 МГц; 4,4336 МГц; 10,700 Гц. После выбора записи (длительное нажатие), вы вернетесь в «Главное меню» и выберите пункт «Add» — «добавить» или «Sub» — «убавить«.

«PSave» / «NoPSV«: включает / отключает режим энергосбережения. Дисплей отключается если нет изменения частоты некоторое время.

Если показания сильно отличаются, то возможно включена предустановка. Чтобы её отключить войдите в режим программирования и затем нажимая кнопку выберите «Zero» и удерживайте пока не начнёт мигать, затем отпустите её.

Интересный обучающий конструктор. Собрать частотомер под силу даже начинающему радиолюбителю.

Качественно изготовленная печатная плата, прочное защитное покрытие, небольшое количество деталей благодаря программируемому микроконтроллеру.

Конструктор приятно порадовал, я считаю его хорошей базой как в получении опыта сборки и наладки электронного устройства, так и в опыте работы с немало важным для радиолюбителя прибором — частотомером.

Доработка частотомера

Внимание! В заключение хочется отметить, что входной измеряемый сигнал подаётся непосредственно на вход микросхемы, поэтому для лучшей чувствительности и главное, защиты микросхемы нужно добавить по входу усилитель-ограничитель сигнала.

Можно спаять один из предложенных ниже.

Сопротивление R6 на верхней и R9 на нижней схеме подбирается в зависимости от напряжения питания и устанавливается на его левом выводе 5 В. При питании 5 В сопротивление можно не ставить.

… или простой, на одном транзисторе:

Номиналы сопротивлений указаны при питании 5В. Если у Вас питание усилителя другим напряжением, то подберите номинал R2,3 чтобы на коллекторе транзистора было половина питания.

Читайте также  Контроль соединительных линий офисных атс

Схема похожего частотомера с входным каскадом усилителя.

Вторая доработка. Для увеличения измеряемого потолка частоты можно собрать к частотомеру делитель частоты. Например, схемы ниже:

Надеюсь, что обзор данного конструктора-частотомера был интересен и полезен. Удачи!

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

  • Вычислительная техника
    • Микроконтроллеры микропроцессоры
    • ПЛИС
    • Мини-ПК
  • Силовая электроника
  • Датчики
  • Интерфейсы
  • Теория
    • Программирование
    • ТАУ и ЦОС
  • Перспективные технологии
    • 3D печать
    • Робототехника
    • Искусственный интеллект
    • Криптовалюты

Чтение RSS

Программируем STM8S в Arduino IDE

Как запрограммировать микроконтроллер STM8 с помощью Arduino IDE

Несмотря на то, что разработчики встраиваемых систем могут иметь несколько негативное отношение к Arduino IDE, на самом деле эта среда разработки остается одной из самых универсальных и широко используемых платформ для разработки встраиваемых систем в современном мире. Успех плат Arduino и связанных с ними микроконтроллеров, таких как Atmega328p, можно объяснить универсальностью и простотой программирования, и можно легко связать успех более 70% плат микроконтроллеров, которые достигли уровня популярности, аналогичного к Arduino, благодаря их совместимости с Arduino IDE.

Чтобы извлечь выгоду из простоты программирования, предлагаемой в Arduino IDE, сообщества, посвященные различным микроконтроллерам, создают инструменты совместимости, и одним из последних является инструмент Sduino, разработанный Майклом Майором для облегчения программирования микроконтроллеров STM8 с использованием Arduino IDE.

Семейство микроконтроллеров STM8 включает в себя серии микроконтроллеров STM8S, STM8L и STM8AF, которые реализованы на базе высокопроизводительного 8-разрядного ядра и поставляются с современным набором периферийных устройств. Они изготовлены с использованием собственной технологии энергонезависимой памяти 130 нм компании STMicroelectronics, и поддерживают быструю и безопасную разработку благодаря расширенным операциям с указателями стека, расширенным режимам адресации и новым инструкциям.

Инструмент Sduino позволяет программировать эти микроконтроллеры с использованием Arduino IDE, а также поддерживает стандартную периферийную библиотеку (SPL), что означает, что тот же код, написанный в Arduino IDE, может быть скомпилирован практически без изменений в официальной среде ST Visual Develop IDE.

Sduino все еще находится в стадии разработки и в настоящее время не поддерживает большое количество популярных библиотек Arduino, но поддерживает эту экосистему достаточно, чтобы быть полезным. Итак, в сегодняшнем материале мы рассмотрим процесс настройки Arduino IDE для программирования микроконтроллера STM8. В демонстрационных целях мы будем использовать плату разработки STM8S103F, и нашей целью будет загрузить пример мигания светодиодом на плату. Для этих целей нам также понадобится программатор ST link V2. Мы будем использовать светодиод на плате разработки STM8S103F.

Поскольку мы будем реализовывать пример мигания светодиодом с использованием светодиодного индикатора на плате STM8S103F, с точки зрения схемы делать особо ни чего не надо. Тем не менее, для тех, кто может быть не знаком с процессом подключения программатора ST к плате STM8S103F, принципиальная схема подключения выглядит следующим образом.

Если вы используете ST-Link в первый раз, вам потребуется установить драйвер и настроить его. В большинстве случаев установка драйверов начнется автоматически, как только вы подключите программатор ST-Link к вашему компьютеру.

Чтобы упростить процесс интеграции плат в Arduino IDE, в IDE имеется функция под названием «менеджер плат» (board manager). С помощью менеджера плат можно добавить новые платы (в основном программные компоненты, необходимые для того, чтобы Arduino IDE могла загружать код в конкретный МК), можно добавить в IDE. Эти программные компоненты, часто называемые ядрами, обычно разрабатываются производителями плат (как это делает Sparkfun для своих плат) или группой пользователей, которые хотят, чтобы их плата работала с Arduino IDE. Sduino представляет собой ядро для плат STM8, и мы будем устанавливать его в Arduino IDE с помощью менеджера плат. Следуйте приведенным далее инструкциям, чтобы сделать это.

Откройте окно настроек в Arduino IDE. Перейдите в Файл-Настройки (File-Preferences). В окне настроек найдите текстовое поле «Дополнительные URL-адреса менеджера плат» (Additional Board Manager URLs) и введите в поле эту ссылку https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json. Поскольку у вас уже могут быть другие URL-адреса, отделите их друг от друга запятой и нажмите OK, когда закончите.

Далее, откройте менеджер плат Arduino «Инструменты-Платы-Менеджер плат» (tools-Boards-Boards manager). Когда менеджер плат откроется, введите Sduino в строку поиска. Вы должны увидеть ядро Sduino, как показано на следующем изображении. Нажмите на кнопку установки, чтобы установить ядро.

После завершения установки закройте менеджер плат. Теперь платы STM8 должны быть доступны в списке плат, как показано на следующем изображении.

Установка ядра Sduino автоматически установит некоторые библиотеки Arduino, которые были модифицированы для работы с платами STM8. Установите тип вашей платы, перейдя в «инструменты-платы» (tools-boards), на одну из плат STM8 и перейдите к примерам «файл-примеры» (file-examples). Вы увидите список примеров для вновь установленных библиотек.

После этого у вас есть все необходимое для загрузки кода на платы STM8s. И как уже упоминалось во введении, в демонстрационных целях мы загрузим пример мигания светодиодом на плату разработки STM8S103F. Вы можете использовать стандартный пример Blink или использовать пример среди библиотек, специфичных для STM8s (File-Example-Generic_Example-Basics-Blink). Вот его код:

Убедитесь, что ваша плата подключена к компьютеру через ST-link как на схеме. В Arduino IDE убедитесь, что выбран правильный тип платы, и в качестве программатора установите ST-Link/V2. Сделав все это, нажмите кнопку загрузки, после чего вы должны увидеть, что светодиод на плате начинает мигать.

Карманный осциллограф «Лори» на микроконтроллере STM32F103

Максим Керимов
Декабрь 2016 г.

Постановка задачи

Сделать простейший карманный осциллограф с минимальными затратами времени и средств.

Список компонентов

  • Китайский клон платы «Maple Mini» с микроконтроллером STM32F103C8T6 (AKA Blue Pill board).
  • Дисплей 1.8 TFT 128×160 SPI с драйвером ST7735.
  • Пять резисторов и два конденсатора (рис. 3).
  • Линейный регулятор с малым падением напряжения AMS1117-3.3 (по желанию).
  • Щуп-зажим «пинцет» — 2 шт.
  • Кнопка миниатюрная нормально разомкнутая без фиксации, с щелчком.

Рис. 1. Тестовый запуск осциллографа. Синусоида сгенерирована саунд бластером, от того ступенчатая.

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

7 диапазонов с ценой деления (клетки): 7 µS, 28 µS, 113 µS, 559 µS, 2 mS, 10 mS, 20 mS.
Чувствительность: 0.25 и 1.0 В/дел.
Максимальная амплитуда входного сигнала: 6 В.
Входное сопротивление: 20 kΩ.
Питание: 4 аккумулятора АА.
Потребляемый ток: 80 mA.

Сигнал какой частоты можно увидеть?

Теоретически можно увидеть 477 кГц. Отличить меандр от пилы, теоретически, можно на частотах 350 кГц и ниже. Практически же, более-менее комфортно можно наблюдать сигналы до 200 кГц. Размер клетки: 20 x 20 px.

«Частота развёртки» нашего осциллографа зависит от быстродействия АЦП. В STM32F103 разрядность АЦП фиксирована и равна 12. Это в полтора раза больше, чем нам нужно. В STM32F407, например, разрядность можно уменьшить, что сократит время измерений. АЦП STM32F407 можно перевести в режим triple interleaved mode и получить скорость измерений 7.2 MSPS (грубо рисовать сигналы до 1 MHz). Но F407 в три раза дороже F103, а плата с ним (development board) — раз в 6.

АЦП, встроенные в микроконтроллеры, обычно не отличаются высоким быстродействием, хотя есть, например, LPC4370 (12-bit at 80 MSPS). Очевидно, что когда нужна скорость, следует использовать специализированные микросхемы, например AD9283. Но быстро измерить сигнал недостаточно, полученные данные нужно успеть куда-то сохранить за время измерения. Те, у кого есть время и деньги, могут поэкспериментировать с AD9226 (65 MSPS) и STM32F103VCT6 + FPGA.

Схема

Рис. 2. Подключение дисплея.

Рис. 3. Питание и входная цепь.

Делитель напряжения R1-R2 служит для контроля уровня заряда аккумуляторов. В правом верхнем углу экрана — пиктограмма батарейки, как на мобильном телефоне (на фото отсутствует).

Внешний регулятор напряжения нужен не всегда. На плате микроконтроллера есть свой регулятор 3.3 В 100 мА. Если питать дисплей от него, будет греться. На платах другого типа (STM Smart V2 board — с большим разъёмом JTAG) стоит как раз AMS1117, для них внешний не нужен. На некоторых дисплеях тоже есть AMS1117 (и перемычка). Решайте сами.

Последовательно с аккумуляторами имеет смысл поставить выключатель питания ПД9-1 или аналогичный.

Если есть желание увеличить размер своего импеданса, на вход можно добавить неинвертирующий повторитель на ОУ, что позволит достичь значения 1 MΩ и более. Питать ОУ следует непосредственно от аккумуляторов напряжением 4.8 — 5.4 В.

Принцип действия

Половина текста программы — это всевозможные инициализации. Принцип действия цифрового осциллографа прост и очевиден.

АЦП производит серию непрерывных последовательных измерений уровня сигнала. Полученные значения складываются в память средствами DMA. Каждый раз мы засекаем время и определяем продолжительность серии замеров. Так мы узнаём цену деления оси времени.

Анализируя записанные значения уровня сигнала, ищем первый экстремум, после чего рисуем сигнал на экране. Так мы пытаемся сделать подобие синхронизации. Она неплохо работает на гладких сигналах и практически бесполезна на широкополосных.

Даём пользователю насладиться картинкой в течение одной секунды, сами в это время опрашиваем кнопку. Кратковременное нажатие кнопки переключает диапазоны по кругу. Долгое нажатие меняет чувствительность. Затем всё повторяется.

Текст программы (некоторые называют его «скетч»)

  • main.c
  • lcd7735.c — Дисплей и SPI. Инициализация и функции.
  • delay.c — Счётчик: инициализация, функции пауз.
  • ADC.c — АЦП и DMA.
  • font7x15.h — Шрифт.

Для компиляции я использую среду CooCox CoIDE. Не выложил сюда Кокс-проект, поскольку он содержит абсолютные пути к файлам. Проще создать новый, чем править все пути. После создания проекта не забудьте подключить библиотеки: RCC, GPIO, DMA, SPI, TIM, ADC.

Как создать CooCox CoIDE проект

  1. Запускаем IDE. Из меню: Project > New Project
  2. Вводим имя, запоминаем где лежит проект.
  3. Выбираем «Board» , жмём «Next >»
  4. STM32 > STM32F103x > STM32F103C8T6 Core Development Board
  5. В окне «Repository» выбираем вкладку «Peripherals» , подключаем библиотеки (см. рис.)
  6. Чтобы Кокс не ругался на stdio.h , задаём: View > Configuration > Link > Library: «Use Base C Library» .
  7. Распаковываем скачанные файлы в папку проекта.
  8. Жмём «F7» .
  9. Ликуем.
  10. Чтобы автор порадовался вашему триумфу, переводим ему 50 рублей на пиво.

Прошивал при помощи программатора-отладчика ST-Link V2. Можно и без него, через USB-Serial адаптер.

Если у вас есть комментарий по существу, дополнение, которое поможет сделать проект лучше или просто хотите поделиться фотографией своего изделия — присылайте.