串行通信是指計算機主機與外設之間以及主機系統(tǒng)與主機系統(tǒng)之間數據的串行傳送。使用串口通信時,發(fā)送和接收到的每一個字符實際上都是一次一位的傳送的,每一位為1或者為0。
串行通信的分類
串行通信可以分為同步通信和異步通信兩類。同步通信是按照軟件識別同步字符來實現(xiàn)數據的發(fā)送和接收,異步通信是一種利用字符的再同步技術的通信方式。
同步通信
同步通信是一種連續(xù)串行傳送數據的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個數據字符。
它們均由同步字符、數據字符和校驗字符(crc)組成。其中同步字符位于幀開頭,用于確認數據字符的開始。數據字符在同步字符之后,個數沒有限制,由所需傳輸的數據塊長度來決定;校驗字符有1到2個,用于接收端對接收到的字符序列進行正確性的校驗。同步通信的缺點是要求發(fā)送時鐘和接收時鐘保持嚴格的同步。
異步通信
異步通信中,在異步通行中有兩個比較重要的指標:字符幀格式和波特率。數據通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過傳輸線被接收設備逐幀接收。發(fā)送端和接收端可以由各自的時鐘來控制數據的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步。
接收端檢測到傳輸線上發(fā)送過來的低電平邏輯0(即字符幀起始位)時,確定發(fā)送端已開始發(fā)送數據,每當接收端收到字符幀中的停止位時,就知道一幀字符已經發(fā)送完畢。
串行中的同步通信和異步通信
串行通信的數據是逐位傳送的,發(fā)送方發(fā)送的每一位都具有因定的時間間隔,這就要求接收方也要按照發(fā)送方同樣的時間間隔來接收每一位。不僅如此,接收方還要確定一個信息組的開始和結束。為此,串行通信對傳送數據的格式作了嚴格的規(guī)定。不同的串行通信方式具有不同的數據格式。常用的兩種基本串行通信方式:同步通信和異步通信及其數據傳送格式。
同步通信
所謂同步通信是指在約定的通信速率下,發(fā)送端和接收端的時鐘信號頻率和相信始終保持一致(同步),這就保證了通信雙方在發(fā)送和接收數據時具有完全一致的定時關系。
同步通信把許多字符組成一個信息組,或稱為信息幀,每幀的開始用同步字符來指示。由于發(fā)送和接收的雙方采用同一時鐘,所以在傳送數據的同時還要傳送時鐘信號,以便接收方可以用時鐘信號來確定每個信息位。
同步通信要求在傳輸線路上始終保持連續(xù)的字符位流,若計算機沒有數據傳輸,則線路上要用專用的“空閑”字符或同步字符填充。
同步通信傳送信息的位數幾乎不受限制,通常一次通信傳的數據有幾十到幾千個字節(jié),通信效率較高。但它要求在通信中保持精確的同步時鐘,所以其發(fā)送器和接收器比較復雜,成本也較高,一般用于傳送速率要求較高的場合。
用于同步通信的數據格式有許多種,
(a)單同步格式,會送一幀數據僅使用一個同步字符。當接收端收到并識別出一個完整同步字符后,就連續(xù)接收數據。一幀數據結束,進行crc校驗。
同步字符 數據 crc1 crc2
(b)雙同步字格式,這時利用兩個同步字符進行同步。
同步字符1 同步字符2 數據 crc1 crc2
(c)同步數據鏈路控制(sdc)規(guī)程所規(guī)定的數據格式。
標志符01111110 地址符8位 數據 crc1 crc2 標志符01111110
(d)則是一種外同步方式所采用的數據格式。對這種方式,在發(fā)送的一幀數據中不包含同步字符。同步信號sync通過專門的控制線加到串行的接口上。當sync一到達,表明數據部分開始,接口就連續(xù)接收數據和crc校驗碼。
數據場 crc1 crc2
(e)高級數據鏈路控制(hdlc)規(guī)程所規(guī)定的數據格式。它們均用于同步通信。這兩種規(guī)程的細節(jié)本書不做詳細說明。
標志符01111110 地址符8位 控制符8位 數據 crc1 crc2 標志符01111110
crc(cyclic redundancy checks)的意思是循環(huán)冗余校驗碼。它用于檢驗在傳輸過程中是否出現(xiàn)錯誤,是保證傳輸可靠性的重要手段之一。
異步通信
異步通信是指通信中兩個字符之間的時間間隔是不固定的,而在一個字符內各位的時間間隔是固定的。
異步通信規(guī)定字符由起始位(start bit)、數據位(data bit)、奇偶校驗位(parity)和停止位(stop bit)組成。起始位表示一個字符的開始,接收方可用起始位使自己的接收時鐘與數據同步。停止位則表示一個字符的結束。這種用起始位開始,停止位結束所構成的一串信息稱為幀(frame)(注意:異步通信中的“幀”與同步通信中“幀”是不同的,異步通信中的“幀”只包含一個字符,而同步通信中“幀”可包含幾十個到上千個字符)。在傳送一個字符時,由一位低電平的起始位開始,接著傳送數據位,數據位的位數為5~8。在傳輸時,按低位在前,高位在后的順序傳送。奇偶校驗位用于檢驗數據傳送的正確性,也可以沒有,可由程序來指定。最后傳送的是高電平的停止位,停止位可以是1位、1.5位或2位。停止位結束到下一個字符的起始位之間的空閑位要由高電平2來填充(只要不發(fā)送下一個字符,線路上就始終為空閑位)。
異步通信中典型的幀格式是:1位起始位,7位(或8位)數據位,1位奇偶校驗位,2位停止位。
起始位 數據位(低位…高位) 奇偶校驗位 停止位 空閑位 起始位
從以上敘述可以看出,在異步通信中,每接收一個字符,接收方都要重新與發(fā)送主同步一次,所以接收端的同步時鐘信號并不需要嚴格地與發(fā)送方同步,只要它們在一個字符的傳輸時間范圍內能保持同步即可,這意味著南時鐘信號漂移的要求要比同步信號低得多,硬件成本也要低的多,但是異步傳送一個字符,要增加大約20%的附加信息位,所以傳送效率比較低。異步通信方式簡單可靠,也容易實現(xiàn),故廣泛地應用于各種微型機系統(tǒng)中。