Проблемы с Uart выше BaudRate в Raspberry Pi

Любая идея, почему мое собственное приложение C не может достигать более высоких скоростей, чем 38400? У меня точно такое же приложение, которое я успешно инициализировал для прослушивания и передачи на 9600, 19200, 38400 бод. Однако, как только я установил 57600, я получаю мусор из передатчика (приемник, которого я не знаю). Я слушаю его с помощью терминала, поэтому вижу мусор прямо из заголовка булавки.

Я использую Raspbian и uart на пинах 14 и 15 заголовка GPIO.

Есть ли какая-либо корректировка некоторой доли прецизионности, которая вызывает проблему?

Прямо сейчас я просто делаю это (и это работает): cfsetispeed (& options, B38400); cfsetospeed (& options, B38400); tcsetattr (uart0_filestream, TCSANOW, & параметры); fcntl (uart0_filestream, F_SETFL, O_NDELAY);

Часть TX: int a = write (uart0_filestream, StartOfTheMessage, Length);

Спасибо.


person Gregorek    schedule 11.06.2013    source источник
comment
Не решение, а отладочные идеи. 1) Что отправляете и что за мусор? 2) Попробуйте зациклить свои передаваемые данные на себя и посмотреть, сможете ли вы прочитать то, что передаете. 3) Когда вы передаете на 57600 и слушаете через терминал, вы сообщаете о мусоре. Но если вы слушаете на других скоростях, таких как 38400, 115200, 19200, а ваш терминал все еще отправляет на 57600, что вы видите?   -  person chux - Reinstate Monica    schedule 12.06.2013


Ответы (1)


Ваши провода UART не поддерживают более высокую скорость передачи данных.

person Zain Ansari    schedule 12.06.2013
comment
Я проверил проблему как с перемычкой, так и с осциллографом и, наконец, заметил, что B38400, который соответствует скорости из termios.h, является самой высокой реализованной скоростью передачи. Cfsetispeed (& options, B38400); cfsetospeed (& options, B38400) выше этих скоростей передачи ничего не меняет, поскольку B57600 просто не существует согласно документации termios.h. Знаете ли вы какую-нибудь другую готовую библиотеку, которую я могу легко использовать для увеличения скорости? Спасибо - person Gregorek; 18.06.2013