Приложение E. Распиновки плат
Три платы, на которых написан справочник: BluePill (F103), Nucleo‑64 (F401/F411 и другие в том же корпусе) и Discovery F407. Для каждой — что куда заведено на самой плате: светодиоды, кнопки, кварцы, USB, и какие выводы поэтому заняты.
Все обозначения — как на шелкографии платы. Альтернативные функции выводов — из справочного руководства, здесь только те, что важны для проектов из каталога (раздел 38).
E.1 BluePill — STM32F103C8T6
| На плате | Вывод | Примечание |
|---|---|---|
светодиод PC13 |
PC13 |
катодом к выводу: 0 — горит, 1 — погашен; ток вывода мал, не нагружать |
| кварц HSE | PD0/PD1 |
8 МГц; выводы заняты |
| кварц LSE | PC14/PC15 |
32 768 Гц, место под него; при использовании — слабые выводы |
| USB | PA11 D−, PA12 D+ |
подтяжка D+ на плате часто не 1,5 кОм (раздел 20) |
| отладка | PA13 SWDIO, PA14 SWCLK |
четырёхштырьковый разъём; PB3/PB4/PA15 после сброса заняты JTAG — освобождают, отключив JTAG (ниже) |
| загрузка | BOOT0, BOOT1 (PB2) |
перемычки; BOOT0 = 1 — загрузчик по UART1 |
| сброс | NRST |
кнопка |
| питание | 5V, 3.3, GND, VBAT |
стабилизатор на плате слабый — ленты и модули от отдельного источника |
Занятые и условно занятые: PC13–PC15 (светодиод, LSE), PD0/PD1
(HSE), PA11/PA12 (USB), PA13/PA14 (SWD), PB2 (BOOT1).
Свободных линий общего назначения — 27, но три из них сначала надо освободить.
PB3, PB4 и PA15 после сброса отданы JTAG — JTDO, NJTRST
и JTDI, даже если подключён только SWD. Классическая ловушка BluePill:
«PB3 и PB4 не работают как выходы». Обычными выводами они станут,
если отключить JTAG, оставив SWD:
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
AFIO->MAPR = (AFIO->MAPR & ~AFIO_MAPR_SWJ_CFG) | AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
Толерантные к 5 В (FT в даташите): PA8–PA15, PB2–PB4,
PB6–PB15. Без допуска 5 В — PA0–PA7, PB0, PB1, PB5
и PC13–PC15. Для входов от 5-вольтовой логики — только толерантные,
и без включённой подтяжки вверх.
Шины по умолчанию:
| Блок | Выводы |
|---|---|
| USART1 | PA9 TX, PA10 RX |
| USART2 | PA2 TX, PA3 RX |
| USART3 | PB10 TX, PB11 RX |
| I2C1 | PB6 SCL, PB7 SDA (ремап: PB8/PB9) |
| I2C2 | PB10 SCL, PB11 SDA |
| SPI1 | PA5 SCK, PA6 MISO, PA7 MOSI, PA4 NSS |
| SPI2 | PB13 SCK, PB14 MISO, PB15 MOSI, PB12 NSS |
| CAN | PA11 RX, PA12 TX — общие с USB |
| ADC1 | PA0–PA7, PB0, PB1 (каналы 0–9) |
| TIM1 | PA8–PA11 каналы 1–4 |
| TIM2 | PA0–PA3 |
| TIM3 | PA6, PA7, PB0, PB1 |
| TIM4 | PB6–PB9 |
E.2 Nucleo‑64 — STM32F401RE / F411RE
Плата с двумя рядами разъёмов: внутренний в стиле Arduino (CN5–CN9)
и внешний Morpho (CN7, CN10) со всеми выводами кристалла. Отладчик
ST‑Link на плате, виртуальный COM‑порт заведён на USART2.
| На плате | Вывод | Примечание |
|---|---|---|
светодиод LD2 (зелёный) |
PA5 |
анодом к выводу: 1 — горит; он же D13 и SPI1_SCK |
кнопка B1 (синяя) |
PC13 |
нажатие — низкий уровень; подтяжка на плате |
| виртуальный COM‑порт | PA2 TX, PA3 RX |
USART2 через ST‑Link; не занимать под другое |
| кварц HSE | PF0/PF1 (PH0/PH1) |
на многих ревизиях не распаян: такт от MCO ST‑Link 8 МГц |
| кварц LSE | PC14/PC15 |
32 768 Гц распаян |
| отладка | PA13, PA14 |
через ST‑Link; PB3 — SWO |
| сброс | NRST |
кнопка B2 |
⚠️ HSE на Nucleo — не кварц, а сигнал от отладчика. По умолчанию перемычки настроены так, что
OSC_INполучает 8 МГц с MCO микросхемы ST‑Link. Значит, в настройках RCC (раздел 6) выбирается внешний сигнал, не кварц (режим bypass), иначе PLL не запустится. И при отключённом отладчике такта не будет — только HSI.
Разъёмы Arduino
| Метка | Вывод | Функции |
|---|---|---|
D0 |
PA3 |
USART2_RX — занят виртуальным портом |
D1 |
PA2 |
USART2_TX — занят |
D2 |
PA10 |
USART1_RX |
D3 |
PB3 |
TIM2_CH2, SWO |
D4 |
PB5 |
|
D5 |
PB4 |
TIM3_CH1 |
D6 |
PB10 |
TIM2_CH3, I2C2_SCL |
D7 |
PA8 |
TIM1_CH1, MCO |
D8 |
PA9 |
USART1_TX |
D9 |
PC7 |
TIM3_CH2 |
D10 |
PB6 |
TIM4_CH1, I2C1_SCL, обычно CS для SPI |
D11 |
PA7 |
SPI1_MOSI, TIM3_CH2 |
D12 |
PA6 |
SPI1_MISO, TIM3_CH1 |
D13 |
PA5 |
SPI1_SCK, светодиод |
D14 |
PB9 |
I2C1_SDA |
D15 |
PB8 |
I2C1_SCL |
A0 |
PA0 |
ADC1_IN0, TIM2_CH1 |
A1 |
PA1 |
ADC1_IN1, TIM2_CH2 |
A2 |
PA4 |
ADC1_IN4, SPI1_NSS |
A3 |
PB0 |
ADC1_IN8, TIM3_CH3 |
A4 |
PC1 |
ADC1_IN11 |
A5 |
PC0 |
ADC1_IN10 |
Светодиод на D13/PA5 — та же линия, что SPI1_SCK: при работе
с SPI1 светодиод мерцает, а его резистор нагружает линию. Для SPI1
на Nucleo либо смириться, либо перенести на PB3 через ремап.
E.3 Discovery — STM32F407VGT6
Плата с кристаллом в корпусе LQFP100, четырьмя светодиодами,
акселерометром, микрофоном и аудио-ЦАП. Все выводы — на два ряда
штырьков P1/P2.
| На плате | Вывод | Примечание |
|---|---|---|
LD4 зелёный |
PD12 |
анодом: 1 — горит; TIM4_CH1 |
LD3 оранжевый |
PD13 |
TIM4_CH2 |
LD5 красный |
PD14 |
TIM4_CH3 |
LD6 синий |
PD15 |
TIM4_CH4 |
кнопка B1 (синяя) |
PA0 |
нажатие — высокий уровень; подтяжка вниз на плате |
| кварц HSE | PH0/PH1 |
8 МГц распаян; PLL: M = 8, N = 336, P = 2, Q = 7 → 168 МГц и 48 МГц USB |
| кварц LSE | PC14/PC15 |
32 768 Гц |
| USB OTG FS | PA11 D−, PA12 D+, PA9 VBUS, PA10 ID |
разъём micro‑USB CN5; подтяжка встроена (раздел 20) |
| акселерометр LIS3DSH | SPI1: PA5 SCK, PA6 MISO, PA7 MOSI; PE3 CS; PE0/PE1 INT |
занимает SPI1 |
| микрофон MP45DT02 | PC3 данные, PB10 такт |
I2S2 |
| аудио-ЦАП CS43L22 | I2S3: PC7 MCK, PC10 CK, PC12 SD, PA4 WS; I2C1: PB6/PB9; PD4 сброс |
занимает I2S3 и I2C1 |
| отладка | PA13, PA14, PB3 SWO |
ST‑Link на плате |
Четыре светодиода на четырёх каналах одного TIM4 — это готовый стенд
для ШИМ (раздел 13): четыре независимые яркости одним таймером.
⚠️
PA0на Discovery — кнопка с подтяжкой вниз, в отличие от BluePill и Nucleo, где кнопка тянет к земле. Активный уровень — высокий; внутреннюю подтяжку вверх включать нельзя — она будет бороться с внешней.
Занято периферией платы: SPI1 (акселерометр), I2S2 (микрофон),
I2S3 и I2C1 (аудио), PA0 (кнопка), PD12–PD15 (светодиоды),
PA9–PA12 (USB). При использовании этих блоков под своё — учитывать
подключённые микросхемы: акселерометр держит CS в единице и не мешает,
пока PE3 не опущен.
Свободные шины: USART2 (PA2/PA3), USART3 (PB10/PB11 —
PB10 делится с микрофоном), SPI2 (PB13–PB15), I2C2 (PB10/PB11),
I2C3 (PA8/PC9), CAN1 (PD0/PD1), CAN2 (PB12/PB13, общие
с SPI2), ADC на PA1–PA3, PC1, PC2, PC4, PC5 (PC0 включает питание
USB, PC3 — данные микрофона), TIM1–TIM3, TIM5, TIM8.
Вторые варианты CAN на этой плате заняты: у CAN1 на PB8/PB9 мешает
PB9 — линия SDA аудио-ЦАП, у CAN2 на PB5/PB6 — PB6, SCL того же ЦАП.
E.4 Общее для всех плат
| BluePill | Nucleo‑64 | Discovery F407 | |
|---|---|---|---|
| светодиод | PC13, активный 0 |
PA5, активный 1 |
PD12–PD15, активный 1 |
| кнопка | нет | PC13, активный 0 |
PA0, активный 1 |
| HSE | кварц 8 МГц | сигнал 8 МГц от ST‑Link (bypass) | кварц 8 МГц |
| отладчик | внешний | на плате | на плате |
| COM‑порт | внешний переходник | USART2 через ST‑Link |
нет — переходник |
| USB устройства | PA11/PA12, подтяжка внешняя |
нет разъёма | PA11/PA12, подтяжка встроена |
| частота ядра | 72 МГц | 84 (F401) / 100 (F411) | 168 МГц |
Три вещи, которые ломают перенос кода между платами: полярность светодиода, полярность кнопки и режим HSE. Проект, мигающий на BluePill, на Discovery горит постоянно; проект с кнопкой с Nucleo на Discovery видит вечно нажатую; проект с кварцем с BluePill на Nucleo не запускает PLL. Все три — в первых строках инициализации.