紅外通訊協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)_第1頁(yè)
紅外通訊協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)_第2頁(yè)
紅外通訊協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)_第3頁(yè)
紅外通訊協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、紅外通訊協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)發(fā)布時(shí)間:2009-3-31 11:42:46   【閱讀次數(shù):13】     紅外和藍(lán)牙協(xié)議是兩種較流行的短距離無(wú)線(xiàn)通信協(xié)議。但目前藍(lán)牙協(xié)議各大廠(chǎng)商尚未有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)規(guī)范,加之硬件價(jià)格較為昂貴的缺點(diǎn),因此市場(chǎng)上紅外通信在手機(jī)、筆記本電腦等小型移動(dòng)設(shè)備中仍然應(yīng)用廣泛,在嵌入式系統(tǒng)中的實(shí)際應(yīng)用有著較高實(shí)際意義。 1 紅外協(xié)議背景紅外線(xiàn)是波長(zhǎng)在750nm至1mm之間的電磁波,其頻率高于微波而低于可見(jiàn)光,是一種人的眼眼看不到的光線(xiàn)。目前無(wú)線(xiàn)電波和微波已被廣泛應(yīng)用在長(zhǎng)距離的無(wú)線(xiàn)通信中,但由

2、于紅外線(xiàn)的波長(zhǎng)較短,對(duì)障礙物的衍射能力差,所以更適合應(yīng)用在需要短距離無(wú)線(xiàn)通信場(chǎng)合點(diǎn)對(duì)點(diǎn)的直接線(xiàn)數(shù)據(jù)傳輸。為了使各種設(shè)備能夠通過(guò)一個(gè)紅外接口進(jìn)行通信,紅外數(shù)據(jù)協(xié)議(Infrared Data Association,簡(jiǎn)稱(chēng)IRDA)發(fā)布了一個(gè)關(guān)于紅外的統(tǒng)一的軟硬件規(guī)范,也就是紅外數(shù)據(jù)通訊標(biāo)準(zhǔn)。2 紅外協(xié)議基本結(jié)構(gòu)紅外數(shù)據(jù)通訊標(biāo)準(zhǔn)包括基本協(xié)議和特定應(yīng)用領(lǐng)域的協(xié)議兩類(lèi)。類(lèi)似于TCP-IP協(xié)議,它是一個(gè)層式結(jié)構(gòu),其結(jié)構(gòu)形成一個(gè)棧,如圖1所示。其中基本的協(xié)議有三個(gè):物理層協(xié)議(IrPHY),制定了紅外通信硬件設(shè)計(jì)上的目標(biāo)和要求,包括紅外的光特性、數(shù)據(jù)編碼、各種波特率下幀的包括格式等。為達(dá)到兼容,硬件平臺(tái)以

3、及硬件接口設(shè)計(jì)必須符合紅外協(xié)議制定的規(guī)范。連接建立協(xié)議(IrLAP)層制定了底層連接建立的過(guò)程規(guī)范,描述了建立一個(gè)基本可靠連接的過(guò)程和要求。連接管理協(xié)議(IrLMP)層制定了在單位個(gè)IrLAP連接的基礎(chǔ)上復(fù)用多個(gè)服務(wù)和應(yīng)用的規(guī)范。在IrLMP協(xié)議上層的協(xié)議都屬于特定應(yīng)用領(lǐng)域的規(guī)范和協(xié)議。流傳輸協(xié)議(TingTP)在傳輸數(shù)據(jù)時(shí)進(jìn)行流控制。制定把數(shù)據(jù)進(jìn)行拆分、重組、重傳等的機(jī)制。對(duì)象交換協(xié)議(IrOBEX)制定了文件和其他數(shù)據(jù)對(duì)象傳輸時(shí)的數(shù)據(jù)格式。模擬串口層協(xié)議(IrCOMM)允許已存在的使用串口通信的應(yīng)用象使用串口那樣使用紅外進(jìn)行通信。局域網(wǎng)訪(fǎng)問(wèn)協(xié)議(IrLAN)允許通過(guò)紅外局域網(wǎng)絡(luò)喚醒筆記本電

