串口編程以前奏篇算法
------------------------------------------------------------------------編程
Author :tiger-john
WebSite :blog.csdn.net/tigerjbapp
Email :jibo.tiger@gmail.comspa
Update-Time : 2011年1月30日星期日.net
Tiger聲明:本人鄙視直接複製本人文章而不加出處的我的或團體,但不排斥別人轉載tiger-john的文章,只是請您註明出處並和本人聯繫或留言給我。3Q設計
--------------------------------------------------------------------------調試
衆所周知嵌入式系統之間採用通訊方式交換數據,因爲各種CPU均集成了UART部件。因此串行通訊是一種最基本的通訊手段。所以,咱們也對它進行深刻的瞭解orm
本文章針對串口編程時如何設計串口通訊協議,以及對RS232接口進行了說明。爲下一步進行串口編程進行熱身htm
1. 通訊協議設計blog
在進行通訊時,每次須要傳送的信息通常超過1字節。爲此,通訊雙方必須約定通訊數據的排列格式,即通訊協議。一般把一次通訊過程的所有內容稱爲一個「通訊幀」。通訊協議設計就是幀結構設計。
在一幀內容中,一般包括如下部分。
1> 起始碼:由一個或若干個包含特定內容的字節,表示一個通訊幀的開始。起始碼的內容必須與通訊數據內容有明顯區別(不能在通訊數據裏出現與起始碼相同的內容)
注:
當通訊幀的總長度比較短,信道質量比較高時,爲了提升效率,能夠不設置起始碼。
2> 地址碼:在主從結構的多機組網通訊系統中,用來指明分機號。
l 當分機總數在255臺以內時,地址碼爲1字節。能夠定義一個特殊的地址碼做爲廣播地址,表明全部的分機。
l 在多主多從(無主從)結構的多機組網通訊系統中,地址碼包含收發雙方的地址。
注:
若是是兩臺設備之間進行點對點的通訊,幀結構中就步須要包含地址碼。
3> 長度碼:在數據長度不固定的通訊場合(變長幀),表示本幀數據內容的字節數。當長度確定不超過255字節時,長度碼用1字節表示。
注:
若是每次通訊數據內容的長度爲雙方約定的固定值(定長幀),幀結構中就不須要包含長度碼。
4> 數據段:通訊的實質內容。
5> 校驗碼:因爲通訊信道存在干擾,爲了判斷接收的內容是否受到干擾,須要加入效驗碼。
效驗碼算法能夠採用
l 簡單的異或校驗碼。
l 也能夠像HEX文件那樣採用算術加法校驗。
l 採用功能極強的CRC校驗。
注:當通訊環境很是好時(如室內設備之間的通訊),幀結構中就不須要包含校驗碼。
2. RS232標準
1> 簡介:
l RS232接口是1970年由美國電子工業協會(EIA)聯合貝爾系統、調制解調器廠家及計算機終端生產廠家共同制定的用於串行通信的標準。它的全名是「數據終端設備(DTE)和數據通信設備(DCE)之間串行二進制數據交換接口技術標準」。
l 該標準規定採用一個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 振鈴提示
Tiger-John說明:
1在UART0串口編程中咱們只用到了引腳2,引腳3,和引腳5.
2. 目前的串口線有兩中鏈接方法:
l 平行線:2接2,3接3(即發對發,接對接)
l 交叉線:2接3,3接2(即發對接,接對發)
各個外設所用的鏈接方法都不同。所以,調試程序時,必定要注意你所用的是那中串口線。若是串口線選錯的話,它們之間是不通訊的