Yocto

通過 stty 對串列設置進行故障排除

  • April 27, 2018

硬體

帶有i.MX6處理器的PHYTEC Mira 板

作業系統

Yocto Image 使用 PHYTEC Source提供的 BSP 創建,其中包含最少的包。

該板有一個稱為UART3的 UART 板,其在作業系統中的軟體介面是/dev/ttymxc2 Hardware Manual。唯一可用於檢查/設置板上串列埠的是stty.

任務

我希望將Adafruit Ultimate GPS連接到UART3,以便在 Mira Board 上從中讀取資訊。

嘗試1

我以以下方式連接了兩個組件。

UART3_RXD_RS232 (MIRA) --> TX pin (GPS)
UART3_TXD_RS232 (MIRA) --> RX pin (GPS)

設置串口如下:

stty -F /dev/ttymxc2 speed 9600

讀取值:

cat /dev/ttymxc2

結果:垃圾值。嘗試了所有可能的設置,仍然獲得垃圾值。編寫了一個簡單的node腳本來嘗試讀取來自埠的資訊,但我收到錯誤消息,指出無法辨識字元(垃圾值)。

嘗試2

最初,我嘗試將 GPS 連接到一個簡單的 Arduino Nano 以從 GPS 獲取值,這可以正常工作,確認 GPS 發送資訊並且沒有發生缺陷。

我連接 Mira 和 Arduino 的串列埠,並嘗試將 Mira 的資訊發送到 Arduino 的串列介面並通過串列控制台讀取。

設置

  MIRA_Board (serial UART3) ---> Arduino Nano (Serial Pins) --USBCable--> Computer

引腳

UART3_RXD_RS232 (MIRA) --> RX PIN NANO
UART3_TXD_RS232 (MIRA) --> TX PIN NANO

我通過 SSH 登錄 Mira 板。觸發以下命令,希望通過 Arduino 在電腦的串列控制台上期望相同的值

echo 'hello' > /dev/ttymxc2

結果:控制台上仍然存在垃圾值。 膩子上的結果

的配置/dev/ttymxc2如下

stty -F /dev/ttymxc2 -a                       
speed 9600 baud;stty: /dev/ttymxc2 line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;   -parenb -parodd cs8 hupcl -cstopb cread clocal –crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8  
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0   
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

如果此問題是由於串列配置不匹配造成的,我該如何使用 進行故障排除stty

PS:GPS的波特率應該是9600這種情況

您可以嘗試在 Mira 板上使用 UART1 或 UART2。根據手冊,他們使用 TTL 電平信號。GPS 模組輸出 3 V,但允許輸入 5 V。+3 V 應該足以解釋為 TTL 輸入上的“1”。RS-232 信號不適合沒有緩衝器,因為 RS-232 為空間狀態指定 +3..+12 V,為標記狀態指定 -3..-15 V(即15 V)。

引用自:https://unix.stackexchange.com/questions/440474