發(fā)布時(shí)間:2023-04-04作者來(lái)源:金航標(biāo)瀏覽:1872
在項(xiàng)目現(xiàn)場(chǎng)調(diào)試過(guò)程中,U轉(zhuǎn)串,U轉(zhuǎn)485,U轉(zhuǎn)232是我們經(jīng)常提及,經(jīng)常用到的調(diào)試工具。但具體串口是什么東西,新接觸的會(huì)搞不清楚,本篇總結(jié)下串口通信基礎(chǔ)知識(shí)。
一、什么是串口通信?
串行通訊是指僅用一根接收線和一根發(fā)送線就能將數(shù)據(jù)以位進(jìn)行傳輸?shù)囊环N通訊方式。盡管串行通訊的比按字節(jié)傳輸?shù)?/span>并行通信慢,但是串口可以在僅僅使用兩根線的情況下就能實(shí)現(xiàn)數(shù)據(jù)的傳輸。
典型的串口通信使用3根線完成,分別是地線、發(fā)送、接收。常見(jiàn)的RS-232-C接口(又稱EIA RS-232-C)就是這種典型的常見(jiàn)接口。
由于串口通信是異步的,所以端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。
串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶的校驗(yàn)。
對(duì)于兩個(gè)需要進(jìn)行串口通信的端口,這些參數(shù)必須匹配,這也是能夠?qū)崿F(xiàn)串口通訊的前提。
1、波特率
這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就是指波特率,例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。
2、數(shù)據(jù)位
這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語(yǔ)“包”指任何通信的情況。
3、停止位
用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。
4、奇偶校驗(yàn)位
在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位為1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。
二、串口通訊的物理層
在上面圖片示意的通訊方式中,兩個(gè)通訊設(shè)備的"DB9接口"之間通過(guò)串口信號(hào)線建立起連接,串口信號(hào)線中使用"RS-232標(biāo)準(zhǔn)"傳輸數(shù)據(jù)信號(hào)。由于RS-232電平標(biāo)準(zhǔn)的信號(hào)不能直接被控制器直接識(shí)別,所以這些信號(hào)會(huì)經(jīng)過(guò)一個(gè)"電平轉(zhuǎn)換芯片"轉(zhuǎn)換成控制器能識(shí)別的"TTL校準(zhǔn)"的電平信號(hào),才能實(shí)現(xiàn)通訊。
下圖為DB9標(biāo)準(zhǔn)串口通訊接口:
三、串口通訊的數(shù)據(jù)結(jié)構(gòu)
起始位:起始位必須是持續(xù)一個(gè)比特時(shí)間的邏輯0電平,標(biāo)志傳輸一個(gè)字符的開(kāi)始,接收方可用起始位使自己的接收時(shí)鐘與發(fā)送方的數(shù)據(jù)同步。
數(shù)據(jù)位:數(shù)據(jù)位緊跟在起始位之后,是通信中的真正有效信息。數(shù)據(jù)位的位數(shù)可以由通信雙方共同約定。傳輸數(shù)據(jù)時(shí)先傳送字符的低位,后傳送字符的高位。
奇偶校驗(yàn)位:奇偶校驗(yàn)位僅占一位,用于進(jìn)行奇校驗(yàn)或偶校驗(yàn),奇偶檢驗(yàn)位不是必須有的。如果是奇校驗(yàn),需要保證傳輸?shù)臄?shù)據(jù)總共有奇數(shù)個(gè)邏輯高位;如果是偶校驗(yàn),需要保證傳輸?shù)臄?shù)據(jù)總共有偶數(shù)個(gè)邏輯高位。
停止位:停止位可以是是1位、1.5位或2位,可以由軟件設(shè)定。它一定是邏輯1電平,標(biāo)志著傳輸一個(gè)字符的結(jié)束。
空閑位:空閑位是指從一個(gè)字符的停止位結(jié)束到下一個(gè)字符的起始位開(kāi)始,表示線路處于空閑狀態(tài),必須由高電平來(lái)填充。
完整的串口數(shù)據(jù)流如下所示:
四、單雙工通訊
單工:數(shù)據(jù)傳輸只支持?jǐn)?shù)據(jù)在一個(gè)方向上傳輸;
半雙工:允許數(shù)據(jù)在兩個(gè)方向上傳輸,但某一時(shí)刻只允許數(shù)據(jù)在一個(gè)方向上傳輸,實(shí)際上是一種切換方向的單工通信,不需要獨(dú)立的接收端和發(fā)送端,兩者可合并為一個(gè)端口;
全雙工:允許數(shù)據(jù)同時(shí)在兩個(gè)方向上傳輸,因此全雙工通信是兩個(gè)單工方式的結(jié)合,需要獨(dú)立的接收端和發(fā)送端。
五、232和485的區(qū)別
RS232 |
RS422 |
RS485 |
通訊距離15m |
通訊距離1200m |
通訊距離1200m |
通訊速率10KB/S |
通訊速率10MB/S | 通訊速率10MB/S |
1對(duì)1通訊 |
1對(duì)10通訊 | 1對(duì)32通訊 |
邏輯電平高 |
邏輯電平低 |
邏輯電平低 |
邏輯1:負(fù)電壓 |
邏輯1:正電壓 | 邏輯1:正電壓 |
最少3線制 |
最少4線制 | 最少2線制 |
免責(zé)聲明:本文采摘自網(wǎng)絡(luò) 雷工筆記,本文僅代表作者個(gè)人觀點(diǎn),不代表金航標(biāo)及行業(yè)觀點(diǎn),只為轉(zhuǎn)載與分享,支持保護(hù)知識(shí)產(chǎn)權(quán),轉(zhuǎn)載請(qǐng)注明原出處及作者,如有侵權(quán)請(qǐng)聯(lián)系我們刪除。
Copyright ? 深圳市金航標(biāo)電子有限公司 版權(quán)所有 粵ICP備17113853號(hào)