You are here

Обзор STM32F103C8T6 Minimum System Development Board

Общая информация

"Сегодня у нас в студии" макетная плата "STM32F103C8T6 ARM STM32 Minimum System Development Board Module For Arduino". Купить на Aliexpress можно за 100 рублей ( на ноябрь 2018).

 

Пожалуй это самая простая макетная плата с микроконтроллером STM32F103C8T6, сразу пригодная для использования. Конечно ещё  можно убрать кварцы и запаять перемычки вместо джамперов. И USB-разъём выкинуть. Но например мне такая макетка станет не нужной. Поставляется плата с зашитым ардуиноподобным загрузчиком. Как он работает, я не знаю. Если нужны подробности, смотрите сайты https://www.arduino.cc/ или http://stm32duino.com/. Мне же нужна исключительно сама макетка.

Иногда можно увидеть, как эту плату называют "Maple Mini". Так вот это не совсем правда. Maple Mini пожалуй чуть-чуть лучше: на ней сделано полноценное управление подтяжкой для USB-discovery, есть дополнительная пользовательская кнопка и аналоговая земля, развязанная от основной земли ферритовой бусиной. И ещё у Maple Mini цоколёвка отличается от рассматриваемой платы. Кстати, в Maple Mini есть кое-что интересное. Пользовательская кнопка реализована очень изящно: в момент сброса её можно использовать для загрузки МК из системной памяти, а при работе - как пользовательскую кнопку. Правда у меня возникают сомнения по поводу цепи BOOT1, я бы не оставлял её висящей в воздухе. Ну и как же без китайских клонов.

Зато в сети можно встретить названия "STM32 Min System Dev Board" и "BLUE PILL F103C8". Скорее всего у этих макеток схема окажется идентичной рассматриваемой.

upd 20190109: Предположительно оригинальное название этого модуля всё-таки "Blue Pill", т.е. "голубая таблетка".

Итак, что мне нравится:

Можно просто подцепить плату к ST-Link и работать с ней. А можно дополнительно подключить к ПК через microUSB и учиться работать с аппаратным модулем "Universal serial bus full-speed device interface"  из состава микроконтроллера "Medium-density performance line ARM-based 32-bit MCU" STM32F103C8T6. Из любопытного можно добавить, что из этой платы лёгким движением руки изготавливается ST-Link. В статье по ссылке речь про клон Maple Mini, поэтому для нашей макетки будут небольшие отличия. А если хочется и дёшево, и сразу с корпусом, то опять же на али покупается готовый клон ST-Link.

Вся необходимая документация, драйверы и утилиты лежат на сайте https://www.st.com/. Минимально необходимый комплект оттуда: RM0008, DS5319, STSW-LINK004STSW-LINK009 и STSW-STM32102. Также не помешает STM32CubeMX с пакетом STM32CubeF1. На сайте ST к сожалению ссылки имеют свойство протухать, но поиск пока не добили ;)

Для работы можно использовать среды разработки Keil, IAR ARM, Eclipse. Что-то бесплатное, что-то с доступной пробной версией. В качестве "быстрого старта" для генерации скелета программного проекта удобно использовать STM32CubeMX.

Что мне не нравится:

Нет пользовательской кнопки и не реализовано управление подтяжкой для USB-discovery. И если с отсутствием кнопки я согласен мириться, то управление подтяжкой для меня важно. Без неё при работе с USB каждый раз после нажатия на RESET придётся выдёргивать-вставлять хвост USB в ПК. Подробнее про подтяжку можно прочитать здесь, параграф "Идентификация скорости".

Вместо полноценного управления подтяжкой просто напаян резистор. В той версии платы, что у меня, это R10 = 10 КОм, в другой видел 4,7 КОм. Это как-то совсем плохо. Что делать? Как обычно, гугль/яндекс. Решение простое, как три детальки припаять. Установленный R10 наверное можно оставить, но я выпаял. В аттаче есть схема и фотографии данной доработки.

Проект USB-Device Full-Speed Virtual ComPort

В качестве тестового проекта был сделан шаблон в CubeMX и добавлен код простейших процедур отправки/приёма данных. После прошивки бинарника и сброса МК ПК найдёт виртуальный COM-порт. Драйвера него находятся в STSW-STM32102. После установки драйверов можно будет подключиться к порту любой терминалкой. От макетки раз в секунду будет приходить сообщение "Hello world! Current HAL tick = xxx", где xxx - значение таймера HAL (т.е. переменной uwTick). В обратную сторону, для индикации приёма данных от ПК, при приёме каждого пакета (не каждого байта, а каждого пакета!) будет изменяться состояние светодиода, подключённого к PC13.

Примечание: если работать с виртуальным COM-портом, то в момент распознавания устройства на ПК необходимо, чтобы приложение на ПК, работающее с этим портом, освобождало порт на время распознавания, иначе порт будет недоступен. Т.е. "отключились от порта в приложении"->"распознали устройство"->"снова подключились к порту".

Файлы

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

Update 20200228: В проекте файл stm32f103xb_flash.icf заменён на файл stm32f103x8_flash.icf, отличие в одной строке:

define symbol __ICFEDIT_region_ROM_end__ = 0x0801FFFF;

на строку:

define symbol __ICFEDIT_region_ROM_end__ = 0x0800FFFF;

В принципе данный проект из без этого будет работать. Но в дальнейшем можно нажить себе неприятностей.

TypeOfContent: