999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式系統(tǒng)的紅外通訊解碼應(yīng)用①

2019-08-22 02:31:50鐘煒楠吳允平蘇偉達(dá)李汪彪王廷銀

鐘煒楠, 吳允平,2,3, 蘇偉達(dá), 李汪彪, 王廷銀

1(福建師范大學(xué) 光電與信息工程學(xué)院,福州 350007)

2(福建省光電傳感應(yīng)用工程技術(shù)研究中心,福州 350007)

3(數(shù)字福建環(huán)境監(jiān)測物聯(lián)網(wǎng)實驗室,福州,350117)

1 引言

紅外通訊是以波長為0.76 μm~1.5 μm的紅外光作為通訊載體實現(xiàn)的數(shù)據(jù)傳送. 由于紅外光通信方向性很強(qiáng),在短距離無線通信領(lǐng)域有著廣泛的應(yīng)用. 通常,紅外通訊主要由發(fā)射和接收兩部分組成[1-3],紅外發(fā)射過程是:先將一幀數(shù)據(jù)調(diào)制成紅外光信號,利用發(fā)射電路將信號放大后向外發(fā)射[4]; 而紅外接收是發(fā)射的逆過程,接收電路將收到的調(diào)制信號存儲下來后,解調(diào)還原成數(shù)字信號,最后由微處理器進(jìn)行后續(xù)解碼處理. 紅外信號的編碼方式有很多種[5],區(qū)別主要在于高、低電平的時間寬度不同,編碼位數(shù)不同等,目前較為常用的編碼協(xié)議有:脈沖寬度編碼(PWM碼)的SIRC協(xié)議、Manchester編碼的RC-5協(xié)議和脈沖位置編碼(PPM碼)的NEC協(xié)議等[6,7]. 數(shù)據(jù)報文通常由引導(dǎo)碼、地址碼、地址反碼、指令和指令反碼等部份組成,以PPM碼的NEC協(xié)議為例,如圖1所示,其特點為[8]:

(1) 8 bit地址碼和8 bit指令碼;

(2) 載波頻率為38 kHz;

(3) 引導(dǎo)碼由一個9 ms低電平和4.5 ms高電平組成;

(4) 邏輯1由560 μs低電平和1680 μs高電平表達(dá),邏輯0由560 μs低電平和560 μs高電平表達(dá).

圖1 NEC協(xié)議紅外數(shù)據(jù)波形

目前,紅外收發(fā)控制器的硬件已經(jīng)成熟商用,市面上的成品比較豐富,可選擇性大,因此一般會將重點放在紅外解碼上[9]. 目前現(xiàn)有的方法總體上相似,就是應(yīng)用定時器中斷和外部中斷資源捕捉紅外波形,然后由微處理器檢查引導(dǎo)碼、數(shù)據(jù)拼接、校驗無誤后,得到地址碼和指令,完成后續(xù)解碼操作[10-13].

2014年,李雪瑩為將波形中的高低電平時長數(shù)據(jù)都記錄下來,在每次進(jìn)入IO口中斷后改變中斷的觸發(fā)方式[14]; 2015年,楊萍選擇不使用中斷,而是在接收到引導(dǎo)碼后,通過每次固定延時560 μs后,探測此時電平是高或低來判斷數(shù)據(jù)為邏輯1或邏輯0[15]; 2017年,張春雨把IO口中斷設(shè)置為下降沿觸發(fā),在進(jìn)入IO口中斷時,啟動計時器,因此每次IO口中斷得到的記錄時長是一個低電平和高電平的累計時長; 最后通過進(jìn)入外部中斷的次數(shù)和相對應(yīng)的計時器數(shù)據(jù)解碼得到地址碼與指令[16].

可見,圍繞如何使紅外通訊的解碼方法適用于多種不同的紅外通訊協(xié)議,提高兼容性,協(xié)調(diào)IO口中斷和定時器中斷資源,提高微處理器紅外通訊的處理效率,是紅外解碼中最主要的幾個問題. 研究一種方法,既可將數(shù)據(jù)接收和解碼工作各自獨立,具有較高的通用性,能方便應(yīng)用于不同的紅外通訊協(xié)議和移植到不同的微處理器上,還有較好的性能,提高微處理器的效率.

2 紅外通訊接收

2.1 硬件配置

選購1838一體化紅外接收頭,該紅外接收頭的工作電流約為1 mA,具體電路如圖2所示,IRData接收紅外數(shù)據(jù),連接到微處理器IO口,IRPower來自微處理器另一個IO,負(fù)責(zé)對接紅外接收頭供電,可以用來控制紅外通訊的低功耗工作模式[17].

圖2 紅外接收電路

2.2 軟件設(shè)計

目前現(xiàn)有的紅外通訊的接收解碼方法由波形采集和數(shù)據(jù)分析解碼兩部分組成,都安排在中斷中完成,導(dǎo)致這兩部分關(guān)聯(lián)性較強(qiáng),代碼普適性弱,程序開發(fā)和維護(hù)的復(fù)雜度高. 因此,將波形采集、數(shù)據(jù)分析分割則可以解決上述不足,設(shè)計的紅外通訊接收及解碼過程如圖3所示,將紅外波形的高、低電平數(shù)據(jù)都捕獲下來,即記錄完整的波形數(shù)據(jù),再進(jìn)行數(shù)據(jù)分析解碼.

