2013-06-11 98 views
0

任何想法爲什麼我的本地C應用程序無法達到比38400更高的波特率? 我有完全相同的應用程序,我成功地初始化在9600,19200,38400 baudes上收聽和傳輸。然而,一旦我設置爲57600,我就會從發射器中獲取garabage(接收器我不知道)。我正在用終端聽它,所以我直接從引腳標題看到垃圾。Uart較高的樹莓派BaudRate問題

我在GPIO頭的引腳14和15上使用Raspbian和uart。

是否有任何調整導致問題的精度分數?

現在我只是這樣做(它的工作原理): cfsetispeed(& options,B38400); cfsetospeed(& options,B38400); tcsetattr(uart0_filestream,TCSANOW,& options); fcntl(uart0_filestream,F_SETFL,O_NDELAY);

TX部分: int a = write(uart0_filestream,StartOfTheMessage,Length);

謝謝。

+1

不是解決方案,而是調試思路。 1)你發什麼和什麼是垃圾? 2)嘗試將自己的傳輸數據循環回自己,看看你是否可以閱讀你傳輸的內容。 3)當您在57600處傳輸並用終端收聽時,您會報告垃圾。但是,如果您以其他費率收聽,比如38400,115200,19200,而您的終端仍然以57600發送,您看到了什麼? – chux

回答

0

您的UART線不支持更高的波特率。

+0

我用跳線和示波器檢查了這個問題,最後我發現從termios.h開始的速度是B38400是實現的最高波特率。 cfsetispeed(&選項,B38400);根據termios.h文檔,B57600根本不存在,所以這些波特率以上的cfsetospeed(&選項,B38400)不會改變。你知道任何其他現成的圖書館,我可以很容易地使用它來獲得速度?謝謝 – Gregorek