在我們從事嵌入式相關(guān)的項(xiàng)目開(kāi)發(fā)時(shí),經(jīng)常會(huì)遇到各種各樣的串口通信問(wèn)題。
筆者根據(jù)自己平時(shí)的調(diào)試開(kāi)發(fā)經(jīng)驗(yàn),總結(jié)了一份排查指南,希望可以給大家提供一些排查問(wèn)題的方向和辦法。
串口通信
串口通信是指外設(shè)和計(jì)算機(jī)、或外設(shè)和外設(shè)之間通過(guò)數(shù)據(jù)信號(hào)線、地線等按位進(jìn)行傳輸數(shù)據(jù)的一種通信方式。該通信方式的通信格式包括起始位、數(shù)據(jù)位、校驗(yàn)位、停止位,如下圖所示。串口通信的特點(diǎn)為成本低但傳輸速度慢。串口通信的距離可以從幾米到幾千米。
排查指南
上面簡(jiǎn)單介紹了一下串口通信,接下來(lái)讓我們進(jìn)入正題。我們排查串口通信問(wèn)題的方向基本為以下幾部分,如圖所示,依次為中間層、硬件層、串口驅(qū)動(dòng)層以及應(yīng)用協(xié)議層。
1.檢查中間件
串口通信必然存在發(fā)送端和接收端,且兩者通過(guò)中間件(例如導(dǎo)線),遇到問(wèn)題,首先應(yīng)該保證導(dǎo)線連接正常。如果這一部分沒(méi)有確定,直接排查其他方向,很可能在做無(wú)用功。
2.檢查硬件層
通過(guò)邏輯分析儀、示波器等儀器來(lái)判斷發(fā)送端、接收端在發(fā)送、接收、空閑時(shí)的引腳波形是否正常。串口空閑時(shí)為高電平,有數(shù)據(jù)時(shí)才會(huì)有電平變化。同時(shí)需要確定電壓是否正常。波形測(cè)量的位置先從最終點(diǎn)開(kāi)始測(cè)量,然后依次排查中間部分的探測(cè)點(diǎn),來(lái)判斷問(wèn)題位置。
如果發(fā)現(xiàn)波形變形、失真、電壓不正常等情況,請(qǐng)讓硬件工程師協(xié)助進(jìn)行排查。在其起始點(diǎn)可以看到波形,但是終點(diǎn)看不到,需要使用萬(wàn)用表來(lái)確定是否引腳存在虛焊。
3.檢查串口驅(qū)動(dòng)
如果排查了硬件無(wú)問(wèn)題以后,但是發(fā)送端串口沒(méi)有波形,這時(shí)候就需要檢查串口驅(qū)動(dòng)是否配置成功了。
可以先將發(fā)送端的Tx、Rx引腳短接,進(jìn)行回環(huán)測(cè)試。最好先用一個(gè)簡(jiǎn)單例程進(jìn)行測(cè)試,盡量排除多個(gè)變量的影響。排查時(shí)需要特別注意的是,不能只看代碼邏輯,要注重實(shí)際調(diào)試,善于利用軟件調(diào)試窗口來(lái)觀察相關(guān)寄存器的值。
4.協(xié)議問(wèn)題
通過(guò)以上方向的排查,可以證明自發(fā)自收沒(méi)有問(wèn)題。接下來(lái)就驗(yàn)證雙方是否可以正常通信。應(yīng)用協(xié)議層可能存在的問(wèn)題有:
①發(fā)送端與接收端數(shù)據(jù)協(xié)議有問(wèn)題,例如CRC、幀頭幀尾校驗(yàn)、解析數(shù)據(jù)包等方面。
②發(fā)送端與接收端串口配置的參數(shù):波特率、校驗(yàn)位不一致,導(dǎo)致無(wú)法通信。
另外大家也需要注意下面這幾點(diǎn):
①由于信號(hào)容易被干擾,建議使用帶屏蔽線,并且接線一定要嚴(yán)格,需要接地的最好接地。有些485通信,還需要考慮接上終端電阻來(lái)匹配。如果是RS232通信,盡量不要讓線太長(zhǎng)。
②因?yàn)楹芏嘣O(shè)備通過(guò)外部晶振或者內(nèi)部時(shí)鐘計(jì)算的波特率都是存在誤差的。這樣的話如果一旦報(bào)文過(guò)長(zhǎng),會(huì)導(dǎo)致誤差累積,進(jìn)而出現(xiàn)串口識(shí)別亂碼或者收不到的情況。
③在一些可能會(huì)存在干擾的地方,可以考慮使用奇校驗(yàn)或者偶校驗(yàn),這樣可以將錯(cuò)誤的報(bào)文過(guò)濾掉或者盡量使用一些數(shù)據(jù)校驗(yàn)協(xié)議,防止數(shù)據(jù)出錯(cuò)。
以上就是筆者總結(jié)的串口通信方面的排查指南,文中如有出錯(cuò)之處,望指正,希望大家共同進(jìn)步!
-
串口通信
+關(guān)注
關(guān)注
34文章
1627瀏覽量
55734
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
串口通信原理解析 串口與并口的區(qū)別
【迅為電子】叮!您的RK3568開(kāi)發(fā)板系統(tǒng)鏡像備份方法請(qǐng)查收
![【迅為電子】叮!您的RK3568開(kāi)發(fā)板系統(tǒng)鏡像備份方法<b class='flag-5'>請(qǐng)</b><b class='flag-5'>查收</b>](https://file1.elecfans.com/web3/M00/00/20/wKgZO2dGtgGAI-V6AACJSeqLjMw980.png)
串口通信的開(kāi)發(fā)環(huán)境配置
使用Python進(jìn)行串口通信的案例
串口通信與并口通信的區(qū)別
串口通信協(xié)議解析 串口通信應(yīng)用實(shí)例
機(jī)智云歷史數(shù)據(jù)導(dǎo)出與排查指南
![機(jī)智云歷史數(shù)據(jù)導(dǎo)出與<b class='flag-5'>排查</b><b class='flag-5'>指南</b>](https://file.elecfans.com/web2/M00/40/03/pYYBAGJrSWqAb-nSAAAXmKtCFeo833.jpg)
請(qǐng)查收!一張來(lái)自南京會(huì)“發(fā)光”的城市名片 智慧路燈 物聯(lián)網(wǎng)太陽(yáng)能路燈
![<b class='flag-5'>請(qǐng)</b><b class='flag-5'>查收</b>!一張來(lái)自南京會(huì)“發(fā)光”的城市名片 智慧路燈 物聯(lián)網(wǎng)太陽(yáng)能路燈](https://file1.elecfans.com//web2/M00/0A/5C/wKgZomcfM6eAFLy_AAVR3tHfEuo02.jpeg)
![](https://file1.elecfans.com/web2/M00/00/B9/wKgZomaxiZiAWG0IAAnZHS67iMU850.png)
倒計(jì)時(shí)4天 | 飛凌嵌入式技術(shù)創(chuàng)新日(北京站)參會(huì)指南請(qǐng)查收
![倒計(jì)時(shí)4天 | 飛凌嵌入式技術(shù)創(chuàng)新日(北京站)參會(huì)<b class='flag-5'>指南</b><b class='flag-5'>請(qǐng)</b><b class='flag-5'>查收</b>](https://file1.elecfans.com/web2/M00/F1/74/wKgZomZ1IXmATW6_AACXY8CyKuU423.png)
評(píng)論