в основном вывод мусора из последовательного UART микрокомпьютера STM32F091RC на целевой плате

Ожидаемая первая строка программного обеспечения printf для последовательного вывода на ПК с Windows7:

main () ************************** SW START Project 2016-10-30 x1

Фактический последовательный вывод (в TeraTerm или PuTTY);

▒▒▒▒()j**j*j**j*j**j*j**j*j**j*j ▒▒Ӕ▒Ҕ ▒▒▒▒▒▒▒ r01v-q0-30▒q

Последовательный интерфейс отлично работал от mbed или VisualGDB до оценочной платы NUCLEO. т.е.:

Serial pc(USBTX, USBRX);

Теперь я запускаю VisualGDB на фактическую целевую плату с STM32F091RC.
то есть:

Serial pc(SERIAL_TX, SERIAL_RX);

На 9600 некоторые символы верны, большинство - мусор. Я пробовал использовать альтернативную цель и кабели, проблема та же. Программа Терминала ПК (TeraTerm или PuTTY) установлена ​​на 8, n, 1. Смотрел в библиотеке mbed; Конфигурация по умолчанию - 8 данных, без четности, 1 стоп.

Кабель преобразователя USB / последовательный порт: FTDIChip TTL-232R-RPi (обычно для Raspberry Pi).


person Doug Null    schedule 31.10.2016    source источник
comment
Программное обеспечение работает с оценочной платой, и то же программное обеспечение не работает на специальной плате. Похоже проблема с платой.   -  person followed Monica to Codidact    schedule 31.10.2016
comment
Предполагая, что «сбой» повторяется, возможно, на пользовательской плате есть другой делитель для UART - вы пытались изменить скорость передачи последовательного порта ПК вверх / вниз? Вы говорите: «Конфигурация по умолчанию - 8 данных ...» - возможно, на вашей пользовательской плате это значение по умолчанию не утверждается - попробуйте подтвердить формат последовательных данных.   -  person barny    schedule 01.11.2016
comment
Вы уверены, что это 9600? Обычно, когда вы получаете мусор, но видите некоторые символы, это проблема скорости передачи данных. Вам нужно аппаратное подтверждение связи?   -  person Baddack    schedule 01.11.2016
comment
Вы проверили, совпадают ли частоты кристалла / источника тактового сигнала на оценочной плате NUCLEO и целевой плате?   -  person K.H.A.J.A.S    schedule 02.11.2016


Ответы (3)


Это могло быть несоответствие часов между оценочной платой и целевой платой. Предполагая, что у вас правильное заземление. Другая проблема может заключаться в отключении количества битов данных в конфигурациях.

person stiebrs    schedule 02.11.2016

Думаю, это уже не актуально, но на это нужно обращать внимание.

  • Уровень сигнала составляет 3,3 В, а не 5 В, не все адаптеры USB Uart работают правильно.
  • Полярность инвертирована к стандартной, то есть стартовый бит имеет низкий уровень 1,5 бит, как здесь

arm uart

person devopsfool    schedule 05.01.2018

Убедитесь, что у вас правильная четность и биты. Большинство людей (и Arduino) используют 8N1 по умолчанию, но образец кода STM32 по умолчанию использует 7O1. См. Здесь: https://community.st.com/thread/40340-stm32cubefwf2v140projectsstm32f207zg-nucleoexamplesuartuartprintf-printing-garbage-data-over-the-terminal

person Gabriel Staples    schedule 22.03.2018