2015-10-22 92 views
-1

我試圖通過串口連接(GPIO UART引腳)在Raspberry Pi 2(raspian wheezy)和STM32F4板之間發送/接收數據。我在鏈接中使用示例代碼:http://www.raspberry-projects.com/pi/programming-in-c/uart-serial-port/using-the-uartRaspberry Pi無法通過串行通信將數據發送到PC

它將電路板上的TX和RX引腳連接在一起時起作用。但是,當我通過模塊USB-TTL PL2303將RPI連接到筆記本電腦並使用超級終端查看結果時,收到的字符是垃圾字符。我不明白爲什麼。有什麼我錯過了嗎? 請問你能給我一些建議嗎?謝謝!

+2

波特率,停止位,奇偶校驗............................. –

+2

您是否設置了正確的波特率/串行超級終端的參數?通常應該是'115200-8-N-1' – 865719

+0

謝謝您的回覆。我可以使用任何波特率嗎?或者我必須要115200的波特率? –

回答

0

很有可能您使用的是不正確的波特率。它應該是115200(115200-8-N-1)(你可以使用其他的,但是你需要將兩個端點設置爲相同的波特率)。檢查使用stty

stty -F /dev/ttyX

setserial串行連接的波特率。在波特率誤差的情況下,你可以試試作者說什麼:使用

嘗試降低波特率(或僅具有 起始位低一個0xFF的字節),看看它是否工作。使用115k2波特率時,我們遇到了問題,我們的微控制器與RPi通信的速率可能達到 113636baud或119047baud。 113636baud產生了最低的誤差,所以我們用它和TX從RPi正在接收的微控制器 工作正常。然而,當傳輸到RPi時,沒有收到任何東西 。更改單片機使用119047baud導致RX到 工作。

+0

tcgetattr(uart0_filestream,&options); cfsetispeed(&options,B9600); cfsetospeed(&options,B9600); options.c_cflag&=〜PARENB; options.c_cflag&=〜CSTOPB; options.c_cflag&=〜CSIZE; options.c_cflag | = CS8; options.c_cflag&=〜CRTSCTS; options.c_cflag | =(CLOCAL | CREAD); tcflush(uart0_filestream,TCIFLUSH); tcsetattr(uart0_filestream,TCSANOW,&options); 這些是我的串行通信配置。我設置了9600的波特率,我也將它用於超級終端,但它仍然接收垃圾字符。 –

+0

@uv_utna您是否按照教程的建議與minicom進行了驗證?確保速度(波特率):115200 位數:8 奇偶校驗:無 停止位:1 流量控制:無 – 4pie0

+0

我的代碼是正確的。電路中出現了一個愚蠢的錯誤。謝謝。 –