4、腦等移動(dòng)設(shè)備,實(shí)際遠(yuǎn)程搖控等功能。     整個(gè)紅外協(xié)議棧比較龐大復(fù)雜,在嵌入式系統(tǒng)中,由于微處理器速度和存儲(chǔ)器容量等限制,不可能也沒(méi)必要實(shí)現(xiàn)整個(gè)的紅外協(xié)議棧。一個(gè)典型的例子就是TinyTP協(xié)議中數(shù)據(jù)的拆分和重組。它采用了信用片(creditcard)機(jī)制,這極大地增加了代碼設(shè)計(jì)的復(fù)雜性,而實(shí)際在紅外通信中一般不會(huì)有太大數(shù)據(jù)量的傳輸,尤其在嵌入式系統(tǒng)中完全可以考慮將數(shù)據(jù)放入單個(gè)數(shù)據(jù)包進(jìn)行傳輸,用超時(shí)和重發(fā)機(jī)制保證傳輸?shù)目煽啃?。因此可以將協(xié)議棧簡(jiǎn)化,根據(jù)實(shí)際需求,有選擇地實(shí)現(xiàn)自己需要的協(xié)議和功能即可。 3 紅外協(xié)議數(shù)據(jù)基本傳輸原理由于硬件接口限制,嵌入式系

5、統(tǒng)中紅外通信的速率基本在9600bps115.2kbps之間。這里是通過(guò)硬件電路板上的異步通信收發(fā)器(UART)進(jìn)行紅外數(shù)據(jù)編碼和無(wú)線(xiàn)傳輸。在115.2kbps速率下紅外采用RZI的編碼調(diào)制方案,脈沖周期為3/16位周期。數(shù)據(jù)校驗(yàn)采用CRC16。其基本思想是將要發(fā)送的數(shù)據(jù)按照CRC16算法(CRC算法可以參考相關(guān)資料)進(jìn)行打包校驗(yàn),在接收時(shí)進(jìn)行CRC解包并與常數(shù)OXF0B8比較,若匹配即數(shù)據(jù)校驗(yàn)無(wú)誤。紅外數(shù)據(jù)傳輸以幀為基本單位。幀是一些特定域的組合,其中紅外協(xié)議底層字節(jié)包格式如圖2所示。各個(gè)域含義如下:STA為開(kāi)始標(biāo)志,即0x7E、ADDR為8位的地址域;DATA為數(shù)據(jù)域;FSC為16們的CR

6、C校驗(yàn)碼;STO標(biāo)志幀結(jié)束,在接收兩個(gè)連續(xù)的幀時(shí)必須至少有3個(gè)以上的1后則標(biāo)志該幀有錯(cuò)誤,設(shè)備會(huì)放棄該幀。在紅外數(shù)據(jù)實(shí)際傳輸過(guò)程中,為了延時(shí)控制考慮,一般在數(shù)據(jù)幀頭添加多個(gè)STA域,通常采用連續(xù)11個(gè)0x7E達(dá)到延時(shí)目的。在接收時(shí),當(dāng)收到多個(gè)STA域時(shí)當(dāng)作一個(gè)來(lái)處理,多余的STA域被忽略。紅外數(shù)據(jù)傳輸?shù)臓顟B(tài)機(jī)流程如圖3所示。下面對(duì)圖2作幾點(diǎn)說(shuō)明:(1)數(shù)據(jù)傳輸時(shí)首先進(jìn)行Address Discovery過(guò)程,在此過(guò)程中發(fā)廣播幀,等待對(duì)方設(shè)備響應(yīng),收到響應(yīng)幀后可以取得對(duì)方設(shè)備地址。(2)取得對(duì)方地址后,進(jìn)行Connct過(guò)程,在此過(guò)程中將與對(duì)方設(shè)備協(xié)商傳輸參數(shù),如波特率、數(shù)據(jù)包大小、輪轉(zhuǎn)時(shí)間片等,

7、之后建立連接。(3)建立完連接即進(jìn)入Information Transfer過(guò)程,進(jìn)行數(shù)據(jù)校驗(yàn),傳輸。其中按照一定算法進(jìn)行時(shí)間片數(shù)據(jù)幀收發(fā)控制。(4)數(shù)據(jù)傳輸完畢后進(jìn)入Disconnect過(guò)程,斷開(kāi)連接。(5)在Address Discovery過(guò)程中,有可能發(fā)現(xiàn)對(duì)方設(shè)備地址與本機(jī)設(shè)備地址有沖突,此時(shí)進(jìn)入Address Conflict Resolution過(guò)程,解決完設(shè)備沖突后再返回。圖3是一個(gè)標(biāo)準(zhǔn)的紅外數(shù)據(jù)傳輸狀態(tài)機(jī)流程,但在一些嵌入式設(shè)計(jì)方案中,出于省電等目的,可以不進(jìn)入Address Discovery過(guò)程,也就是簡(jiǎn)化掉Address Discovery過(guò)程而轉(zhuǎn)入Sniff過(guò)程。在探查