為此,設(shè)計的結(jié)構(gòu)體名如下(IR是InfraRed首字母縮寫):

其中,IR_Wave[]為儲存波形高低電平時長的緩沖區(qū)數(shù)組,pIR_Wave為數(shù)組下標(biāo),Timer_Count是記錄進(jìn)入定時器中斷的次數(shù),IsIR_Done指示波形采集完成標(biāo)志位,Is_Decode表示解碼完成標(biāo)志位.

圖3 紅外通訊接收過程

為了實現(xiàn)對波形高低電平的全采集,將IO口設(shè)置為跳變中斷方式,即上升沿和下降沿都可以觸發(fā)IO口外部中斷,在IO口外部中斷中開啟定時器,來記錄高電平或低電平的時長,在整個波形數(shù)據(jù)采集完成后才申請后續(xù)數(shù)據(jù)分析解碼處理. IO口外部中斷服務(wù)的具體流程如圖4所示.

圖4 外部中斷流程圖

進(jìn)入IO口外部中斷后,需檢查當(dāng)前是否有解碼任務(wù)在執(zhí)行,這一步是為了保障緩沖區(qū)中待解碼的數(shù)據(jù)不會被“污染”. 外部中斷的流程如圖4所示,特別需要注意的是,由于進(jìn)入外部中斷后才打開定時器中斷,因此當(dāng)前Timer_Count記錄的時長是兩次外部中斷的間隔時長,也就是高電平或低電平的持續(xù)時長; 流程中首先檢查pIR_Wave是否等于0,如果是,說明第一次進(jìn)入外部中斷,此時不將Timer_Count的數(shù)據(jù)記錄保存到IR_Wave中; 只有當(dāng)pIR_Wave不為0時,此時Timer_Count記錄的數(shù)據(jù)才是有效的,需要保存到緩沖區(qū)中,然后將pIR_Wave后移一位,Timer_Count清0,打開定時器中斷. 由于IRData空閑時是高電平,因此第一次觸發(fā)外部中斷的必然為下降沿,可以進(jìn)一步分析得到,IR_Wave緩沖區(qū)中偶數(shù)下標(biāo)記錄的是低電平時長,而奇數(shù)下標(biāo)則為高電平時長.

本方法中,定時器周期為0.2 ms,根據(jù)紅外波形的特點可知電平狀態(tài)的最長為9 ms,因此如果Timer_Count記錄數(shù)超過45(9/0.2=45),則說明紅外通訊結(jié)束.定時器中斷流程如圖5所示,任務(wù)相對簡單,僅對Timer_Count進(jìn)行累計加一處理; 然后檢查Timer_Count是否大于50時,滿足這個條件,判斷有兩種情況:判斷數(shù)據(jù)傳輸完畢、數(shù)據(jù)有異常. 但無論是哪種情況,處理的方式都是相同的,先將接收完成標(biāo)志位IsIR_Done置成TRUE,然后關(guān)閉定時器中斷,防止系統(tǒng)被定時器中斷長時間占據(jù)而出現(xiàn)崩潰的現(xiàn)象. 當(dāng)IsIR_Done為TRUE時,說明波形采集工作已經(jīng)完成,申請下一步進(jìn)行數(shù)據(jù)分析解碼.

圖5 定時器中斷流程圖

數(shù)據(jù)分析解碼具體流程如圖6所示. 由于紅外波形特點,因此需在IR_Wave緩沖區(qū)中尋找連續(xù)兩字節(jié)引導(dǎo)碼特征數(shù)據(jù)(9 ms低電平和4.5 ms高電平),第一字節(jié)數(shù)值在43-47(9/0.2=45)之間,第二字節(jié)在22-26(4.5/0.2=23.5)之間; 找到后,第二位數(shù)據(jù)的后64位(4×8×2=64)數(shù)據(jù)可根據(jù)紅外協(xié)議中邏輯0和1的特點解碼成32(64/2=32)個0或1,再拼接成地址碼、指令以及兩者的反碼; 最后進(jìn)行校驗檢查,即將地址碼和指令與其反碼相加,驗證兩者之和是否為0FFH,校驗無誤后,得到地址碼和指令,本次紅外通訊結(jié)束. 如果上述過程中出現(xiàn)任何錯誤,立刻退出并初始化MyIR結(jié)構(gòu)體,等待下一次紅外通訊的信號接收.

圖6 數(shù)據(jù)分析解碼流程圖

總結(jié)來說,整個紅外通訊接收過程中,嚴(yán)格將波形的采集、數(shù)據(jù)分析解碼各自獨立,邏輯清晰,由于把波形的高、低電平持續(xù)時長全部記錄下來,再按照紅外通訊編碼協(xié)議進(jìn)行解碼,理論上準(zhǔn)確率能達(dá)到100%.一般對紅外通訊的實時性要求不高,在100 ms內(nèi)完成接收和解碼工作即可,所以在使用該方法時耗時不會影響使用,且占用的資源和復(fù)雜度沒有增加. 如果擔(dān)心紅外信號多,系統(tǒng)會錯過其中的信號,只需要將存儲數(shù)據(jù)的數(shù)組適當(dāng)放大,就可以接收更多字節(jié)的數(shù)據(jù),避免漏接數(shù)據(jù).

