Итак, на прошлой неделе я работал над получением сообщений UART, отправленных с STM32F407, и читал их на своем ноутбуке через безобразный кабель RS232-USB с использованием термита.
Я использовал STMCube для генерации кода и добавления к нему, прочитав соответствующие инструкции в верхней части файла "stm32f4xx_hal_uart.c" (и просмотрев множество видео и читая онлайн).
Я проверил переданное сообщение на осциллографе, и оно соответствует его представлению ASCII.
Например, я посылаю 'Q', который является 0101 0001, я получаю 'W', который является 0101 0111. Показание в области показывает:
Выход термитов для того же сигнала, который отображается на осциллографе.
Я подтвердил, что скорость передачи в бодах / четность / HWcontrol совпадают по термитам и в моем коде.
Чтобы получить правильный характер, я попытался понизить и увеличить скорость передачи данных.
Я пробовал разные наборы символов, чтобы попытаться найти шаблон, который приводит к отображению неправильных символов.
Кроме того, я пробовал другой терминал, например, на Putty или Teraterm.
1
символ с желтым фоном слева от трассы - это уровень 0 В), а затем импульсы ниже 0 В. Это не было бы верно для логического сигнала прямо от STM32, и, действительно, это не так. Посмотрев в нижний левый угол, вы установили канал 1 для связи по переменному току (это ~
символ, который вы видите там). Сигнал действительно высокий на холостом ходу и пульсирующий до 0В. Используйте постоянное соединение для разумного представления этого сигнала.