8、一定時(shí)間后,若未收到對(duì)方設(shè)備響應(yīng)幀,自動(dòng)進(jìn)入休眠狀態(tài),若收到對(duì)方設(shè)備響應(yīng)幀,則進(jìn)入正常的連接過(guò)程。同時(shí),在連接過(guò)程與對(duì)方協(xié)商傳輸參數(shù)的過(guò)程中有一項(xiàng)窗口大小(windows size)參數(shù),它是指定接收方可緩沖多少個(gè)幀后再進(jìn)行接收確認(rèn),其數(shù)值為17。在嵌入式系統(tǒng)存儲(chǔ)空間有限的情況下,可以采用默認(rèn)值1進(jìn)行數(shù)據(jù)的簡(jiǎn)單確認(rèn),也就是接收到一個(gè)數(shù)據(jù)幀后立即進(jìn)行確認(rèn)。這樣既節(jié)省了資源又使代碼量更小,運(yùn)行速度更快。4 嵌入式系統(tǒng)中紅外協(xié)議實(shí)現(xiàn)設(shè)計(jì)筆者采用Sitronix公司的ST2204電路板為硬件平臺(tái),處理芯片內(nèi)核為65C02。ST2204電路板使用了集成的8位處理器,尋址能力達(dá)到了44M字節(jié),并提供了低電

9、壓檢測(cè)功能。由于2204集成了上述這些功能,非常適合省電、支持長(zhǎng)電池壽命的手持移動(dòng)設(shè)備嵌入式設(shè)計(jì)實(shí)現(xiàn)方案。在固件設(shè)計(jì)、軟件設(shè)計(jì)方面采用了匯編語(yǔ)言。65C02上的匯編采用存儲(chǔ)器映象方式,并廣泛使用了零頁(yè)尋址,因此使用起來(lái)十分方便、高效。整個(gè)設(shè)計(jì)實(shí)現(xiàn)可分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。硬件設(shè)計(jì)包括電路設(shè)計(jì)和固件程序(Firmware)的編寫(xiě);軟件設(shè)計(jì)包括CRC數(shù)據(jù)編碼校驗(yàn)、數(shù)據(jù)收發(fā)及主站(Primary)、輔站(Slave)狀態(tài)要流程實(shí)現(xiàn)等。在硬件設(shè)計(jì)方面根據(jù)對(duì)設(shè)備的需求和硬件板芯片性能,可以設(shè)計(jì)出相應(yīng)的電路在仿真板上進(jìn)行實(shí)驗(yàn)。固件程序和編寫(xiě)可采用分塊的方法,例如初始化(Initilize)模塊、中斷

10、處理(Interrupt)模塊、時(shí)鐘(Timer)事件處理模塊等。初始化模塊可根據(jù)硬件板的指南說(shuō)明(Specification)提供的各個(gè)寄存器值設(shè)備初始化參數(shù);中斷處理模塊可按照中斷向量表提供的入口地址編寫(xiě),其基本要求短小精悍,運(yùn)行的時(shí)鐘周期與微處理器頻率和設(shè)備需求的波特率緊密相關(guān)。時(shí)鐘事情處理可根據(jù)硬件板提供的基本時(shí)鐘設(shè)備不同的時(shí)鐘精度,以滿(mǎn)足不同的需求。在紅外傳輸實(shí)際設(shè)計(jì)中定時(shí)器主要用于三個(gè)方向:第一是sniff探查過(guò)程中主站發(fā)廣播幀后輔站超時(shí)未響應(yīng)的處理;第二是超時(shí)重發(fā)控制;最后一個(gè)是數(shù)據(jù)傳輸過(guò)程中輪轉(zhuǎn)時(shí)間片的控制。其中第三個(gè)方面要求的精度比較高,紅外協(xié)議制定的標(biāo)準(zhǔn)是在25ms85ms

