0、串行通信
串行通信技術(shù)(Serial Communication),是指通信雙方按位bit進(jìn)行,遵守時(shí)序的一種通信方式。串行通信中,將數(shù)據(jù)按位依次傳輸, 每位數(shù)據(jù)占據(jù)固定的時(shí)間長(zhǎng)度,僅用一根接收線和一根發(fā)送線就可以完成系統(tǒng)間交換信息
盡管串行通訊的比按字節(jié)傳輸?shù)牟⑿型ㄐ怕?,但是串口具有通信線路少,布線簡(jiǎn)便易行,施工方便,結(jié)構(gòu)靈活,系統(tǒng)間協(xié)商協(xié)議,自由度及靈活度較高的特點(diǎn)。
同步通信:
同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個(gè)數(shù)據(jù)字符。它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符(CRC)組成。
同步字符位于幀開頭,用于確認(rèn)數(shù)據(jù)字符的開始。
數(shù)據(jù)字符在同步字符之后,個(gè)數(shù)沒有限制,由所需傳輸?shù)臄?shù)據(jù)塊長(zhǎng)度來決定;
校驗(yàn)字符有1到2個(gè),用于接收端對(duì)接收到的字符序列進(jìn)行正確性的校驗(yàn)。
同步通信的缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格的同步。
異步通信:
異步通信中,有兩個(gè)比較重要的指標(biāo):字符幀格式和波特率,在發(fā)送端和接收端要保持一致。
數(shù)據(jù)通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過傳輸線被接收設(shè)備逐幀接收。
發(fā)送端和接收端可以由各自的時(shí)鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。
接收端檢測(cè)到傳輸線上發(fā)送過來的低電平邏輯"0"(即字符幀起始位)時(shí),確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當(dāng)接收端收到字符幀中的停止位時(shí),就知道一幀字符已經(jīng)發(fā)送完畢。
雖然異步技術(shù)使用簡(jiǎn)單,但起始和停止位是額外開銷,浪費(fèi)了帶寬。
一、不同接口之間的區(qū)別:
USB(Universal Serial Bus,通用串行總線)
是一個(gè)外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊。
COM口(串口)
串行接口簡(jiǎn)稱串口,也稱串行通信接口(通常指COM接口),是采用串行通信方式的擴(kuò)展接口。
(1) D型9針串口(DB9):RS-232電平標(biāo)準(zhǔn)
(2)4針串口:TTL電平標(biāo)準(zhǔn)
二、串口通信
典型的串口通信使用3根線完成,分別是地線GND、發(fā)送TXD(transport)、接收RXD(receive)。
由于串口通信是異步的,所以端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。
串口通信(異步)最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶的校驗(yàn)。對(duì)于兩個(gè)需要進(jìn)行串口通信的端口,這些參數(shù)必須匹配,這也是能夠?qū)崿F(xiàn)串口通訊的前提。
串口通信(如RS232接口)的數(shù)據(jù)傳輸都是0和1,在單總線、I2C、UART中都是通過一根線的高低電平來判斷邏輯1或者邏輯0,但這種信號(hào)線的GND再與其他設(shè)備形成共地模式的通信,這種共地模式傳輸容易產(chǎn)生干擾,并且抗干擾性能也比較弱。而差分通信、支持多機(jī)通信、抗干擾強(qiáng)的RS485則能夠?qū)崿F(xiàn)更適合長(zhǎng)距離、高速傳輸。
對(duì)于通訊協(xié)議,最基本的是把它分為物理層和協(xié)議層。
物理層
物理層規(guī)定通訊系統(tǒng)中具有機(jī)械、電子功能部分的特性, 確保原始數(shù)據(jù)在物理媒體的傳輸。
串口通訊的物理層有很多標(biāo)準(zhǔn)及變種,例如RS-232標(biāo)準(zhǔn)主要規(guī)定了信號(hào)的用途、通訊接口以及信號(hào)的電平標(biāo)準(zhǔn)。
在上面的通訊方式中,兩個(gè)通訊設(shè)備的"DB9接口"之間通過串口信號(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)過一個(gè)"電平轉(zhuǎn)換芯片"轉(zhuǎn)換成控制器能識(shí)別的"TTL標(biāo)準(zhǔn)"的電平信號(hào),才能實(shí)現(xiàn)通訊。
RS232與TTL的電平標(biāo)準(zhǔn)
不平衡傳輸、相對(duì)于信號(hào)地的單端通訊、全雙工
RS485 差分信號(hào)
為了提高抗干擾特性和增大傳輸距離,RS485采用差分信號(hào)進(jìn)行數(shù)據(jù)傳輸,是一種半雙工通信方式;
在RS485通信網(wǎng)絡(luò)中一般采用的是主從通信方式,即一個(gè)主機(jī)帶多個(gè)從機(jī)。
相對(duì)于單信號(hào)線傳輸?shù)姆绞?,使用差分信?hào)傳輸具有如下優(yōu)點(diǎn):
1)抗干擾能力強(qiáng),當(dāng)外界存在噪聲干擾時(shí),幾乎會(huì)同時(shí)耦合到兩條信號(hào)線上,而接收端只關(guān)心兩個(gè)信號(hào)的差值,所以外界的共模噪聲可以被完全抵消。
2)能有效抑制它對(duì)外部的電磁干擾,同樣的道理,由于兩根信號(hào)的極性相反,他們對(duì)外輻射的電磁場(chǎng)可以相互抵消,耦合的越緊密,泄放到外界的電磁能量越少。
3)時(shí)序定位精確,由于差分信號(hào)的開關(guān)變化是位于兩個(gè)信號(hào)的交點(diǎn),而不像普通單端信號(hào)依靠高低兩個(gè)閾值電壓判斷,因而受工藝,溫度的影響小,能降低時(shí)序上的誤差,同時(shí)也更適合于低幅度信號(hào)的電路。
由于差分信號(hào)線具有這些優(yōu)點(diǎn),所以在USB協(xié)議、485協(xié)議、以太網(wǎng)協(xié)議及CAN協(xié)議的物理層中,都使用了差分信號(hào)傳輸。
2. 協(xié)議層
串口通訊的數(shù)據(jù)包由發(fā)送設(shè)備通過自身的TXD接口傳輸?shù)浇邮赵O(shè)備的RXD接口。在串口通訊的協(xié)議層中, 規(guī)定了通訊邏輯(數(shù)據(jù)包的內(nèi)容),它由起始位、主體數(shù)據(jù)、校驗(yàn)位以及停止位組成,通訊雙方的數(shù)據(jù)包格式(幀格式)要約定一致才能正常收發(fā)數(shù)據(jù);通常兩個(gè)設(shè)備之間通信要約定好波特率、數(shù)據(jù)長(zhǎng)度、檢驗(yàn)位和停止位。
波特率:數(shù)據(jù)信號(hào)對(duì)載波的調(diào)制速率,串口異步通訊中由于沒有時(shí)鐘信號(hào)(如DB9接口中是沒有時(shí)鐘信號(hào)的), 所以兩個(gè)通訊設(shè)備之間需要約定好波特率,即每個(gè)碼元的長(zhǎng)度,以便對(duì)信號(hào)進(jìn)行解碼。比如波特率為9600bps;代表的就是每秒中傳輸9600bit,也就是相當(dāng)于每一秒中劃分成了9600等份?!颈忍芈?= 波特率 X 單個(gè)調(diào)制狀態(tài)對(duì)應(yīng)的二進(jìn)制位數(shù)】
起始位:起始位必須是持續(xù)一個(gè)比特時(shí)間的邏輯0電平,標(biāo)志傳輸一個(gè)字符的開始,接收方可用起始位使自己的接收時(shí)鐘與發(fā)送方的數(shù)據(jù)同步。
數(shù)據(jù)位:數(shù)據(jù)位緊跟在起始位之后,是通信中的真正有效信息。數(shù)據(jù)位的位數(shù)可以由通信雙方共同約定(通常為5、6、7或8位。傳輸數(shù)據(jù)時(shí)先傳送字符的低位,后傳送字符的高位。
校驗(yàn)位:在有效數(shù)據(jù)之后,有一個(gè)可選的數(shù)據(jù)校驗(yàn)位。由于數(shù)據(jù)通信相對(duì)更容易受到外部干擾導(dǎo)致傳輸數(shù)據(jù)出現(xiàn)偏差, 可以在傳輸過程加上校驗(yàn)位來解決這個(gè)問題。
(1)奇校驗(yàn)(odd):數(shù)據(jù)位加上校驗(yàn)位中的“邏輯高位1”的個(gè)數(shù)保持為奇數(shù);
(2)偶校驗(yàn)(even):數(shù)據(jù)位加上校驗(yàn)位中的“邏輯高位1”的個(gè)數(shù)保持為偶數(shù)(3)0校驗(yàn)(space):校驗(yàn)位永遠(yuǎn)是0;
(4)1校驗(yàn)(mark):校驗(yàn)位永遠(yuǎn)是1;
(5)無(wú)校驗(yàn)(noparity):沒有校驗(yàn)位。
停止位:由0.5、1、1.5或2個(gè)邏輯1的數(shù)據(jù)位表示,只要雙方約定一致即可。
空閑位:空閑位是指從一個(gè)字符的停止位結(jié)束到下一個(gè)字符的起始位開始,表示線路處于空閑狀態(tài),必須由高電平來填充。
例如,對(duì)于16進(jìn)制數(shù)據(jù)55aaH,當(dāng)采用8位數(shù)據(jù)位、1位停止位傳輸時(shí),它在信號(hào)線上的波形如下圖所示。
(先傳第一個(gè)字節(jié)55,再傳第二個(gè)字節(jié)aa,每個(gè)字節(jié)都是從低位向高位逐位傳輸)
3、數(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ā)送端。
4、設(shè)備間通信
原生的串口通信主要是控制器跟串口的設(shè)備或者傳感器通信,不需要經(jīng)過電平轉(zhuǎn)換芯片來轉(zhuǎn)換電平,直接就用TTL電平通信。例如GPS模塊、GSM模塊、串口轉(zhuǎn)WIFI模塊、HC04藍(lán)牙模塊等與控制器之間的通訊。
RS232轉(zhuǎn)TTL,通過電平轉(zhuǎn)換芯片將 標(biāo)準(zhǔn) RS232 串口信號(hào)轉(zhuǎn)換為 TTL電平的 RS232 串口信號(hào),不需要安裝驅(qū)動(dòng)。
USB轉(zhuǎn)串口(TTL)實(shí)現(xiàn)計(jì)算機(jī)USB接口到物理串口之間的轉(zhuǎn)換。主要用于設(shè)備跟電腦通信,電平轉(zhuǎn)換芯片一般有CH340、PL2303、CP2102、FT232 使用的時(shí)候電腦端需要安裝電平轉(zhuǎn)換芯片的驅(qū)動(dòng)。
串口發(fā)送
串口應(yīng)用發(fā)送數(shù)據(jù)->USB串口驅(qū)動(dòng)獲取數(shù)據(jù)->驅(qū)動(dòng)將數(shù)據(jù)經(jīng)過USB通道發(fā)送給USB串口設(shè)備->USB串口設(shè)備接收到數(shù)據(jù)通過串口發(fā)送
串口接收
USB串口設(shè)備接收串口數(shù)據(jù)->將串口數(shù)據(jù)經(jīng)過USB打包后上傳給USB主機(jī)->USB串口驅(qū)動(dòng)獲取到通過USB上傳的串口數(shù)據(jù)->驅(qū)動(dòng)將數(shù)據(jù)保存在串口緩沖區(qū)提供給串口應(yīng)用讀取
4、USART、UART簡(jiǎn)介
通用同步異步收發(fā)器(USART,Universal Synchronous Asynchronous Receiver and Transmitter)是一個(gè)串行通信設(shè)備, 可以靈活地與外部設(shè)備進(jìn)行全雙工數(shù)據(jù)交換。
通用同步異步收發(fā)器(USART,Universal Synchronous Asynchronous Receiver and Transmitter)是一個(gè)串行通信設(shè)備, 可以靈活地與外部設(shè)備進(jìn)行全雙工數(shù)據(jù)交換。
通用異步收發(fā)器(UART,Universal Asynchronous Receiver and Transmitter), 它是在USART基礎(chǔ)上裁剪掉了同步通信功能,只有異步通信。
數(shù)據(jù)通信方式包括同步和異步通信,發(fā)送方和接收方按照同一個(gè)時(shí)鐘周期工作就叫同步,發(fā)送方和接收方?jīng)]有提供時(shí)鐘輸出、不按照統(tǒng)一的時(shí)鐘周期、而各自按照自己的時(shí)鐘周期工作就叫異步。
異步通信時(shí)接收方不必一直在意發(fā)送方,發(fā)送方需要發(fā)送信息時(shí)會(huì)首先給接收方一個(gè)信息開始的起始信號(hào),接收方接收到起始信號(hào)后就認(rèn)為后面緊跟著的就是有效信息,才會(huì)開始注意接收信息,直到收到發(fā)送方發(fā)過來的結(jié)束標(biāo)志。串口通信是屬于異步的,這個(gè)時(shí)候的波特率及數(shù)據(jù)包規(guī)則(幀格式)就顯得很重要了。
5、串口流控
在兩個(gè)串口設(shè)備間傳輸數(shù)據(jù)時(shí)經(jīng)常有必要進(jìn)行數(shù)據(jù)流控。這可能是受到中間串口通信線路、其中一個(gè)設(shè)備或者其他存儲(chǔ)介質(zhì)的限制。異步數(shù)據(jù)流控通常使用的有兩種方法。
第一種方法通常稱為軟件流控,使用特殊字符開始(XON or DC1)或者停止(XOFF or DC3)數(shù)據(jù)流。這些字符定義參見 ASCII 碼表。這些碼值在傳輸文本信息時(shí)很有用,但不能在未經(jīng)特殊編程時(shí)用于傳輸其他類型的信息。
第二種方法稱作硬件流控,使用RTS和CTS信號(hào)線取代特殊字符。當(dāng)接收方準(zhǔn)備好接收數(shù)據(jù)時(shí)會(huì)將RTS置為邏輯0以請(qǐng)求對(duì)方發(fā)送數(shù)據(jù),當(dāng)未準(zhǔn)備好時(shí)置為邏輯1,因此發(fā)送方會(huì)通過檢測(cè) CTS 電平狀態(tài)判斷是否可以發(fā)送數(shù)據(jù)。
使用硬件流控至少需要連接的信號(hào)線有GND、RXD、TXD、RTS、CTS。
使用軟件流控只需要GND、RXD、TXD。
審核編輯 黃昊宇
-
串口
+關(guān)注
關(guān)注
14文章
1557瀏覽量
76863
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論