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

Почему на 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ФункцияКуда подключён на плате
PA9USART1_TXконтакт D1
PA10USART1_RXконтакт D0
PA2USART2_TXVCP_TX ST-LINK и контакт A7
PA15USART2_RXVCP_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 по умолчанию не работают с шилдом.

Источники

  1. 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
  2. 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

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