3 實際應(yīng)用與展望

如圖7(a)所示,利用示波器觀察紅外信號的波形,先從驗證單個紅外信號是否接收解碼正確開始,然后,如圖7(b)所示,核對串口輸出的紅外解碼四字節(jié)數(shù)值是否和波形匹配,最后,如圖7(c)所示,使用多組不同型號紅外發(fā)射器發(fā)送100個紅外信號,驗證該方法的接收解碼正確率. 持續(xù)72小時的不間斷測試,微處理器未出現(xiàn)異常或者錯誤的現(xiàn)象,可使用任意一款紅外發(fā)射器進(jìn)行紅外通訊,微處理器反應(yīng)迅速,且通訊的距離滿足正常的使用,且接收解碼正確率為100%. 因此,使用本紅外通訊方法完全滿足實際應(yīng)用的需求,與之前的方法相比,具有以下幾方面有所優(yōu)勢:

(1) 波形的采集、數(shù)據(jù)分析解碼的采用獨立分割,代碼可移植性、可讀性和邏輯性高;

(2) 由于采集了完整的紅外波形,因此可解碼多種紅外協(xié)議,提高了兼容性;

(3) 外部中斷在電平的上升沿和下降沿都會觸發(fā),提高了準(zhǔn)確率.

圖7 測試界面與效果

本方法在實際應(yīng)用當(dāng)中,取得了較為滿意的效果,在紅外接收及時和準(zhǔn)確,任務(wù)調(diào)度得當(dāng),不會影響系統(tǒng)其余的正常工作. 如果需要進(jìn)行代碼的移植,只需要注意芯片的頻率并進(jìn)行對應(yīng)的修改,保證定時器的進(jìn)入頻率符合要求,相應(yīng)的IO口可以觸發(fā)外部中斷即可.本方法具有移植性、兼容性和準(zhǔn)確率高的優(yōu)點,具體的控制方案可根據(jù)行業(yè)應(yīng)用需要進(jìn)行微調(diào).

主站蜘蛛池模板: 亚洲精品制服丝袜二区| 国产精品蜜芽在线观看| 亚洲国产在一区二区三区| 亚洲中文字幕23页在线| 99国产精品免费观看视频| 麻豆精品久久久久久久99蜜桃| 午夜a级毛片| 久久精品国产一区二区小说| 国产自无码视频在线观看| 日韩国产亚洲一区二区在线观看| 久久77777| 99999久久久久久亚洲| 97在线公开视频| 另类专区亚洲| 成人免费网站在线观看| 久久国产成人精品国产成人亚洲 | 波多野结衣一区二区三区四区视频| 国产玖玖玖精品视频| 欧美第一页在线| av午夜福利一片免费看| 日韩一级毛一欧美一国产 | 日本人妻丰满熟妇区| 国产av剧情无码精品色午夜| 992tv国产人成在线观看| 九九热免费在线视频| 亚洲成人高清在线观看| 国产精品露脸视频| 狠狠色成人综合首页| 特级做a爰片毛片免费69| 欧美一区二区福利视频| 久久精品国产999大香线焦| 色综合成人| 国产丝袜一区二区三区视频免下载| 亚洲欧美日韩中文字幕一区二区三区| 国产系列在线| 日韩毛片免费| 日韩精品毛片| 欧美午夜在线播放| 国产综合另类小说色区色噜噜| 国产激情影院| 精品福利视频导航| 国产三级a| 制服丝袜一区二区三区在线| 精品国产乱码久久久久久一区二区| 国产超薄肉色丝袜网站| 曰AV在线无码| 久久国产成人精品国产成人亚洲| 亚洲中文字幕无码爆乳| 国产99在线观看| 欧美日韩一区二区在线播放| 激情六月丁香婷婷| 国产精品永久不卡免费视频| 国产成人亚洲精品色欲AV | 丝袜久久剧情精品国产| 欧美午夜网站| 国产在线一区二区视频| 日韩毛片免费观看| 黄色网站在线观看无码| 久久天天躁狠狠躁夜夜躁| 777国产精品永久免费观看| 在线观看免费黄色网址| 免费在线国产一区二区三区精品| 国产精品播放| 色成人综合| 国产乱视频网站| 国产成人1024精品| 91系列在线观看| 99久久99视频| 国产午夜不卡| a毛片免费在线观看| 专干老肥熟女视频网站| 日本不卡视频在线| 欧美成人亚洲综合精品欧美激情| 亚洲中文字幕在线一区播放| 久久国产精品嫖妓| 国内精品久久久久鸭| 国产精品亚洲专区一区| 亚洲欧洲国产成人综合不卡| 欧美日本在线一区二区三区| 日韩高清欧美| 国产色爱av资源综合区| 亚洲水蜜桃久久综合网站|