在之前的文章中小編介紹了什么是CAN總線,包括CAN總線的數(shù)據(jù)格式和通信特點等方面的內(nèi)容,今天將分享串口通信相關知識內(nèi)容。CAN總線、串口通信都屬于比較常見的有線傳輸方式。
前文指路《還不知道什么是CAN總線?一定要看這篇文章!》
有線傳輸方式
第二期:串口通信
什么是串口通信?
串口通信(Serial Communication),是指外設和計算機之間通過數(shù)據(jù)信號線、地線等按位進行傳輸數(shù)據(jù)的一種通信方式。
特點:數(shù)據(jù)位的傳輸按位順序執(zhí)行,最少只需一根傳輸線即可完成;成本低但傳輸速度慢。串口通信的距離可以從幾米到幾千米。
串口通信的數(shù)據(jù)格式
一個完整的串口數(shù)據(jù)格式包括起始位、數(shù)據(jù)位、校驗位、停止位、波特率等幾個參數(shù)。
起始位:起始位必須是持續(xù)一個bit時間的邏輯0電平,它標志傳輸一個字符的開始。接收端可通過起始位使自身時鐘與發(fā)送端的數(shù)據(jù)同步。
數(shù)據(jù)位:數(shù)據(jù)位在起始位的后面,是串口通信的有效信息。數(shù)據(jù)位的位數(shù)可以由通信雙方共同約定,通常為8個bit。傳輸數(shù)據(jù)時先傳輸字符的低位,后傳輸字符的高位。
奇偶校驗位:奇偶校驗位僅占一位,用于進行奇校驗或偶校驗。該位不是必須有的。如果是奇校驗,需要保證傳輸?shù)臄?shù)據(jù)總共有奇數(shù)個邏輯高位;如果是偶校驗,需要保證傳輸?shù)臄?shù)據(jù)總共有偶數(shù)個邏輯高位。
停止位:停止位可以是1位、1.5位或2位。必須是邏輯1電平,它標志傳輸一個字符的結束。
空閑位:空閑位是指從一個字符的停止位結束到下一個字符的起始位開始,表示傳輸線路處于空閑狀態(tài),串口空閑時處于高電平。
波特率:波特率是串口通信中最常用的重要參數(shù)。它指的是串口通信的速率,也就是串口通信時每秒鐘可以傳輸多少個二進制位。例如波特率為9600,則說明每秒鐘可以傳輸9600個二進制位,即傳輸一個二進制位需要的時間為1/9600秒。
電平標準
根據(jù)通訊使用的電平標準不同,串口通訊可分為TTL 標準及RS-232 標準,見下表。
我們知道常見的電子電路中常使用TTL的電平標準,理想狀態(tài)下,使用5V表示二進制邏輯1,使用0V表示邏輯0;而RS232為了增加串口通訊的遠距離傳輸及抗干擾能力,它使用-15V 表示邏輯1,+15V 表示邏輯0。
因為控制器一般使用TTL電平標準,所以常常會使用MA3232芯片對TTL及RS-232電平的信號進行互相轉(zhuǎn)換。
主要的串口通信方式
先簡單了解下什么是單雙工通訊。
單工:數(shù)據(jù)傳輸只支持數(shù)據(jù)在一個方向上傳輸。
半雙工:允許數(shù)據(jù)在兩個方向上傳輸,但某一時刻只允許數(shù)據(jù)在一個方向上傳輸,實際上是一種切換方向的單工通信,不需要獨立的接收端和發(fā)送端,兩者可合并為一個端口。
全雙工:允許數(shù)據(jù)同時在兩個方向上傳輸,因此全雙工通信是兩個單工方式的結合,需要獨立的接收端和發(fā)送端。
串口通信主要分為RS232、RS422、RS485三種通信方式。
RS232
RS-232是IBM-PC及其兼容機上的串行連接標準。全雙工通信,需要地線、發(fā)送線和接收線三條線。RS-232只限于PC串口和設備間點對點的通信,抗干擾能力較差,最遠通信距離是50英尺。RS-232可用于許多用途,比如連接鼠標、打印機、工業(yè)儀器儀表,也用于驅(qū)動和連線的改進,實際應用中RS-232的傳輸長度或者速度常常超過標準的值。
RS422
RS-422(EIA RS-422-A Standard)是Apple的Macintosh計算機的串口連接標準。采用全雙工通訊方式,有4根信號線,收與發(fā)是分開的,可以同時進行收和發(fā)。RS-422接口的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mb/s。
RS-422使用差分信號以及非平衡參考地的信號。差分傳輸使用兩根線發(fā)送和接收信號,對比RS-232,它能更好地抗噪聲和有更遠的傳輸距離,在工業(yè)環(huán)境中尤為適用。
RS485
RS-485采用半雙工通訊方式,支持多點數(shù)據(jù)通信。因為它增加了設備的個數(shù),同時定義了在最大設備個數(shù)情況下的電氣特性,以保證足夠的信號電壓。RS-485具有出色抗噪和多設備能力,RS-485可用超過4000英尺的線進行串行通行。RS485采用平衡發(fā)送和差分接收,具有良好的抗干擾能力,信號能傳輸上千米。RS-422設備可以被RS-485控制。
串口通信問題排查
我們排查串口通信問題的方向基本為以下幾部分,如圖所示。
1.檢查中間件
串口通信必然存在發(fā)送端和接收端,且兩者通過中間件(例如導線),遇到問題,首先應該保證導線連接正常。如果這一部分沒有確定,直接排查其他方向,很可能在做無用功。
2.排查硬件層
通過邏輯分析儀、示波器等儀器來判斷發(fā)送端、接收端在發(fā)送、接收、空閑時的引腳波形是否正常。串口空閑時為高電平,有數(shù)據(jù)時才會有電平變化。同時需要確定電壓是否正常。波形測量的位置先從最終點開始測量,然后依次排查中間部分的探測點,來判斷問題位置。
如果發(fā)現(xiàn)波形變形、失真、電壓不正常等情況,請讓硬件工程師協(xié)助進行排查。在其起始點可以看到波形,但是終點看不到,需要使用萬用表來確定是否引腳存在虛焊。
3.檢查串口驅(qū)動層
如果排查了硬件無問題以后,但是發(fā)送端串口沒有波形,這時候就需要檢查串口驅(qū)動是否配置成功了。可以先將發(fā)送端的Tx、Rx引腳短接,進行回環(huán)測試。最好先用一個簡單例程進行測試,盡量排除多個變量的影響。排查時需要特別注意的是,不能只看代碼邏輯,要注重實際調(diào)試,善于利用軟件調(diào)試窗口來觀察相關寄存器的值。
4.應用協(xié)議層
通過以上方向的排查,可以證明自發(fā)自收沒有問題。接下來就驗證雙方是否可以正常通信。應用協(xié)議層可能存在的問題有:
①發(fā)送端與接收端數(shù)據(jù)協(xié)議有問題,例如CRC、幀頭幀尾校驗、解析數(shù)據(jù)包等方面。
②發(fā)送端與接收端串口配置的參數(shù):波特率、校驗位不一致,導致無法通信。
另外大家也需要注意下面這幾點:
①由于信號容易被干擾,建議使用帶屏蔽線,并且接線一定要嚴格,需要接地的最好接地。有些485通信,還需要考慮接上終端電阻來匹配。如果是RS232通信,盡量不要讓線太長。
②因為很多設備通過外部晶振或者內(nèi)部時鐘計算的波特率都是存在誤差的。這樣的話一旦報文過長,會導致誤差累積,進而出現(xiàn)串口識別亂碼或者收不到的情況。
③在一些可能會存在干擾的地方,可以考慮使用奇校驗或者偶校驗,這樣可以將錯誤的報文過濾掉或者盡量使用一些數(shù)據(jù)校驗協(xié)議,防止數(shù)據(jù)出錯。
-
通信
+關注
關注
18文章
5949瀏覽量
135783 -
串口
+關注
關注
14文章
1540瀏覽量
76060
發(fā)布評論請先 登錄
相關推薦
評論