在我們從事嵌入式相關(guān)的項(xiàng)目開發(fā)時,經(jīng)常會遇到各種各樣的串口通信問題。
筆者根據(jù)自己平時的調(diào)試開發(fā)經(jīng)驗(yàn),總結(jié)了一份排查指南,希望可以給大家提供一些排查問題的方向和辦法。
串口通信是指外設(shè)和計算機(jī)、或外設(shè)和外設(shè)之間通過數(shù)據(jù)信號線、地線等按位進(jìn)行傳輸數(shù)據(jù)的一種通信方式。該通信方式的通信格式包括起始位、數(shù)據(jù)位、校驗(yàn)位、停止位,如下圖所示。串口通信的特點(diǎn)為成本低但傳輸速度慢。串口通信的距離可以從幾米到幾千米。
上面簡單介紹了一下串口通信,接下來讓我們進(jìn)入正題了。我們排查串口通信問題的方向基本為以下幾部分,如圖所示。
1. 串口通信必然存在發(fā)送端和接收端,且兩者通過中間件(例如導(dǎo)線),遇到問題,首先應(yīng)該保證導(dǎo)線連接正常。如果這一部分沒有確定,直接排查其他方向,很可能在做無用功。
2. 通過邏輯分析儀、示波器等儀器來判斷發(fā)送端、接收端在發(fā)送、接收、空閑時的引腳波形是否正常。串口空閑時為高電平,有數(shù)據(jù)時才會有電平變化。同時需要確定電壓是否正常。波形測量的位置先從最終點(diǎn)開始測量,然后依次排查中間部分的探測點(diǎn),來判斷問題位置。
如果發(fā)現(xiàn)波形變形、失真、電壓不正常等情況,請讓硬件工程師協(xié)助進(jìn)行排查。在其起始點(diǎn)可以看到波形,但是終點(diǎn)看不到,需要使用萬用表來確定是否引腳存在虛焊。
3. 如果排查了硬件無問題以后,但是發(fā)送端串口沒有波形,這時候就需要檢查串口驅(qū)動是否配置成功了??梢韵葘l(fā)送端的Tx、Rx引腳短接,進(jìn)行回環(huán)測試。最好先用一個簡單例程進(jìn)行測試,盡量排除多個變量的影響。排查時需要特別注意的是,不能只看代碼邏輯,要注重實(shí)際調(diào)試,善于利用軟件調(diào)試窗口來觀察相關(guān)寄存器的值。
4. 通過以上方向的排查,可以證明自發(fā)自收沒有問題。接下來就驗(yàn)證雙方是否可以正常通信。應(yīng)用協(xié)議層可能存在的問題有:
① 發(fā)送端與接收端數(shù)據(jù)協(xié)議有問題,例如CRC、幀頭幀尾校驗(yàn)、解析數(shù)據(jù)包等方面。
② 發(fā)送端與接收端串口配置的參數(shù):波特率、校驗(yàn)位不一致,導(dǎo)致無法通信。
另外大家也需要注意下面這幾點(diǎn):
① 由于信號容易被干擾,建議使用帶屏蔽線,并且接線一定要嚴(yán)格,需要接地的最好接地。有些485通信,還需要考慮接上終端電阻來匹配。如果是RS232通信,盡量不要讓線太長。
② 因?yàn)楹芏嘣O(shè)備通過外部晶振或者內(nèi)部時鐘計算的波特率都是存在誤差的。這樣的話如果一旦報文過長,會導(dǎo)致誤差累積,進(jìn)而出現(xiàn)串口識別亂碼或者收不到的情況。
③ 在一些可能會存在干擾的地方,可以考慮使用奇校驗(yàn)或者偶校驗(yàn),這樣可以將錯誤的報文過濾掉或者盡量使用一些數(shù)據(jù)校驗(yàn)協(xié)議,防止數(shù)據(jù)出錯。
以上就是筆者總結(jié)的串口通信方面的排查指南,文中如有出錯之處,望指正,希望大家共同進(jìn)步!
相關(guān)文章推薦:干貨!串口通信常見問題及解決方法
查看技術(shù)文章和免費(fèi)咨詢技術(shù)問題可以訪問成都億佰特電子科技有限公司官網(wǎng)及各官方平臺:
微信號:cdebyte
今日頭條:億佰特
新浪微博:成都億佰特
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號-3