В уроке получим минимальную информацию об отладочной плате STM32F103C8T6. Добавим к плате компоненты необходимые для загрузки программ в микроконтроллер (прошивка FLASH).
Предыдущий урок Список уроков Следующий урок
В наших уроках будем использовать отладочную плату на базе микроконтроллера STM32F103C8T6.
Часто ее называют ”Blue pill”, в переводе – синяя таблетка или пилюля.
По моей партнерской ссылке плата стоит всего 175 руб.
Технические характеристики платы STM32F103C8T6.
В последующих уроках мы будем подробно изучать функциональные возможности микроконтроллера и платы. Сейчас коротко, только общие характеристики.
Микроконтроллер | STM32F103C8T6, ядро ARM Cotrex M3 |
Число разрядов | 32 бита |
Максимальная частота | 72 мГц |
Объем памяти программ (FLASH) | 64 / 128 кБайт |
Объем памяти данных (RAM) | 20 кБайт |
Выводы | 37 |
Таймеры общего назначения | 3 |
Расширенный таймер с ШИМ управления двигателем | 1 |
Системный таймер | 1 |
Сторожевые таймеры | 2 |
UART | 3 |
SPI | 2 |
I2C | 2 |
CAN | 1 |
USB | 1 |
Контроллеры прямого доступа к памяти | 7 |
АЦП | 2 АЦП, 10 каналов, время преобразования 1 мкс |
Часы реального времени | есть |
Аппаратный модуль расчета CRC | есть |
Напряжение питания микроконтроллера | 2 … 3,6 В |
Напряжение питания платы | 5 В |
Ток потребления | до 50 мА |
Размеры платы | 53 x 22,5 мм |
Выводы микроконтроллера непосредственно соединены с выводами платы.
Сейчас обращаем внимание на следующее:
- Микроконтроллер питается от напряжения 3 В и высокие уровни выходных и входных дискретных сигналов у него тоже 3 В. Но часть выводов, обозначенных на схеме закрашенной точкой, допускают при использовании в качестве входов подключение сигналов с уровнями 5 В. Так называемые толерантные к 5 В входы. Остальные входы рассчитаны на напряжение не более напряжения питания, обычно 3 В. Повышение этого напряжения свыше 4 В приведет к повреждению микроконтроллера.
- При использовании в качестве выходов, выводы микроконтроллера допускают вытекающий и втекающий ток не более 20 мА. Рекомендуется не более 8 мА. Но 3 вывода, отмеченные восклицательным знаком, могут быть использованы только в схемах с втекающим током и не более 3 мА.
- К выводу PC13 подключен светодиод общего назначения. Светится он при низком уровне сигнала.
Система питания платы.
Схема цепей питания выглядит так.
Узел вырабатывает напряжение 3,3 В, необходимое для питания микроконтроллера. Используется стабилизатор XC6204.
Он получает питание 5 В либо с USB порта, либо с вывода платы 5 V. Эти цепи соединены непосредственно без защитного диода. Поэтому использовать плату с одновременным питанием от этих двух источников нельзя.
Ток потребления микроконтроллера зависит от частоты тактирования и использования периферийных устройств.
Частота, мГц | Ток потребления, мА | |
Все периферийные устройства включены | 72 | 50 |
48 | 36 | |
36 | 29 | |
24 | 20 | |
16 | 15 | |
8 | 9 | |
Все периферийные устройства выключены | 72 | 33 |
48 | 25 | |
36 | 20 | |
24 | 14 | |
16 | 11 | |
8 | 7 |
Я привел эту таблицу, чтобы вы поняли насколько важно выбирать оптимальную частоту тактирования, особенно в приложениях критичных к энергопотреблению. Микроконтроллеры STM32 позволяют это делать гибко и оперативно.
Вот полная принципиальная схема платы.
Загрузка программы в микроконтроллер с помощью системного бутлоадера.
Четырех контактный разъем на торце платы предназначен для загрузки программ с помощью аппаратного программатора, например StLink. Но в микроконтроллере существует программный загрузчик, позволяющий зашить программу через UART 1 (выводы A9 и A10). Он называется системным загрузчиком и зашивается в память микроконтроллера на этапе производства.
За режим работы платы отвечают 2 желтые перемычки.
Это обычный режим работы. При включении или сбросе запускается программа из FLASH.
При таком положении перемычек запускается системный загрузчик. Это режим прошивки FLASH-памяти микроконтроллера.
При таком положении перемычек программа загружается в ОЗУ. Используется на этапе отладки для сохранения ресурса программирования FLASH-памяти.
Соответствие состояния входов BOOT и режимов работы микроконтроллера STM32. Перемычка BOOT0 на рисунках расположена сверху.
BOOT1 | BOOT0 | Режим запуска программы |
0 | 0 | Внутренняя FLASH |
1 | 0 | |
0 | 1 | Системная память |
1 | 1 | Внутреннее ОЗУ |
Таким образом, процесс программирования через системный бутлоадер выглядит так:
- подключить выводы A9 и A10 к COM порту компьютера;
- установить перемычку BOOT0 в режим запуска из системной памяти;
- сбросить микроконтроллер;
- запустить на компьютере программу прошивки FLASH микроконтроллера;
- вернуть перемычки в состояние запуска программы из FLASH;
- сбросить микроконтроллер.
Во первых в современных компьютерах не часто встречается COM порт. Во вторых слишком много манипуляций с перемычками и сбросом. Утомительное занятие.
Я упростил этот процесс так.
Плату подключил к компьютеру через мост USB-UART. Я использовал PL2303, но можно применить любой другой модуль, даже плату Ардуино со встроенным преобразователем интерфейсов. Например, Arduino Nano. Надо только соединить вход сброса с землей для того, чтобы микроконтроллер не влиял на сигналы преобразователя интерфейса CH340.
Вместо перемычки BOOT0 я установил кнопку. Еще одну кнопку припаял на сигнал сброса. Штатной кнопкой сброса пользоваться неудобно.
Вот моя схема отладочного модуля.
Резистор 10 кОм припаян между выводами трех контактного разъема PLS, установленного вместо перемычки BOOT0.
Питание плата STM32 получает от моста USB-UART. На нем надо установить перемычку питания в положение 5 В.
У меня все это выглядит так.
Пользоваться достаточно удобно. Когда кнопки не нажаты, плата работает в обычном режиме.
Для программирования:
- Нажимаю и удерживаю кнопку ПРОШИВКА, кратковременно нажимаю кнопку СБРОС.
- Загружаю программу во FLASH микроконтроллера.
- Отпускаю кнопку ПРОШИВКА.
- Нажимаю кнопку СБРОС.
Все это делается пальцами одной руки.
В следующем уроке будем устанавливать программное обеспечение для разработки приложений STM32, создадим и загрузим в микроконтроллер первую тестовую программу.
M — mega (MHz), 10^6 = 1 000 000.
m — mili (mA), 10^-3 = 0.001.
Спасибо. Все понятно.
Т.е. через микроУСБ загружать программу нельзя, только запитывать микроконтроллер?
Здравствуйте!
Да, именно так.
Через микро юсб можно загружать прошивку через среду разработки ардуино но сначала нужно установить специальную прошивку на стмку
Привет.Можно через микроУсб загружать программу.Но это несколько не удобно
«подключить выводы A9 и A10 к COM порту компьютера» —
TTL к RS-232?
Здравствуйте!
Если в компьютере есть COM порт, то моно подключиться к нему через преобразователь уровней. У стандартного COM порта уровни сигналов 12 в.
Можно подключиться через мост USB-UART. Тогда используется виртуальный COM порт. Ниже в статье есть схема.
А не проще купить программатор STLink и не мучатся с кнопками и т. д. ?
конечно проще, ко всему в stm32f101, который киты стали совать в stlink, вполне себе успешно прошивается в jlink, хотя изначально st не указывает наличие юсб в даташите. У меня 2 stlink’a, купленных с разницей в год. Оба на f101). Ко всему, stlink шьет и 8-битные МК, как и задумано. Так, мне пришлось прошивать умершую платуточечной сварки, ктороую взял у друга — умер stm8. По сравнению с атмелом стм очень не любит статику. Дырка в корпусе, ска. Заказал новую плату для себя и 5 шт 8-битных стмок, слил прошивку, запаял новый мк, залил — все отлично).
У меня ST-Link на STM32F103C8T6. Но при прошивки микроконтроллера на той же отладочной плате на ней надо устанавливать джампер, чтобы подтянуть BOOT0 к плюсу. Если этого не делать, то ST-Link не видит микроконтроллер на плате. Так что кнопки все равно нужны.
Для перехода в режим загрузки через USB, и просто «Reset», я соорудил следующее:
https://hackaday.io/project/164677-a-small-pcb-with-buttons
Для начинающих таких как я: A10 — это Rx, A9 — это Tx.
UART использует линию TX для передачи данных и RX для получения данных. При обмене данными TX PL2303 будет отправлять данные на RX микроконтроллера и наоборот.
то есть соединяйте TX c RX.
Добрый день, Эдуард! Мучаю свой осциллограф DSO-138 (вышел из строя процессор). Заказал, заменил, просмотрел массу роликов по перепрошивке. Получаю результат, который, пока, не могу преодолеть. Буду очень благодарен за любой совет, ведущий к решению.
Получаю сообщение: «No response from the target, the Boot loader can not be started. Please, verify the boot mode configuration and the flash protection status,
Reset your device then try again…»
Проблема с этими платами, покупаемыми на aliexpress, в том, что теперь довольно часто там стали появляться плохие МК. То ли отбраковка, то ли просто фейк.
Поэтому предпочитаю приобретать платы от производителя. Если надо в том же формате, то Nucleo32. Они, конечно, подороже, но гарантировано рабочие, имеют прямо на борту отладчик, связь с PC через VCM, пару кнопок (Reset, User) и светодиодик. 🙂
Я потратил на это 3 дня. У меня работает. На сайтах много информации с ошибками, тем более, что «напоролся» на новую модификацию платы отладчика. Я выложу всё, но думаю, что было бы лучше, чтобы Эдуард переработал эту инфу и предоставил в хорошо читаемом виде. Я сделаю ролик на Ютубе и Вам отвечу на все вопросы, но к сожалению комментарии не все читают.
Не совсем согласен. Если один раз сделали прошивку, то дальше всё получится.
подскажите пожалуйста, мне нужно назначение выводов на русском языке. Может есть у кого-нибудь?
На двух платах не шла загрузка по UART пока не заменил резисторы R3, R4 на 10КОм.
бьюсь уже который час, почему во всем интернете нет описания служебных сигналов ? быстро моргает красным светом не прошивается уже все перепробовал без толку
У меня вопрос я поципил PB3 на кнопку а там висит SWO пин шины с которой я программирую.И программма то виснет т о в разнос идут значения декремента.Этот же пин не используется .В avr на SPI немного по другому .Почему?
Эдуард, у Вас на картинке подключения отладочного модуля небольшая ошибка. Подключение должно идти TX — A9, RX — A10. Иначе в уроке про USART будут проблемы с подключением, потому что если подключить как на рисунке, то USART работать не будет.
Здравствуйте!
Нет. Все правильно. RX конвертера должен подключаться к TX платы STM32, а TX конвертера к RX платы.
Спасибо за толковый материал. А почему использовался UART, а не St_Link ?
Здравствуйте!
Самый простой вариант. Нет необходимости в St Link.