《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 紅外通訊協議在嵌入式系統中的實現

紅外通訊協議在嵌入式系統中的實現

2008-08-21
作者:葉 暉

??? 摘?要: 從紅外通訊協議的特點、基本原理對紅外無線通信技術進行了分析,結合實際例程探討了紅外數據" title="紅外數據">紅外數據通信在嵌入式系統" title="嵌入式系統">嵌入式系統中的基本設計要點。
??? 關鍵詞: 紅外通訊協議? 嵌入式系統? 異步通信收發器? 狀態機

?

??? 紅外和藍牙協議是兩種較流行的短距離無線通信協議。但目前藍牙協議各大廠商尚未有一個統一的標準規范,加之硬件價格較為昂貴的缺點,因此市場上紅外通信" title="紅外通信">紅外通信在手機、筆記本電腦等小型移動設備中仍然應用廣泛,在嵌入式系統中的實現應用有著較高實際意義。
1 紅外協議背景
??? 紅外線是波長在750nm至1mm之間的電磁波,其頻率高于微波而低于可見光,是一種人的眼睛看不到的光線。目前無線電波和微波已被廣泛應用在長距離的無線通信中,但由于紅外線的波長較短,對障礙物的衍射能力差,所以更適合應用在需要短距離無線通信場合點對點的直線數據傳輸。為了使各種設備能夠通過一個紅外接口進行通信,紅外數據協會(Infrared Data Association,簡稱IRDA) 發布了一個關于紅外的統一的軟硬件規范,也就是紅外數據通訊標準。
2 紅外協議基本結構
??? 紅外數據通訊標準包括基本協議和特定應用領域的協議兩類。類似于TCP-IP協議,它是一個層式結構,其結構形成一個棧,如圖1所示。

?


??? 其中基本的協議有三個:①物理層協議(IrPHY),制定了紅外通信硬件設計上的目標和要求,包括紅外的光特性、數據編碼、各種波特率下幀的包裝格式等。為達到兼容,硬件平臺以及硬件接口設計必須符合紅外協議制定的規范。②連接建立協議(IrLAP)層制定了底層連接建立的過程規范, 描述了建立一個基本可靠連接的過程和要求。③ 連接管理協議(IrLMP)層制定了在單個IrLAP連接的基礎上復用多個服務和應用的規范。在IrLMP協議上層的協議都屬于特定應用領域的規范和協議。④流傳輸協議(TinyTP)在傳輸數據時進行流控制。制定把數據進行拆分、重組、重傳等的機制。⑤對象交換協議(IrOBEX)制定了文件和其他數據對象傳輸時的數據格式。⑥模擬串口層協議(IrCOMM)允許已存在的使用串口通信的應用象使用串口那樣使用紅外進行通信。⑦局域網訪問協議(IrLAN)允許通過紅外局域網絡喚醒筆記本電腦等移動設備,實現遠程遙控等功能。
??? 整個紅外協議棧比較龐大復雜,在嵌入式系統中,由于微處理器速度和存儲器容量等限制,不可能也沒必要實現整個的紅外協議棧。一個典型的例子就是TinyTP協議中數據的拆分和重組。它采用了信用片(credit card)機制,這極大地增加了代碼設計的復雜性,而實際在紅外通信中一般不會有太大數據量的傳輸,尤其在嵌入式系統中完全可以考慮將數據放入單個數據包進行傳輸,用超時和重發機制保證傳輸的可靠性。因此可以將協議棧簡化,根據實際需求,有選擇地實現自己需要的協議和功能即可。
3 紅外協議數據基本傳輸原理
??? 由于硬件接口限制,嵌入式系統中紅外通信的速率基本在9600bps~115.2kbps之間。這里是通過硬件電路板上的異步通信收發器(UART)進行紅外數據編碼和無線傳輸。在115.2kbps速率下紅外采用RZI的編碼調制方案,脈沖周期為3/16位周期。數據校驗采用CRC16。其基本思想是將要發送的數據按照CRC16算法(CRC算法可以參考相關資料)進行打包校驗,在接收時進行CRC解包并與常數0XF0B8比較,若匹配即數據校驗無誤。紅外數據傳輸以幀為基本單位。幀是一些特定域的組合,其中紅外協議底層字節包格式如圖2所示。

?


