- 相關推薦
紅外通訊協議在嵌入式系統中的實現
摘要:從紅外通訊協議的特點、基本原理對紅外無線通信技術進行了分析,結合實際例程探討了紅外數據通信在嵌入式系統中的基本設計要點。紅外和藍牙協議是兩種較流行的短距離無線通信協議。但目前藍牙協議各大廠商尚未有一個統一的標準規范,加之硬件價格較為昂貴的缺點,因此市場上紅外通信在手機、筆記本電腦等小型移動設備中仍然應用廣泛,在嵌入式系統中的實際應用有著較高實際意義。
1 紅外協議背景
紅外線是波長在750nm至1mm之間的電磁波,其頻率高于微波而低于可見光,是一種人的眼眼看不到的光線。目前無線電波和微波已被廣泛應用在長距離的無線通信中,但由于紅外線的波長較短,對障礙物的衍射能力差,所以更適合應用在需要短距離無線通信場合點對點的直接線數據傳輸。為了使各種設備能夠通過一個紅外接口進行通信,紅外數據協議(Infrared Data Association,簡稱IRDA)發布了一個關于紅外的統一的軟硬件規范,也就是紅外數據通訊標準。
2 紅外協議基本結構
紅外數據通訊標準包括基本協議和特定應用領域的協議兩類。類似于TCP-IP協議,它是一個層式結構,其結構形成一個棧,如圖1所示。
其中基本的協議有三個:①物理層協議(IrPHY),制定了紅外通信硬件設計上的目標和要求,包括紅外的光特性、數據編碼、各種波特率下幀的包括格式等。為達到兼容,硬件平臺以及硬件接口設計必須符合紅外協議制定的規范。②連接建立協議(IrLAP)層制定了底層連接建立的過程規范,描述了建立一個基本可靠連接的過程和要求。③連接管理協議(IrLMP)層制定了在單位個IrLAP連接的基礎上復用多個服務和應用的規范。在IrLMP協議上層的協議都屬于特定應用領域的規范和協議。④流傳輸協議(TingTP)在傳輸數據時進行流控制。制定把數據進行拆分、重組、重傳等的機制。⑤對象交換協議(IrOBEX)制定了文件和其他數據對象傳輸時的數據格式。⑥模擬串口層協議(IrCOMM)允許已存在的使用串口通信的應用象使用串口那樣使用紅外進行通信。⑦局域網訪問協議(IrLAN)允許通過紅外局域網絡喚醒筆記本電腦等移動設備,實際遠程搖控等功能。
整個紅外協議棧比較龐大復雜,在嵌入式系統中,由于微處理器速度和存儲器容量等限制,不可能也沒必要實現整個的紅外協議棧。一個典型的例子就是TinyTP協議中數據的拆分和重組。它采用了信用片(creditcard)機制,這極大地增加了代碼設計的復雜性,而實際在紅外通信中一般不會有太大數據量的傳輸,尤其在嵌入式系統中完全可以考慮將數據放入單個數據包進行傳輸,用超時和重發機制保證傳輸的可靠性。因此可以將協議棧簡化,根據實際需求,有選擇地實現自己需要的協議和功能即可。
3 紅外協議數據基本傳輸原理
由于硬件接口限制,嵌入式系統中紅外通信的速率基本在9600bps~115.2kbps之間。這里是通過硬件電路板上的異步通信收發器(UART)進行紅外數據編碼和無線傳輸。在115.2kbps速率下紅外采用RZI的編碼調制方案,脈沖周期為3/16位周期。數據校驗采用CRC16。其基本思想是將要發送的數據按照CRC16算法(CRC算法可以參考相關資料)進行打包校驗,在接收時進行CRC解包并與常數OXF0B8比較,若匹配即數據校驗無誤。紅外數據傳輸以幀為基本單位。幀是一些特定域的組合,其中紅外協議底層字節包格式如圖2所示。
各個域含義如下:STA為開始標志,即0x7E、ADDR為8位的地址域;DATA為數據域;FSC為16們的CRC校驗碼;STO標志幀結束,在接收兩個連續的幀時必須至少有3個以上的1后則標志該幀有錯誤,設備會放棄該幀。在紅外數據實際傳輸過程中,為了延時控制考慮,一般在數據幀頭添加多個STA域,通常采用連續11個0x7E達到延時目的。在接收時,當收到多個STA域時當作一個來處理,多余的STA域被忽略。紅外數據傳輸的狀態機流程如圖3所示。
下面對圖2作幾點說明:(1)數據傳輸時首先進行Address Discovery過程,在此過程中發廣播幀,等待對方設備響應,收到響應幀后可以取得對方設備地址。(2)取得對方地址后,進行Connct過程,在此過程中將與對方設備協商傳輸參數,如波特率、數據包大小、輪轉時間片等,之后建立連接。(3)建立完連接即進入Information Transfer過程,進行數據校驗,傳輸。其中按照一定算法進行時間片數據幀收發控制。(4)數據傳輸完畢后進入Disconnect過程,斷開連接。(5)在Address Discovery過程中,有可能發現對方設備地址與本機設備地址有沖突,此時進入Address Conflict Resolution過程,解決完設備沖突后再返回。
圖3是一個標準的紅外數據傳輸狀態機流程,但在一些嵌入式設計方案中,出于省電等目的,可以不進入Address Discovery過程,也就是簡化掉Address Discovery過程而轉入Sniff過程。在探查一定時間后,若未收到對方設備響應幀,自動進入休眠狀態,若收到對方設備響應幀,則進入正常的連接過程。同時,在連接過程與對方協商傳輸參數的過程中有一項窗口大。╳indows size)參數,它是指定接收方可緩沖多少個幀后再進行接收確認,其數值為1~7。在嵌入式系統存儲空間有限的情況下,可以采用默認值1進行數據的簡單確認,也就是接收到一個數據幀后立即進行確認。這樣既節省了資源又使代碼量更小,運行速度更快。
4 嵌入式系統中紅外協議實現設計
筆者采用Sitronix公司的ST2204電路板為硬件平臺,處理芯片內核為65C02。ST2204電路板使用了集成的8位處理器,尋址能力達到
【紅外通訊協議在嵌入式系統中的實現】相關文章:
嵌入式MPEG—4解碼系統的設計與實現03-19
基于Web的嵌入式數控系統實現03-07
面向網絡測試的嵌入式系統設計與實現03-07
嵌入式現場智能顯示系統的設計與實現03-07
嵌入式系統中的CACHE問題03-19
嵌入式系統中的Flash存儲管理03-18
UML 在嵌入式系統設計中的應用03-18