串口編程之前奏篇
------------------------------------------------------------------------
Author :tiger-john
WebSite :blog.csdn.net/tigerjb Email :jibo.tiger@gmail.com
Tiger聲明:本人鄙視直接復制本人文章而不加出處的個人或團體,但不排斥別人轉(zhuǎn)載tiger-john的文章,只是請您注明出處并和本人聯(lián)系或留言給我。3Q
--------------------------------------------------------------------------
眾所周知嵌入式系統(tǒng)之間采用通信方式交換數(shù)據(jù),由于各類CPU均集成了UART部件。所以串行通信是一種最基本的通信手段。因此,我們也對它進行深入的了解
本文章針對串口編程時如何設(shè)計串口通信協(xié)議,以及對RS232接口進行了說明。為下一步進行串口編程進行熱身
1. 通信協(xié)議設(shè)計
在進行通信時,每次需要傳送的信息一般超過1字節(jié)。為此,通信雙方必須約定通信數(shù)據(jù)的排列格式,即通信協(xié)議。通常把一次通信過程的全部內(nèi)容稱為一個“通信幀”。通信協(xié)議設(shè)計就是幀結(jié)構(gòu)設(shè)計。
在一幀內(nèi)容中,通常包括以下部分。
1> 起始碼:由一個或若干個包含特定內(nèi)容的字節(jié),表示一個通信幀的開始。起始碼的內(nèi)容必須與通信數(shù)據(jù)內(nèi)容有明顯區(qū)別(不能在通信數(shù)據(jù)里出現(xiàn)與起始碼相同的內(nèi)容)
注:
當通信幀的總長度比較短,信道質(zhì)量比較高時,為了提高效率,可以不設(shè)置起始碼。
2> 地址碼:在主從結(jié)構(gòu)的多機組網(wǎng)通信系統(tǒng)中,用來指明分機號。
l 當分機總數(shù)在255臺之內(nèi)時,地址碼為1字節(jié)。可以定義一個特殊的地址碼作為廣播地址,代表所有的分機。
l 在多主多從(無主從)結(jié)構(gòu)的多機組網(wǎng)通信系統(tǒng)中,地址碼包含收發(fā)雙方的地址。
注:
如果是兩臺設(shè)備之間進行點對點的通信,幀結(jié)構(gòu)中就步需要包含地址碼。
3> 長度碼:在數(shù)據(jù)長度不固定的通信場合(變長幀),表示本幀數(shù)據(jù)內(nèi)容的字節(jié)數(shù)。當長度肯定不超過255字節(jié)時,長度碼用1字節(jié)表示。
注:
如果每次通信數(shù)據(jù)內(nèi)容的長度為雙方約定的固定值(定長幀),幀結(jié)構(gòu)中就不需要包含長度碼。
4> 數(shù)據(jù)段:通信的實質(zhì)內(nèi)容。
5> 校驗碼:由于通信信道存在干擾,為了判斷接收的內(nèi)容是否受到干擾,需要加入效驗碼。
效驗碼算法可以采用
l 簡單的異或校驗碼。
l 也可以像HEX文件那樣采用算術(shù)加法校驗。
l 采用功能極強的CRC校驗。
注:當通信環(huán)境非常好時(如室內(nèi)設(shè)備之間的通信),幀結(jié)構(gòu)中就不需要包含校驗碼。
2. RS232標準
1> 簡介:
l RS232接口是1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定的用于串行通訊的標準。它的全名是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備(DCE)之間串行二進制數(shù)據(jù)交換接口技術(shù)標準”。
l 該標準規(guī)定采用一個25個腳的DB25連接器,對連接器的每個引腳的信號內(nèi)容加以規(guī)定,還對各種信號的電平加以規(guī)定。隨著設(shè)備的不斷改進,出現(xiàn)了代替DB25的DB9接口,現(xiàn)在都把RS232接口叫做DB9
注:我們后面所用的都是RS232的DB9接口
2> 接口定義
先看圖:
(圖片來自百度)
引腳1:DCD 載波檢測
引腳2:RXD 接收數(shù)據(jù)
引腳3:TXD 發(fā)送數(shù)據(jù)
引腳4:DTR 數(shù)據(jù)終端準備好
引腳5:SG 信號地
引腳6:DSR 數(shù)據(jù)準備好
引腳7:RTS 請求發(fā)送
引腳8: CTS 清除發(fā)送
引腳9: RI 振鈴提示
Tiger-John說明:
1在UART0串口編程中我們只用到了引腳2,引腳3,和引腳5.
2. 目前的串口線有兩中連接方法:
l 平行線:2接2,3接3(即發(fā)對發(fā),接對接)
l 交叉線:2接3,3接2(即發(fā)對接,接對發(fā))
各個外設(shè)所用的連接方法都不一樣。因此,調(diào)試程序時,一定要注意你所用的是那中串口線。如果串口線選錯的話,它們之間是不通信的
UART0串口編程目錄: 串口編程之前奏篇
UART0串口編程系列(一)
UART0串口編程系列(二)
UART0串口編程系列(三)
UART0串口編程系列(四)
UART0串口編程系列(五)
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/tigerjb/archive/2011/01/19/6153810.aspx
|
|
來自: orion360doc > 《串口》