串口通信問題排查指南

億佰特物聯網實驗室 發佈 2022-06-30T06:58:01.730488+00:00

在我們從事嵌入式相關的項目開發時,經常會遇到各種各樣的串口通信問題。筆者根據自己平時的調試開發經驗,總結了一份排查指南,希望可以給大家提供一些排查問題的方向和辦法。串口通信是指外設和計算機、或外設和外設之間通過數據信號線、地線等按位進行傳輸數據的一種通信方式。

在我們從事嵌入式相關的項目開發時,經常會遇到各種各樣的串口通信問題。

筆者根據自己平時的調試開發經驗,總結了一份排查指南,希望可以給大家提供一些排查問題的方向和辦法。

串口通信是指外設和計算機、或外設和外設之間通過數據信號線、地線等按位進行傳輸數據的一種通信方式。該通信方式的通信格式包括起始位、數據位、校驗位、停止位,如下圖所示。串口通信的特點為成本低但傳輸速度慢。串口通信的距離可以從幾米到幾千米。

上面簡單介紹了一下串口通信,接下來讓我們進入正題了。我們排查串口通信問題的方向基本為以下幾部分,如圖所示。

1.檢查中間件

串口通信必然存在發送端和接收端,且兩者通過中間件(例如導線),遇到問題,首先應該保證導線連接正常。如果這一部分沒有確定,直接排查其他方向,很可能在做無用功。

2.排查硬體層

通過邏輯分析儀、示波器等儀器來判斷發送端、接收端在發送、接收、空閒時的引腳波形是否正常。串口空閒時為高電平,有數據時才會有電平變化。同時需要確定電壓是否正常。波形測量的位置先從最終點開始測量,然後依次排查中間部分的探測點,來判斷問題位置。

如果發現波形變形、失真、電壓不正常等情況,請讓硬體工程師協助進行排查。在其起始點可以看到波形,但是終點看不到,需要使用萬用表來確定是否引腳存在虛焊。

3.檢查串口驅動層

如果排查了硬體無問題以後,但是發送端串口沒有波形,這時候就需要檢查串口驅動是否配置成功了。可以先將發送端的Tx、Rx引腳短接,進行迴環測試。最好先用一個簡單例程進行測試,儘量排除多個變量的影響。排查時需要特別注意的是,不能只看代碼邏輯,要注重實際調試,善於利用軟體調試窗口來觀察相關寄存器的值。

4.應用協議層

通過以上方向的排查,可以證明自發自收沒有問題。接下來就驗證雙方是否可以正常通信。應用協議層可能存在的問題有:

①發送端與接收端數據協議有問題,例如CRC、幀頭幀尾校驗、解析數據包等方面。

②發送端與接收端串口配置的參數:波特率、校驗位不一致,導致無法通信。

另外大家也需要注意下面這幾點:

①由於信號容易被干擾,建議使用帶屏蔽線,並且接線一定要嚴格,需要接地的最好接地。有些485通信,還需要考慮接上終端電阻來匹配。如果是RS232通信,儘量不要讓線太長。

②因為很多設備通過外部晶振或者內部時鐘計算的波特率都是存在誤差的。這樣的話如果一旦報文過長,會導致誤差累積,進而出現串口識別亂碼或者收不到的情況。

③在一些可能會存在干擾的地方,可以考慮使用奇校驗或者偶校驗,這樣可以將錯誤的報文過濾掉或者儘量使用一些數據校驗協議,防止數據出錯。

以上就是筆者總結的串口通信方面的排查指南,文中如有出錯之處,望指正,希望大家共同進步!

關鍵字: