UART0串列埠程式設計(一):通訊協議設計;RS232標準
UART0串列埠程式設計(一)
嵌入式系統之間採用通訊方式交換資料,序列通訊是一種最基本的通訊手段。現在由於各類CPU均集成了UART部件。本節對串列埠程式設計時如何設計串列埠通訊協議,以及對RS232介面進行了說明。
1. 通訊協議設計
在進行通訊時,每次需要傳送的資訊一般超過1位元組。為此,通訊雙方必須約定通訊資料的排列格式,即通訊協議。通常把一次通訊過程的全部內容稱為一個“通訊幀”。通訊協議設計就是幀結構設計。在一幀內容中,通常包括以下部分。
(1)起始碼:由一個或若干個包含特定內容的位元組,表示一個通訊幀的開始。起始碼的內容必須與通訊資料內容有明顯區別(不能在通訊資料裡出現與起始碼相同的內容)。當通訊幀的總長度比較短,通道質量比較高時,為了提高效率,可以不設定起始碼。
(2)地址碼:在主從結構的多機組網通訊系統中,用來指明分機號。
當分機總數在255臺之內時,地址碼為1位元組。可以定義一個特殊的地址碼作為廣播地址,代表所有的分機。在多主多從(無主從)結構的多機組網通訊系統中,地址碼包含收發雙方的地址。如果是兩臺裝置之間進行點對點的通訊,幀結構中就步需要包含地址碼。
(3)長度碼:在資料長度不固定的通訊場合(變長幀),表示本幀資料內容的位元組數。當長度肯定不超過255位元組時,長度碼用1位元組表示。如果每次通訊資料內容的長度為雙方約定的固定值(定長幀),幀結構中就不需要包含長度碼。
(4)資料段:通訊的實質內容。
(5)校驗碼:由於通訊通道存在干擾,為了判斷接收的內容是否受到干擾,需要加入效驗碼。
效驗碼演算法可以採用
1)簡單的異或校驗碼。
2)也可以像HEX檔案那樣採用算術加法校驗。
3)採用功能極強的CRC校驗。
注:當通訊環境非常好時(如室內裝置之間的通訊),幀結構中就不需要包含校驗碼。
2. RS232標準
(1)簡介:
RS232介面是1970年由美國電子工業協會(EIA)聯合貝爾系統、調變解調器廠家及計算機終端生產廠家共同制定的用於序列通訊的標準。它的全名是“資料終端裝置(DTE)和資料通訊裝置(DCE)之間序列二進位制資料交換介面技術標準”。該標準規定採用一個25個腳的DB25聯結器,對聯結器的每個引腳的訊號內容加以規定,還對各種訊號的電平加以規定。隨著裝置的不斷改進,出現了代替
注:我們後面所用的都是RS232的DB9介面
(2)介面定義如下圖:
引腳1:DCD 載波檢測
引腳2:RXD 接收資料
引腳3:TXD 傳送資料
引腳4:DTR 資料終端準備好
引腳5:SG 訊號地
引腳6:DSR 資料準備好
引腳7:RTS 請求傳送
引腳8: CTS 清除傳送
引腳9: RI 振鈴提示
(3)在UART0串列埠程式設計中我們只用到了引腳2,引腳3,和引腳5.
(4)目前的串列埠線有兩中連線方法:
平行線:2接2,3接3(即發對發,接對接)
交叉線:2接3,3接2(即發對接,接對發)
各個外設所用的連線方法都不一樣。因此,除錯程式時,一定要注意你所用的是那中串列埠線。如果串列埠線選錯的話,它們之間是不通訊的。