Почему на Nucleo-32 вывод UART на D0 и D1 не виден в COM-порте компьютера?
Обновлено Редакция GAW
Плата Nucleo-32 с ST-LINK на борту даёт компьютеру виртуальный COM-порт: через него удобно печатать отладочные сообщения. Но этот порт соединён не с контактами D0 и D1, а с другим модулем USART.
Какой USART куда выведен
Данные для NUCLEO-F303K8 и NUCLEO-L432KC — из UM1956 и проектов плат ST; так же устроены NUCLEO-F042K6, L011K4, L031K6 и L412KB:
| Вывод STM32 | Функция | Куда подключён на плате |
|---|---|---|
| PA9 | USART1_TX | контакт D1 |
| PA10 | USART1_RX | контакт D0 |
| PA2 | USART2_TX | VCP_TX ST-LINK и контакт A7 |
| PA15 | USART2_RX | VCP_RX ST-LINK |
Все четыре функции подключаются альтернативной функцией AF7. Наш вывод: программа, настроенная на USART1, отправляет байты на D1 — в COM-порт компьютера они не попадут, сколько ни меняй скорость в терминале. Для вывода в компьютер настраивают USART2 на PA2 и PA15. Исключение — NUCLEO-F031K6: у STM32F031 один USART1, и COM-порт подключён к нему же, но на выводах PA2 и PA15, поэтому USART1 переназначают с PA9 и PA10 на них (функция AF1).
Цена: контакт A7
Зато у USART2 есть цена — вывод PA2: по примечанию UM1956 он работает либо как контакт A7, либо как передатчик COM-порта. Так же Nucleo-32 соединяет попарно A4/D4 и A5/D5 — об этом ответ «Почему на Nucleo-32 контакты D4 и D5 соединены с A4 и A5».
Настройка USART — скорость, прерывания, DMA — в статье «UART STM32», карта контактов каждой платы — в разделе «Платы ST». У других плат Nucleo-32 проверьте таблицу своей платы: примечание про A7 в UM1956 есть не у всех.
Похожие вопросы
Можно ли пользоваться контактом A7, если работает COM-порт?
По примечанию UM1956 вывод PA2 используется либо как контакт A7, либо как передатчик виртуального COM-порта. Если программа шлёт данные в COM-порт, A7 занят ими; если нужен A7 — передачу в COM-порт через USART2 не используйте.
Как подключить к Nucleo-32 модуль с UART, например GPS?
К D0 и D1: D1 (PA9) — передача USART1, её соединяют с входом RX модуля, D0 (PA10) — приём, к выходу TX модуля, плюс общий провод. Уровни — 3,3 В. Тогда USART2 остаётся для отладочного вывода в компьютер.
У Nucleo-64 так же?
Нет: у Nucleo-64 к ST-LINK подключён USART2 на PA2 и PA3, а на D0 и D1 те же PA3 и PA2 выводятся только после перестановки перемычек. Поэтому там проблема обратная — D0 и D1 по умолчанию не работают с шилдом.
Источники
- STMicroelectronics. UM1956: STM32 Nucleo-32 boards (MB1180), User manual, Rev 6 (March 2025) — табл. 9–16: D0 — PA10, D1 — PA9, A7 — PA2; примечание к таблицам NUCLEO-F042K6, NUCLEO-F303K8 и NUCLEO-L432KC: A7 (PA2) используется либо как контакт ARDUINO, либо как VCP_TX виртуального COM-порта ST-LINK
- STMicroelectronics. STM32_open_pin_data, boards/ и mcu/ — проекты плат Nucleo-32: PA2 — VCP_TX, PA15 — VCP_RX; у NUCLEO-F042K6, F303K8, L011K4, L031K6, L412KB и L432KC это USART2, у NUCLEO-F031K6 — USART1 (STM32F031K6: PA2, PA15, PA9, PA10 — USART1 через AF1); STM32F303K(6-8)Tx и STM32L432K(B-C)Ux: PA9 — USART1_TX, PA10 — USART1_RX, PA2 — USART2_TX, PA15 — USART2_RX, всё через AF7
Нашли ошибку?
Смотрите также
- Платы ST: Nucleo и DiscoveryNucleo-32/64/144, Discovery и Evaluation: контакты ARDUINO, выводы МК, занятые на плате
- UART STM32BRR и OVER8, допуск по частоте, флаги, прерывания, DMA с IDLE, полудуплекс, RS-485
- Виртуальный COM-порт (VCP)Драйвер, показывающий USB-устройство как последовательный порт
- Как подключить STM32 к компьютеру?Три пути: SWD-программатор, загрузчик по UART, USB DFU
- Почему на Nucleo-32 контакты D4 и D5 соединены с A4 и A5?SB16 и SB18 дают I²C1 на A4 и A5; пока замкнуты, D4, D5, A4 и A5 — не отдельные