Как подключить STM32 к компьютеру?
Обновлено Редакция GAW
На простых платах STM32 вроде Blue Pill нет моста USB–UART, как у Arduino UNO, поэтому микроконтроллер подключают к компьютеру одним из трёх способов. Какой выбрать, зависит от того, что есть под рукой, и от семейства микроконтроллера.
| Способ | Что нужно | Выводы микроконтроллера | Подходит для |
|---|---|---|---|
| Программатор по SWD | ST-LINK или другой SWD-адаптер | SWDIO, SWCLK, GND | всех STM32, с отладкой |
| Встроенный загрузчик по UART | переходник USB–UART 3,3 В | PA9 (TX), PA10 (RX), BOOT0 = 1 | всех STM32 с загрузчиком на USART1 |
| USB DFU | только кабель USB | USB, 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 умеет только записывать и читать память.
Источники
- 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
- STMicroelectronics. RM0090 Rev 22. Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 — 2.4 — режимы загрузки; встроенный загрузчик: USART1, USART3, CAN2, USB OTG FS
- STMicroelectronics. AN3155 Rev 22. USART protocol used in the STM32 bootloader — синхронизация байтом 0x7F, чётность even, ответ 0x79; скорость 1200–115 200 бит/с
- ST. AN2606 Rev 40: STM32 microcontroller system memory boot mode — загрузчик STM32F411xx: USART1, USART2, DFU (USB FS), I²C, SPI; для DFU нужен внешний кварц
Нашли ошибку?