??? 各個域含義如下:STA為開始標志,即0x7E、ADDR為8位的地址域;DATA為數據域;FCS為16位的CRC校驗碼;STO標志幀結束,在接收兩個連續的幀時必須至少有3個以上的STO標志('01111110'B)為間隔。若連續收到7個以上的1后則標志該幀有錯誤,設備會放棄該幀。在紅外數據實際傳輸過程中,為了延時控制考慮,一般在數據幀頭添加多個STA域,通常采用連續11個0x7E達到延時目的。在接收時,當收到多個STA域時當作一個來處理,多余的STA域被忽略。紅外數據傳輸的狀態機流程如圖3所示。

?


??? 下面對圖2作幾點說明:(1)數據傳輸時首先進入Address Discovery過程,在此過程中發廣播幀,等待對方設備響應,收到響應幀后可以取得對方設備地址。(2)取得對方地址后,進入Connect過程,在此過程中將與對方設備協商傳輸參數,如波特率、數據包大小、輪轉時間片等,之后建立連接。(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位處理器,尋址能力達到了44M字節,并提供了低電壓檢測功能。由于2204集成了上述這些功能,非常適合省電、支持長電池壽命的手持移動設備嵌入式設計實現方案。在固件設計、軟件設計" title="軟件設計">軟件設計方面采用了匯編語言。65C02上的匯編采用存儲器映象方式,并廣泛使用了零頁尋址,因此使用起來十分方便、高效。整個設計實現可分為硬件設計和軟件設計兩部分。硬件設計包括電路設計和固件程序(Firmware)的編寫;軟件設計包括CRC數據編碼校驗、數據收發及主站(Primary)、輔站(Slave)狀態機流程實現等。
??? 在硬件設計方面根據對設備的需求和硬件板芯片性能,可以設計出相應的電路在仿真板上進行實驗。固件程序的編寫可采用分塊的方法,例如初始化(Initialize)模塊、中斷處理(Interrupt)模塊、時鐘(Timer)事件處理模塊等。初始化模塊可根據硬件板的指南說明(Specification)提供的各個寄存器值設置初始化參數;中斷處理模塊可按照中斷向量表提供的入口地址編寫,其基本要求短小精悍,運行的時鐘周期與微處理器頻率和設備需求的波特率緊密相關。時鐘事件處理可根據硬件板提供的基本時鐘設置不同的時鐘精度,以滿足不同的需求。在紅外傳輸實際設計中定時器主要用于三個方面:第一是sniff探查過程中主站發廣播幀后輔站超時未響應的處理;第二是超時重發控制;最后一個是數據傳輸過程中輪轉時間片的控制。其中第三個方面要求的精度比較高,紅外協議制定的標準是在25ms~85ms之間。因此有必要把超時處理放在中斷處理。在程序編寫時使用信號量和程序計數器進行時間控制。其基本思路是設置一個程序計數器進行累加計時,當各自事件時間到達時分別設置三個信號量來標志事件處理,當事件處理完畢后重置各自信號量,轉入重新計時。
??? 在軟件設計方面,要對發送的數據進行幀包裝(Frame Wrapper),添加CRC16校驗,用匯編實現CRC算法比C稍微復雜些。一個主要的技巧是將要進行校驗的數據地址和CRC數據表的索引地址置入一個零頁的內存地址中, 采用通用寄存器" title="通用寄存器">通用寄存器對其進行間接尋址。這樣就實現了C語言中的指針效果,可以比較方便地查詢CRC表。在數據收發應用中, 分為主站 (Primary station)和輔站(slave station) 兩種角色。主站角色負責發起,建立連接,進行時間片輪轉調度等。輔站主要負責應答,響應命令。在一定條件下主站輔站角色可以互換,主輔站均可收發數據。
??? 收發數據的中斷函數最重要也是底層的核心所在。在接收方首先會進行硬件初始化,設置UART接收初始化狀態并進行中斷允許標志設置(具體設置可以參考所選擇的電路板說明)等。當紅外數據到達后即會觸發一個UART中斷,系統處理完當前事件后便會根據中斷向量表提供的入口地址調用接收中斷處理程序接收數據。在接收過程中,UART會搜尋匹配開始位和結束標志。接收完畢后,返回系統調用程序。在實際應用中,當接收完數據后,即可按接收幀控制域判斷幀類型,并結合接收站所處的相應狀態機進行流程處理。下面是紅外接收數據的中斷程序源碼:
??? /***************************************
??? * UART Receiver Interrupt Service Routine
??? ***************************************/
??? ISR_URX:
????? ??pha
????? ??phx????; 壓棧,保存通用寄存器值
????? ??cld????; 清空十進制標志位
????? ??ldx?#00001100B?; 允許接收,并設置可以接收下一字節
????? ??stx???ldx?mBagLen
????? ??cpx?#IrDA_BAG_LEN??; 一個包的長度
????? ??bcs??err_over????; 溢出否
????? ??lda???sta?mReadBuff,x???; 寫數據
????? ??lda???sta?mIrdaByteFlag???; 保存狀態標志位
????? ??inc?mBagLen????; 計數器++
????? ??bra??exit
?????err_over:
????? ??smb0? ?exit:
????? ??plx??????; 出棧,恢復通用寄存器值
????? ??pla
????? ??rti
??? 該中斷處理程序在硬件收到一個字節時觸發。它先將通用寄存器值壓棧保存,接下來進行狀態寄存器的控制,并檢查一些狀態標志,然后進行數據的接收;將數據保存在一個緩存里,并進行溢出等狀態的檢測和控制。最后恢復通用寄存器的值,返回中斷調用函數。按照類似的原理可以編寫出紅外發送方程序。編寫數據收發中斷程序有一點要注意,程序代碼量和處理器主頻以及選擇的紅外波特速率是密切相關的。若不注意就很容易造成“丟中斷”的現象,這是應該避免的。還有一點要說明:UART是工作在半雙工模式下,在一些實時系統和時間精度要求較高的應用中是不能同時進行收發數據的。但由于其收發時間片較短(最長為500ms),在一些普通應用中可以模擬成同時收發。
??? 在程序編寫完后對其進行編譯/連接定位,用調試器以16進制的形式加載在主機開發系統中即可進行模擬調試。但是模擬調試不能百分之百地模擬硬件的全部特性。它主要用于調試軟件邏輯、狀態機流程。對于調試UART數據收發等實時性較強的硬件特征還需到目標系統上進行驗證。

參考文獻
1 Joe Tajnai. Infrared Data Association Serial Infrared Physical?Layer Specification [EB/OL]
.http://www.irda.org/standards/pubs/IrPHY_1p4.pdf, 2003-04
2 Timothy Williams. Infrared Data Association Serial Infrared?Link Access Protocol [EB/OL]. http://www.irda.org/standards/,2003-04
3 Andy Seaborne. Infrared Data Association Link Management?Protocol [EB/OL]. http://www.irda.org/standards/, 2003-04

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲欧美偷拍卡通变态| 亚洲精品自在在线观看| 欧美a级一区二区| 国产精品免费电影| 欧美日韩在线视频观看| 亚洲午夜视频| 亚洲欧美国产精品桃花| 亚洲综合视频1区| 米奇777超碰欧美日韩亚洲| 亚洲免费人成在线视频观看| 亚洲深爱激情| 亚洲一区亚洲| 亚洲美女性视频| 亚洲激情偷拍| 日韩亚洲国产欧美| 免费成人激情视频| 国内精品久久久久影院薰衣草| 在线综合亚洲欧美在线视频| 国产精品日韩欧美一区二区| 久久综合九色欧美综合狠狠| 欧美猛交免费看| 最新亚洲激情| 久久嫩草精品久久久精品| 影音先锋久久久| 午夜国产精品影院在线观看| 国产视频一区在线观看一区免费| 久久久国产一区二区三区| 亚洲欧美综合另类中字| 欧美午夜精品伦理| 国产噜噜噜噜噜久久久久久久久| 国产精品网红福利| 在线天堂一区av电影| 欧美日韩国产精品一区二区亚洲| 欧美在线啊v| 久久综合九色综合欧美就去吻| 国产亚洲欧美一区在线观看| 免费欧美高清视频| 久久精品成人一区二区三区| 亚洲国产一成人久久精品| 在线一区日本视频| 亚洲国产精品一区| av成人国产| 亚洲乱码国产乱码精品精天堂| 久久久久在线| 欧美一区二区精美| 久久综合九色欧美综合狠狠| 亚洲经典一区| 亚洲福利小视频| 久久精品视频免费观看| 亚洲国产一二三| 欧美日韩精品伦理作品在线免费观看| 久久精品国产第一区二区三区最新章节| 亚洲精品中文字幕有码专区| 欧美aa在线视频| 欧美人与性动交cc0o| 欧美香蕉视频| 精品电影在线观看| 欧美激情精品久久久久久变态| 国产麻豆精品久久一二三| 亚洲色图综合久久| 一区二区三区蜜桃网| 好看不卡的中文字幕| 亚洲国产婷婷香蕉久久久久久99| 欧美在线不卡视频| 一区二区三区高清不卡| 久热成人在线视频| 国产精品99久久久久久久vr| 欧美成人中文字幕| 午夜精品亚洲| 亚洲人屁股眼子交8| 亚洲第一页自拍| 国产有码一区二区| 欧美日韩激情小视频| 一本色道久久综合亚洲精品不| 欧美色图五月天| 欧美日韩一区二区视频在线| 久久久国产精品一区二区中文| 蜜桃伊人久久| 欧美日韩精品二区第二页| 国产精品黄视频| 久久资源在线| 欧美在线日韩在线| 欧美黄色aaaa| 国产网站欧美日韩免费精品在线观看| 免费久久99精品国产| 欧美成人精品在线播放| 午夜在线a亚洲v天堂网2018| 在线一区亚洲| 亚洲精品一二三区| 国产精品手机在线| 欧美日韩免费一区二区三区| 亚洲图片你懂的| 久久精品国产精品亚洲| 亚洲天堂av图片| 欧美日韩精品伦理作品在线免费观看| 亚洲国产美国国产综合一区二区| 国产日韩精品视频一区| 日韩一区二区久久| 免费久久99精品国产自在现线| 亚洲一区二区久久| 久久国产黑丝| 国产偷自视频区视频一区二区| 亚洲电影有码| 欧美中文字幕在线观看| 日韩亚洲国产精品| 欧美激情综合五月色丁香| 日韩一级视频免费观看在线| 亚洲一级在线观看| 欧美色精品在线视频| 欧美日韩精品高清| 在线一区观看| 韩日成人av| 快射av在线播放一区| 欧美日韩中文字幕在线视频| 亚洲欧洲精品天堂一级| 亚洲自拍偷拍视频| 国内成+人亚洲+欧美+综合在线| 国产一区99| 久久精品亚洲| 国产欧美日韩三区| 国产精品激情偷乱一区二区∴| 亚洲在线一区二区| 黄色成人在线免费| 久久不射2019中文字幕| 欧美日韩一本到| 国产性猛交xxxx免费看久久| 欧美精品午夜视频| 亚洲第一区在线观看| 91久久国产自产拍夜夜嗨| 欧美在线播放| 国产精品毛片在线| 欧美v亚洲v综合ⅴ国产v| 亚洲欧洲在线一区| 日韩亚洲综合在线| 一区二区三区在线不卡| 亚洲最新视频在线| 亚洲国产精品激情在线观看| 欧美日韩国产经典色站一区二区三区| 久久av一区二区三区亚洲| 亚洲日韩中文字幕在线播放| 亚洲精品一区二区三区不| 欧美三级中文字幕在线观看| 91久久久久久| 亚洲天堂黄色| 亚洲一区二区视频在线观看| 久久久亚洲欧洲日产国码αv| 99精品免费网| 欧美小视频在线| 欧美性猛交xxxx乱大交蜜桃| 狠狠色丁香婷婷综合久久片| 亚洲一区二区在线免费观看视频| 亚洲国内自拍| 亚洲一区二区在线看| 尤物yw午夜国产精品视频明星| 欧美午夜免费| 欧美视频手机在线| 国产拍揄自揄精品视频麻豆| 欧美三级日韩三级国产三级| 欧美在线免费视屏| 久久福利资源站| 亚洲免费视频中文字幕| 欧美成人精品在线播放| 国产日产亚洲精品系列| 欧美日韩国产欧美日美国产精品| 国产亚洲人成a一在线v站| 国产精品香蕉在线观看| 欧美精品一区二区三区久久久竹菊| 国产视频一区在线观看一区免费| 欧美视频在线观看免费网址| 伊大人香蕉综合8在线视| 国产亚洲精品久久久久动| 国产精品theporn88| 猫咪成人在线观看| 欧美日韩亚洲在线| 国产一区二区高清不卡| 国产精品视频成人| 一区二区日本视频| 91久久嫩草影院一区二区| 欧美欧美天天天天操| 国产精品久久久久9999高清| 欧美日韩综合视频| 欧美特黄a级高清免费大片a级| 91久久夜色精品国产九色| 国产欧美在线观看| 亚洲欧美日韩中文播放| 一区国产精品| 日韩小视频在线观看| 久久精品国产96久久久香蕉| 欧美日韩精品免费观看视一区二区| 亚洲美女福利视频网站| 亚洲综合丁香| 欧美精品在欧美一区二区少妇| 国产目拍亚洲精品99久久精品| 欧美日韩一区三区四区| 在线视频观看日韩| 欧美色综合天天久久综合精品| 久久成人免费日本黄色| 国产欧美在线看| 一本色道久久综合亚洲精品不卡| 国产精品yjizz| 亚洲午夜电影网| 国产精品亚洲欧美| 99视频日韩| 国产日韩精品电影| 亚洲国产另类 国产精品国产免费| 久久久精品午夜少妇| 亚洲影院在线观看| 国产区精品视频| 亚洲人成人99网站| 噜噜噜久久亚洲精品国产品小说| 国产伦精品一区二区三区| 欧美伦理在线观看| 欧美激情一区二区三区| 亚洲欧美日韩爽爽影院| 国产精自产拍久久久久久| 噜噜噜噜噜久久久久久91| 另类国产ts人妖高潮视频| 黄色国产精品| 久久这里只有精品视频首页| 欧美精品成人在线| 亚洲精品欧美激情| 欧美日韩一区国产| 欧美在线视频全部完| 欧美成人一区二区三区| 亚洲图片在线观看| 欧美精品一区二区三区四区| 欧美日韩精品在线| 亚洲日韩成人| 欧美日韩精品欧美日韩精品一| 国产精品日韩一区二区三区| 久久精品女人天堂| 国产欧美日韩另类一区| 亚洲国产精品成人综合色在线婷婷| 亚洲已满18点击进入久久| 欧美特黄一区| 亚洲伊人久久综合| 欧美国产日本在线| 日韩视频一区二区三区在线播放免费观看| 日韩午夜在线观看视频| 欧美国产精品v| 久久九九99视频| 亚洲丰满少妇videoshd| 久久久一本精品99久久精品66| 亚洲欧洲一区二区在线观看| 蜜臀99久久精品久久久久久软件| 韩国一区二区三区在线观看| 亚洲美女黄色片| 久久精品欧美日韩| 免费久久精品视频| 在线观看中文字幕不卡| 久久久久久午夜| 国产日韩欧美精品| 中国亚洲黄色| 黄色工厂这里只有精品| 中文欧美在线视频| 亚洲精品资源美女情侣酒店| 今天的高清视频免费播放成人| 午夜精品久久99蜜桃的功能介绍| 欧美日在线观看| 亚洲午夜一二三区视频| 国产永久精品大片wwwapp| 欧美猛交免费看| 久久久精品999| 在线性视频日韩欧美| 亚久久调教视频| 久久精品日韩一区二区三区| 欧美日韩亚洲一区二区三区四区| 亚洲电影免费在线| 国产一区二区三区高清在线观看| 黄色精品一区| 久久久午夜视频| 好男人免费精品视频| 久久久亚洲精品一区二区三区| 久久精品三级| 国产精品美女主播| 欧美日韩八区| 日韩午夜免费视频| 欧美视频免费看| 中日韩男男gay无套| 亚洲精选大片| 久久免费视频一区| 欧美在线视频免费观看| 欧美成人一区二区三区片免费| 麻豆视频一区二区| 国产精品欧美激情| 欧美一级一区| 噜噜噜在线观看免费视频日韩| 欧美成人亚洲| 性欧美暴力猛交另类hd| 亚洲午夜久久久久久尤物| 久久国产天堂福利天堂| 久久久久久日产精品| 欧美日韩一区二区三区四区五区| 欧美日本视频在线| 久久精品成人一区二区三区蜜臀| 欧美日韩国产亚洲一区| 国产美女精品在线| 99精品视频免费观看视频| 国产一区二区三区直播精品电影| 欧美精品七区| 国产综合亚洲精品一区二| 国产一区二区三区无遮挡| 国产精品成人一区二区三区吃奶| 欧美视频中文在线看| 欧美在线你懂的| 亚洲尤物视频网| 欧美一区二区三区四区在线| 狼狼综合久久久久综合网| 欧美a级片一区| 国产乱子伦一区二区三区国色天香| 亚洲性线免费观看视频成熟| 亚洲乱码国产乱码精品精可以看| 国产精品mv在线观看| 欧美性事免费在线观看| 免费成人在线视频网站| 欧美日韩成人在线视频| 国产精品久久久久三级| 欧美在线免费视频| 国产揄拍国内精品对白| 亚洲欧美日韩一区二区在线| 久久伊人亚洲| 欧美日韩国产一区二区| 欧美刺激午夜性久久久久久久| 欧美日韩综合久久| 国产精品视频久久久| 亚洲欧美日韩成人高清在线一区| 欧美一区二区三区免费看| 欧美xart系列在线观看|