11、之間。因此有必要把超時(shí)處理放在中斷處理。在程序編寫(xiě)時(shí)使用信號(hào)量和程序計(jì)數(shù)器進(jìn)行時(shí)間控制。其基本思路得設(shè)備一個(gè)程序計(jì)數(shù)器進(jìn)行累加計(jì)時(shí),當(dāng)各自事情時(shí)間到達(dá)時(shí)分別設(shè)置三個(gè)信號(hào)量來(lái)標(biāo)志事件處理,當(dāng)事件處理完畢后重置各自信號(hào)量,轉(zhuǎn)入重新計(jì)時(shí)。在軟件設(shè)計(jì)方面,要對(duì)發(fā)送的數(shù)據(jù)進(jìn)行幀包裝(Frame Wrapper),添加CRC16校驗(yàn),用匯編實(shí)現(xiàn)CRC算法比C稍微復(fù)雜些。一個(gè)主要的技巧是將要進(jìn)行校驗(yàn)的數(shù)據(jù)地址和CRC數(shù)據(jù)表的索引地址置入一個(gè)零頁(yè)的內(nèi)存地址中,采用通用寄存器對(duì)其進(jìn)行間接尋址。這樣就實(shí)現(xiàn)了C語(yǔ)言中的指針效果,可以比較方便地查詢(xún)CRC表。在數(shù)據(jù)收發(fā)應(yīng)用中,分為主站(Primary station)

12、和輔站(slave station)兩種角度。主站角度負(fù)責(zé)發(fā)起,建立連接,進(jìn)行時(shí)間片輪轉(zhuǎn)調(diào)度等。輔站主要負(fù)責(zé)應(yīng)答,響應(yīng)命令。在一定條件下主站輔站角度可以互換,主輔站均可收發(fā)數(shù)據(jù)。 收發(fā)數(shù)據(jù)的中斷函數(shù)最重要也是底層的核心所在。在接收方首先公進(jìn)行硬件初始化,設(shè)置UART接收初始化狀態(tài)并進(jìn)行中斷允許標(biāo)志設(shè)置(具體設(shè)置可以參考所選擇的電路板說(shuō)明)等。當(dāng)紅外數(shù)據(jù)到達(dá)后即會(huì)觸發(fā)一個(gè)UART中斷,系統(tǒng)處理完當(dāng)前事件后便會(huì)根據(jù)中斷向量表提供的入口地址調(diào)用接收中斷處理接收數(shù)據(jù)。在接收過(guò)程中,UART會(huì)搜索匹配開(kāi)始位和結(jié)束標(biāo)志。接收完畢后,返回系統(tǒng)調(diào)用程序。在實(shí)際應(yīng)用中,當(dāng)接收完數(shù)據(jù)后,即可按裝收幀控制域判斷幀類(lèi)

13、型,并結(jié)合接收站所處的相應(yīng)狀態(tài)機(jī)進(jìn)行流程處理。下面是紅外接收數(shù)據(jù)的中斷程序源碼:/* UART Receiver Interrupt Service Routine*/ISR_URX:phaphx ;壓棧,保存通用寄存器值cld ;清空十進(jìn)制標(biāo)志位ldx #00001100B ;允許接收,并設(shè)置可以接收下一字節(jié)stx <USTRldx mBagLencpx #IrDAb_BAG_LEN ;一個(gè)包的長(zhǎng)度bcs ferr_over ;溢出否lda <UDATAsta mReadBuff,x ;寫(xiě)數(shù)據(jù)lda <USTRsta mIrdaByteFlag ;保存狀態(tài)標(biāo)志位inc mBagLen ;計(jì)數(shù)器+bra ?exit?err_over;smb0 <mzIrdaBagFlag ;溢出標(biāo)志位?exit;plx ;出棧,恢復(fù)通用寄存器值plarti該中斷處理程序在硬件收到一個(gè)字節(jié)時(shí)觸發(fā)。它先將通用寄存器值壓棧保存,接下來(lái)進(jìn)行狀態(tài)寄存器的控制,并檢查一些狀態(tài)標(biāo)志,然后進(jìn)行數(shù)據(jù)的接收;將數(shù)據(jù)保存在一個(gè)緩存里,并進(jìn)行溢出等狀態(tài)的檢測(cè)和控制。最后恢復(fù)通用寄存器的值,返回中斷調(diào)節(jié)函數(shù)。按照類(lèi)似的原理可以編寫(xiě)出紅外發(fā)送方程序。編寫(xiě)數(shù)據(jù)收發(fā)中斷程序有一點(diǎn)要注意,程序代碼量和處理器主頻以及選擇的紅外波特速率是密切相關(guān)的。若不注意就很容易造成“丟中斷”的現(xiàn)象,這是應(yīng)該避免的。還有一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論