串行通信可以分為兩種類型:同步通信、異步通信.
1. 異步通信的特點及信息幀格式:
以起止式異步協議為例,下圖顯示的是起止式一幀數據的格式:
圖1
起止式異步通信的特點是:一個字符一個字符地傳輸,每個字符一位一位地傳輸,並且傳輸一個字符時,總是以"起始位"開始,以"停止位"結束,字符之間沒有固定的時間間隔要求.每一個字符的前面都有一位起始位(低電平,邏輯值),字符本身由5-7位數據位組成,接着字符后面是一位校驗位(也可以沒有校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長的空閑位.停止位和空閑位都規定為高電平(邏輯值1),這樣就保證起始位開始處一定有一個下跳沿.
從圖中可看出,這種格式是靠起始位和停止位來實現字符的界定或同步的,故稱為起止式協議.
異步通信可以采用正邏輯或負邏輯,正負邏輯的表示如下表所示:
邏輯0 |
邏輯1 |
|
正邏輯 |
低電平 |
高電平 |
負邏輯 |
高電平 |
低電平 |
異步通信的信息格式如下邊的表所示:
起始位 |
邏輯0 |
1位 |
數據位 |
邏輯0或1 |
5位、6位、7位、8位 |
校驗位 |
邏輯0或1 |
1位或無 |
停止位 |
邏輯1 |
1位,1.5位或2位 |
空閑位 |
邏輯1 |
任意數量 |
注:表中位數的本質含義是信號出現的時間,故可有分數位,如1.5.
例:傳送8位數據45H(0100,0101B),奇校驗,1個停止位,則信號線上的波形象圖2所示那樣:異步通信的速率:若9600bps,每字符8位,1起始,1停止,無奇偶,則實際每字符傳送10位,則960字符/秒.
圖2
2. 異步通信的接收過程
接收端以"接收時鍾"和"波特率因子"決定一位的時間長度.下面以波特率因子等於16(接收時鍾每16個時鍾周期,使接收移位寄存器移位一次),正邏輯為例說明,如圖3所示.
圖3
- 開始通信時,信號線為空閑(邏輯1),當檢測到由1到0的跳變時,開始對"接收時鍾"計數.
- 當計到8個時鍾時,對輸入信號進行檢測,若仍為低電平,則確認這是"起始位"B,而不是干擾信號.
- 接收端檢測到起始位后,隔16個接收時鍾,對輸入信號檢測一次,把對應的值作為D0位數據.若為邏輯1, 作為數據位1;若為邏輯0,作為數據位0.
- 再隔16個接收時鍾,對輸入信號檢測一次,把對應的值作為D1位數據.….,直到全部數據位都輸入.
- 檢測校驗位P(如果有的話).
- 接收到規定的數據位個數和校驗位后,通信接口電路希望收到停止位S(邏輯1),若此時未收到邏輯1,說明出現了錯誤,在狀態寄存器中置"幀錯誤"標志.若沒有錯誤,對全部數據位進行奇偶校驗,無校驗錯時,把數據位從移位寄存器中送數據輸入寄存器.若校驗錯,在狀態寄存器中置奇偶錯標志.
- 本幀信息全部接收完,把線路上出現的高電平作為空閑位.
當信號再次變為低時,開始進入下一幀的檢測.
3. 異步通信的發送過程
發送端以"發送時鍾"和"波特率因子"決定一位的時間長度.
- 當初始化后,或者沒有信息需要發送時,發送端輸出邏輯1,即空閑位,空閑位可以有任意數量.
- 當需要發送時,發送端首先輸出邏輯0,作為起始位.
- 接着,發送端首先發送D0位,直到各數據位發送完.
- 如果需要的話,發送端輸出校驗位.
- 最后,發送端輸出停止位(邏輯1).
- 如果沒有信息需要發送時,發送端輸出邏輯1,即空閑位,空閑位可以有任意數量.如果還有信息需要發送,轉入第(2)步.
對於以上發送、接收過程應注意以下幾點:
- 接收端總是在每個字符的頭部(即起始位)進行一次重新定位,因此發送端可以在字符之間插入不等長的空閑位,不影響接收端的接收.
- 發送端的發送時鍾和接收端的接收時鍾,其頻率允許有一定差異,當頻率差異在一定范圍內,不會引起接收端檢測錯位,能夠正確接收.並且這種頻率差異不會因多個字符的連續接收而造成誤差累計(因為每個字符的開始(起始位處)接收方均重新定位).只有當發送時鍾和接收時鍾頻率差異太大,引起接收端采樣錯位,才造成接收錯誤.
- 起始位,校驗位,停止位,空閑位的信號,由"發送移位寄存器"自動插入.在接收方,"接收移位寄存器"接收到一幀完整信息(起始,數據,校驗,停止)后,僅把數據的各位送至"數據輸入寄存器",即CPU從"數據輸入寄存器"中讀得的信息,只是有效數字,不包含起始位,校驗位,停止位信息.
本文轉自:http://cs.nju.edu.cn/yangxc/dcc2003.files/jszc-sub/comif-06.htm