Перейти к содержанию

Как подключить STM32 к компьютеру?

Обновлено Редакция GAW

На простых платах STM32 вроде Blue Pill нет моста USB–UART, как у Arduino UNO, поэтому микроконтроллер подключают к компьютеру одним из трёх способов. Какой выбрать, зависит от того, что есть под рукой, и от семейства микроконтроллера.

СпособЧто нужноВыводы микроконтроллераПодходит для
Программатор по SWDST-LINK или другой SWD-адаптерSWDIO, SWCLK, GNDвсех STM32, с отладкой
Встроенный загрузчик по UARTпереходник USB–UART 3,3 ВPA9 (TX), PA10 (RX), BOOT0 = 1всех STM32 с загрузчиком на USART1
USB DFUтолько кабель USBUSB, BOOT0 = 1семейств с USB в загрузчике: STM32F4, F105/F107

Программатор по SWD

Самый удобный путь: программатор подключают к выводам SWDIO и SWCLK, общему проводу и, как правило, к питанию 3,3 В для опорного уровня. Через него и прошивают, и отлаживают. Распиновку разъёмов SWD и JTAG собирает страница «Распиновка JTAG и SWD».

Встроенный загрузчик

В системной памяти STM32F1 и STM32F4 записан загрузчик ST. Чтобы он запустился, при сбросе на BOOT0 подают единицу, а на BOOT1 — ноль. Затем переходник USB–UART подключают к USART1 — PA9 и PA10 — накрест, как любой UART. По AN3155 загрузчик ждёт байт 0x7F и работает с чётностью even. Как устроены загрузчик, его протокол и защита флеш-памяти, разбирает статья «Flash и загрузчик STM32».

USB DFU

У STM32F4 встроенный загрузчик умеет работать и через USB OTG FS. Поэтому Black Pill на STM32F411 прошивают одним кабелем: по AN2606 загрузчику для DFU нужен внешний кварц, и он на плате есть. У STM32F103 загрузчик USB не поддерживает, кроме connectivity line, и Blue Pill по USB без отдельной прошивки-загрузчика не прошить.

Похожие вопросы

Можно ли прошить Blue Pill через USB без программатора?

Встроенным загрузчиком — нет: по RM0008 у STM32F103 он работает через USART1, а USB DFU есть только у connectivity line (F105, F107). Без программатора Blue Pill прошивают переходником USB–UART: BOOT0 в единицу, адаптер к PA9 и PA10.

Что нужно, чтобы прошить STM32 по UART?

Переходник USB–UART на 3,3 В, перемычка BOOT0 в единицу и BOOT1 в ноль, соединение TX переходника с PA10 (RX) и RX — с PA9 (TX), общий GND. После сброса загрузчик ждёт байт синхронизации 0x7F и работает с чётностью even на скорости 1200–115 200 бит/с.

Чем SWD лучше загрузчика по UART?

SWD — отладочный интерфейс: через программатор можно не только записывать флеш-память, но и отлаживать программу — останавливать, смотреть регистры и переменные. Перемычки BOOT при этом трогать не нужно. Загрузчик по UART умеет только записывать и читать память.

Источники

  1. STMicroelectronics. RM0008 Rev 21. Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx — 3.4 — режимы загрузки по BOOT0 и BOOT1 (таблица 9); встроенный загрузчик в системной памяти: USART1, у XL-density ещё USART2, у connectivity line — CAN2 и USB DFU
  2. STMicroelectronics. RM0090 Rev 22. Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 — 2.4 — режимы загрузки; встроенный загрузчик: USART1, USART3, CAN2, USB OTG FS
  3. STMicroelectronics. AN3155 Rev 22. USART protocol used in the STM32 bootloader — синхронизация байтом 0x7F, чётность even, ответ 0x79; скорость 1200–115 200 бит/с
  4. ST. AN2606 Rev 40: STM32 microcontroller system memory boot mode — загрузчик STM32F411xx: USART1, USART2, DFU (USB FS), I²C, SPI; для DFU нужен внешний кварц

Нашли ошибку?