刪除
單片機(jī)串口通信基礎(chǔ)
串口通信是非??傄?,首先我們先了解一下基礎(chǔ)
隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計算機(jī)網(wǎng)絡(luò)技術(shù)的普及,計算機(jī)的通信功能越來越顯的重要。計算機(jī)通信是指計算機(jī)與外部設(shè)備或者計算機(jī)與計算機(jī)制之間的信息交換。
通信有并行通信和串行通信兩種方式。在多微機(jī)系統(tǒng)以及現(xiàn)代化測控系統(tǒng)中信息的交換多采用串行通信的方式。計算機(jī)通信是將計算機(jī)技術(shù)和通信技術(shù)的結(jié)合,完成計算機(jī)與外部設(shè)備或者計算機(jī)與計算機(jī)之間的信息交換,可以分為兩大類:并行通信和串行通信.
并行通信常常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進(jìn)行傳送。(如下圖)
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/0433024Z9_0.jpg)
由上圖可知一下可以傳送8位,跟由上圖可知一下可以傳8位,跟并行的A/D D/A 差不多,詢問和應(yīng)答 是發(fā)送 和接受 來詢問是否準(zhǔn)備好了沒有。
并行通信控制簡單,傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接受存在困難。串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。(如下圖)
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/04330C123_0.jpg)
注意:串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,丹數(shù)據(jù)的傳送控制比并行通信復(fù)雜。
一、異步通信與同步通信
1、異步通信
異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時鐘盡可能一致。
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/0431331333_0.jpg)
異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間不一定有位間隔的整數(shù)倍的關(guān)系,但同一個字符內(nèi)的各位之間的距離均為“位間隔”的整數(shù)倍。異步通信的數(shù)據(jù)格式:
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/0432331937_0.jpg)
{先發(fā)起始位:低電平 表示起始位 再發(fā)數(shù)據(jù)位 LSB 是低端 (LSB: Least Significant Bit)最低有效位,先發(fā)低位數(shù)據(jù)共7位數(shù)據(jù) + 1位校驗位數(shù)據(jù) (判斷發(fā)送是否正確,如果不要校驗位那么8位都是數(shù)據(jù)位) 最后發(fā)一個停止位(高電平結(jié)束就是一個位寬的高電平表示停止位) 共10位 一幀 。}
異步通訊的特點:不要求收發(fā)雙方時鐘的嚴(yán)格一致,實現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加2~3位用于起始位,各幀之間有間隔,因此傳輸效率不高。
2、同步通信
同步通信時要建立發(fā)送方時鐘對接受方時鐘的直接控制,使雙方達(dá)到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對接受方的同步可以通過兩種方法實現(xiàn)。
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/043201Q37_0.jpg)
面向字符的同步格式:
此時,傳送的數(shù)據(jù)和控制信息都必須由規(guī)定的字符集(如ASCII碼)中的字符所組成。圖中幀頭為1個或2個同步字符SYN(ASCII碼為16H),SOH為序始字符(ASCII碼為01H),表示標(biāo)題的開始,標(biāo)題中包含源地址,目標(biāo)地址和路由指示等信息。STX為文始字符(ASCII碼為02H),表示傳送的數(shù)據(jù)塊開始。數(shù)據(jù)塊是傳送正文內(nèi)容,由多個字符組成。數(shù)據(jù)塊后面是組終字符ETB(ASCII碼為17H)或文終字符ETX(ASCII碼為03H)。然后是校驗碼。典型的面向字符的同步規(guī)程如IBM的二進(jìn)制同步規(guī)程BSC。面向位的同步格式:
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/0431023016_0.jpg)
此時,將數(shù)據(jù)塊看做數(shù)據(jù)流,并用序列01111110作為開始和結(jié)束標(biāo)志。為了避免在數(shù)據(jù)流中出現(xiàn)序列01111110時引起的混亂,發(fā)送方總是在其發(fā)送的數(shù)據(jù)流中沒出現(xiàn)5個連續(xù)的1就插入一個附加的0;接收方則每檢測到5個連續(xù)的1并且其后有一個0時,就刪除該0.典型的面向位的同步協(xié)議如ISO的高級數(shù)據(jù)鏈路控制規(guī)程HDLC和IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC
同步通信的特點::是以特定的位組合“01111110”作為幀的開始和結(jié)束標(biāo)志,所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸效率高,但實現(xiàn)的硬件設(shè)備比異步通信發(fā)雜。(同步通信可以作為了解我這里只是想表達(dá)下我的理解,其實現(xiàn)實中我們用的大多數(shù)是異步通信)。
二、串行通信的傳輸方向
1、單工
單工是指數(shù)據(jù)傳輸僅能沿著一個方向,不能實現(xiàn)反向傳輸。
2、半雙工
半雙工是指數(shù)據(jù)傳輸可以沿兩個方向,不能實現(xiàn)反向傳輸。
3、全雙工
全雙工是指數(shù)據(jù)可以同時進(jìn)行雙向傳輸。
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/0431013054_0.jpg)
三、信號的調(diào)制與解調(diào)
利用調(diào)制器(MODULATOR)把數(shù)字信號轉(zhuǎn)換成模擬信號,然后送到通信線路上去,再由解調(diào)器(Demodulator)把從通信線路上收到的模擬信號轉(zhuǎn)換成數(shù)字信號。由于通信是雙向的,調(diào)制器和解調(diào)器合并在一個裝置中,這就是調(diào)制解調(diào)器MODEM。
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/043032Q45_0.jpg)
從上圖可以看出早期的計算機(jī)網(wǎng)絡(luò)通信就是利用串口RS-232C(是計算機(jī)串口電平)經(jīng)過MODEM 實現(xiàn)雙向通信的,當(dāng)然傳輸速率相當(dāng)?shù)汀?
四、串行通信的錯誤校驗
1、奇偶校驗
在發(fā)送數(shù)據(jù)時,數(shù)據(jù)位尾隨的1位為奇偶校驗位(1或0)。奇校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應(yīng)為奇數(shù);偶校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應(yīng)為偶數(shù)。接受字符時,對“1”的個數(shù)進(jìn)行校驗,若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。(注意:為了簡單等會我寫的程序不加校驗了)。
2、代碼和校驗
代碼和校驗是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個字節(jié)的校驗字符(校驗和)附加到數(shù)據(jù)塊末尾。接受方接受數(shù)據(jù)同時對數(shù)據(jù)塊(除校驗字節(jié)外)求和(或個字節(jié)異或),將所得結(jié)果與發(fā)送方的“校驗和”進(jìn)行比較,相符則無差錯,否則即認(rèn)為傳送過程中出現(xiàn)了差錯。
3、循環(huán)冗余校驗
這種校驗是通過某種數(shù)學(xué)運(yùn)算實現(xiàn)有效信息與校驗位之間的循環(huán)校驗,常用于對磁盤信息的傳輸,存儲區(qū)的完整性校驗等。這種校驗方法糾錯能力強(qiáng),廣泛應(yīng)用與同步通信中。(異步很少用,應(yīng)用于同步通信,作為了解,在讀研究生時候?qū)W信息論能學(xué)到,這里我也就是一知半解,嘿嘿畢竟哥沒讀過研究生)。
五、傳輸速率與傳輸距離
1、傳輸速率
比特率是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps).如每秒鐘傳送240個字符,而每個字符格式包含10位(1起始位,1停止位,8個數(shù)據(jù)位),這時的比特率為:
2、傳輸距離與傳輸速率的關(guān)系
串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小,當(dāng)比特率超過1000BPS,最大傳輸距離迅速下降,如9600bps時最大距離下降到只有76m(約250英尺)。
串行通信接口標(biāo)準(zhǔn)
一、RS-232C接口
RS232C是EIA(美國電子工業(yè)協(xié)會)1969年修訂RS-232C標(biāo)準(zhǔn)。RS-232C定義了數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)之間的物理接口標(biāo)準(zhǔn)。
1、機(jī)械特性
RS-232C接口規(guī)定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/04300160W_0.jpg)
以前是25針的這個可不是電腦的并行口內(nèi)部是不一樣的,因為電腦的并行口里面是有一組數(shù)據(jù)線,有詢問應(yīng)答等 , 現(xiàn)在都用9針的了(右邊)。記住里面有針的是公頭,另外一個帶孔的是母頭。現(xiàn)在外面賣的的串口線內(nèi)部是已經(jīng)對調(diào)好的了就是發(fā)送接收是對調(diào)的,這樣我們直接使用就可以了。
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/043002VD_0.jpg)
上圖是25針的串口對應(yīng)現(xiàn)在9針的管腳定義。RTS
DSR在連接MODEM 需接上 一般我們只是接2/3/5 腳就行了。
4、過程特性
過程特性規(guī)定了信號之間的時序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù)
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/0429343941_0.jpg)
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/042Z1I24_0.jpg)
5、RS-232C電平與TTL電平轉(zhuǎn)換驅(qū)動電路
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/042T95c0_0.jpg)
現(xiàn)在我們已經(jīng)集合了,就用MAX232直接能夠?qū)崿F(xiàn)TTL ->RS232 及 RS-232 ->TTL 都有了。
6、采用RS-232C接口存在的問題
1、傳輸距離短,傳輸速率低
RS-232C總線標(biāo)準(zhǔn)受電容允許值的約束,使用時傳輸距離一般不要超過15米(線路條件好時也不能超過幾十米)。最高傳送速率為20Kbps.
2、有電平偏移
RS-232C總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較大時,收發(fā)雙方的地電平差別較大,在信號地上將有較大的地電流并產(chǎn)生壓降。
3、抗干擾能力差
RS-232C在電平轉(zhuǎn)換時采用單端輸入輸出,在傳輸過程中當(dāng)干擾和噪聲混在正常信號中。為了提高信噪比,RS-232C總線標(biāo)準(zhǔn)不得不采用比較大的電壓擺幅。
二、RS-422A接口(為了改進(jìn) RS-232C 就是在RS232C 輸出后再進(jìn)行改進(jìn))
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/042P11324_0.jpg)
RS-422A輸出驅(qū)動器為雙端平衡驅(qū)動器。如果其中一條線為邏輯“1”狀態(tài),另一條線就為邏輯“0”,比采用單端不平衡驅(qū)動對電壓的放大倍數(shù)大一倍。差分電路能從地線干擾中拾取有效信號,差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了干擾和噪聲,由于差分放大器的作用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。RS-422A傳輸速率(90Kbps)時,傳輸距離可達(dá)1200米。(作為了解下)
三、RS-485接口
![單片機(jī)串口通信基礎(chǔ)](http://www.delux-kingway.cn/uploads/allimg/171124/042Qb448_0.jpg)
RS-485是RS-422A的變型:RS-422A用于全雙工,而RS-485則用于半雙工。RS-485是一種多發(fā)送器標(biāo)準(zhǔn),在通信線路上最多可以使用32 對差分驅(qū)動器/接收器。如果在一個網(wǎng)絡(luò)中連接的設(shè)備超過32個,還可以使用中繼器。
RS-485的信號傳輸采用兩線間的電壓來表示邏輯1和邏輯0。由于發(fā)送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用差動信道,所以它的干擾抑制性極好,又因為它的阻抗低,無接地問題,所以傳輸距離可達(dá)1200米,傳輸速率可達(dá)1Mbps。
RS-485是一點對多點的通信接口,一般采用雙絞線的結(jié)構(gòu)。普通的PC機(jī)一般不帶RS485接口,因此要使用RS-232C/RS-485轉(zhuǎn)換器。對于單片機(jī)可以通過芯片MAX485來完成TTL/RS-485的電平轉(zhuǎn)換。在計算機(jī)和單片機(jī)組成的RS-485通信系統(tǒng)中,下位機(jī)由單片機(jī)系統(tǒng)組成,上位機(jī)為普通的PC機(jī),負(fù)責(zé)監(jiān)視下位機(jī)的運(yùn)行狀態(tài),并對其狀態(tài)信息進(jìn)行集中處理,以圖文方式顯示下位機(jī)的工作狀態(tài)以及工業(yè)現(xiàn)場被控設(shè)備的工作狀況。系統(tǒng)中各節(jié)點(包括上位機(jī))的識別是通過設(shè)置不同的站地址來實現(xiàn)的。
更多信息請查看
評論