Обзор конструктора

В рамках курса предлагается изучить микроконтроллер stm32f103c8 на примере готового устройства — часов. Вместо дисплея используются две светодиодные матрицы (в общей сложности 16 x 8 светодиодов), на плате присутствует датчик освещённости и температуры, пьезоэлектрический излучатель, а в качестве элемента управления применён инкрементальный энкодер со встроенной кнопкой. Курс покрывает только минимальную программу, реализуя минимально возможные функции устройства: отображения времени и температуры. Но это не значит, что функциональность устройства на этом ограничена. Вы можете реализовать такие игры как Пин-Понг, Змейку или даже Тетрис, попутно задействовав другие возможности МК, тем самым усовершенствовав программу.

Кроме текста курса к набору прилагается бинарный файл стоковой прошивки. В ней реализованы несколько игр и задействованы некоторые другие возможности микроконтроллера. Её код не будет выложен в открытый доступ, чтобы уберечь вас от бездумного копирования кусков кода. Напротив, к основной части курса прилагаются дополнительные главы, опираясь на которые можно усовершенствовать вашу прошивку.

Приобрести набор можно связавшись с автором через электронную почту.

Device view

Само устройство спроектировано таким образом, чтобы по-максимуму задействовать все возможности МК.

В набор входит двухсторонняя программатор ST-Link, печатная плата и компоненты, которые вам (в идеале) предстоит самостоятельно припаять: имеются элементы как поверхностного монтажа (англ. surface mounted device, или SMD) — начиная от конденсаторов 0603 до большой микросхемы в корпусе SOIC-24W, так и выносного (англ. through-hole technology или THT) — от кварцевого резонатора до модулей матриц.

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

Самая сложная часть пайки — микроконтроллер. LQFP48 — квадратный корпус 7x7 мм, по 12 ножек на сторону. Заказать набор можно с предварительно запаянным МК. Если вы планируете запаять его самостоятельно внимательно ознакомьтесь с разделом «Рекоммендации по сборке».


По прохождению курса вы научитесь программировать микроконтроллеры STM32. Для измерения температуры используется датчик DS18B20 (протокол 1-Wire), а в качестве датчика освещённости применён фоторезистор. Для управления применён инкрементальный энкодер со встроенной кнопкой. Извлечение звука предлагается осуществлять через пьезоэлектрический излучатель.

Вы познакомитесь: с блоком тактирования и сброса (RCC); настроите микроконтроллер на нужную частоту (PLL); познакомитесь с портами ввода/вывода (GPIO) и блоком внешних прерываний (EXTI); таймерами (системным, базовым и продвинутым); изучите некоторые режимы их работы (энкодер, ШИМ, переполнение, синхронизация); запустите аналого-цифровой преобразователь (ADC); используете часы реального времени (RTC) с внешним кварцевым резонатором (LSE); познакомитесь с различными интерфейсами передачи данных (SPI, UART, 1-Wire); научитесь работать со встроенной flash-памятью; и другим.

Так как экосистема ST не стоит на месте, в курсе прилагаются примеры кода на 4 библиотеках (когда и какую лучше использовать описано далее): CMSIS, SPL, LL и HAL1.

Весь код по курсу доступен на github.com/chrns/storming_stm32

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

Спецификация

ОбозначениеКоличествоПримечание
U11 Стабилизатор напряжения L78L33 (SOT89)
U21 Микроконтроллер STM32F103C8 (LQFP48)
U31 Датчик температуры DS18B20 (TO-92)
U4, U52 Драйвер светодиодной матрицы MAX7219 (SOIC-24W)
Q11 NPN-транзистор общего назначения BC817 (SOT23)
LM1, LM22 Светодиодная матрица TC15-11 8 x 8 (38 x 38 мм)
D11Светодиод (0805)
Y11Кварцевый резонатор 32'768 Гц
BZ11Пьезоэлектрический излучатель (12 мм)
C110,33 мкФ, керамический конденсатор (0603)
C2, C4-C9, C1280,1 мкФ, керамический конденсатор (0603)
C314,7 мкФ, танталовый конденсатор (Case-A)
C10, C11222 пФ, керамический конденсатор (0603)
R1110 кОм, фоторезистор
R2, R122100 кОм, резистор (0805)
R314,7 кОм, резистор (0805)
R4, R11210 кОм, резистор (0805)
R5, R7, R931 кОм, резистор (0805)
R5, R6, R103220 Ом, резистор (0805)
R13, R14240 кОм, резистор (0805)
SW11Инкрементальный энкодер со встроенной кнопкой
BT11Батарейка CR2032
TP11Тестовая точка, выпод тактового сигнала (MCO)
TP21Тестовая точка, выпод для калибровки часов (RTC_TAMPER)
J11Разъём microUSB
J21Разъём программатора (SWD, PLSx5)
J31Разъём терминала UART (PLS x3)
JP11Перемычка, должна быть запаяна для корректной работы

Перемычка JP1 должна быть замкнута каплей припоя.

Спецификация в pdf.

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

schematic

Принципиальная схема в PDF.

Распиновка

НожкаФункцияПериферия
PA0Датчик освещённости (фоторезистор)ADC1_IN0
PA1Датчик температуры DS18B20 (протокол 1-Wire)GPIO (output)
PA2Пьезоэлектрический излучатель (управление ШИМ)TIM2_CH3
PA3Светодиод (возможно диммирование через ШИМ)GPIO (output),TIM2_CH4
PA5Кнопка (внешнее прерывание, сканирование)GPIO (input), EXTI9_5
PA6, PA7Инкрементальный энкодер (линии TI1/A и TI2/B)TIM3_CH1, TIM3_CH2
PA8Вывод тактового сигналаRCC (MCO)
PB5Линия выбора микросхемы MAX7219 (SPI)GPIO (output)
PB10, PB11UART-терминалUSART3_TX, USART3_RX
PB13, PB15Линии тактирования и данных для драйверов MAX7219 (SPI)SPI2_SCK, SPI2_MOSI
PC13Выход для калибровки часов реального времениRCC_TAMPER
PC14, PC15Вход/выход низкочастотного кварцевого резонатора (32'768 Гц)OSC32_IN, OSC32_OUT

Распиновка в PDF.


Назад | Оглавление | Дальше


1 Всё описание в курсе ведётся с позиции библиотеки CMSIS. Код для SPL, LL и HAL появятся со временем в репозитории.