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連接器,對連接器的每個引腳的信號內容加以規定,還對各種信號的電平加以規定。隨著設備的不斷改進,出現了代替DB25的DB9接口,現在都把RS232接口叫做DB9
注:我們后面所用的都是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(即發對接,接對發)
各個外設所用的連接方法都不一樣。因此,調試程序時,一定要注意你所用的是那中串口線。如果串口線選錯的話,它們之間是不通信的。
?
總結
以上是生活随笔為你收集整理的UART0串口编程(一):通信协议设计;RS232标准的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux编程下open()函数的用法
- 下一篇: UART0串口编程(三):中断方式的串口