• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2019-08-22 02:31:50鐘煒楠吳允平蘇偉達李汪彪王廷銀
      計算機系統(tǒng)應(yīng)用 2019年8期
      關(guān)鍵詞:低電平高電平解碼

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

      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ù)傳送. 由于紅外光通信方向性很強,在短距離無線通信領(lǐng)域有著廣泛的應(yīng)用. 通常,紅外通訊主要由發(fā)射和接收兩部分組成[1-3],紅外發(fā)射過程是:先將一幀數(shù)據(jù)調(diào)制成紅外光信號,利用發(fā)射電路將信號放大后向外發(fā)射[4]; 而紅外接收是發(fā)射的逆過程,接收電路將收到的調(diào)制信號存儲下來后,解調(diào)還原成數(shù)字信號,最后由微處理器進行后續(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高電平表達,邏輯0由560 μs低電平和560 μs高電平表達.

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

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

      2014年,李雪瑩為將波形中的高低電平時長數(shù)據(jù)都記錄下來,在每次進入IO口中斷后改變中斷的觸發(fā)方式[14]; 2015年,楊萍選擇不使用中斷,而是在接收到引導(dǎo)碼后,通過每次固定延時560 μs后,探測此時電平是高或低來判斷數(shù)據(jù)為邏輯1或邏輯0[15]; 2017年,張春雨把IO口中斷設(shè)置為下降沿觸發(fā),在進入IO口中斷時,啟動計時器,因此每次IO口中斷得到的記錄時長是一個低電平和高電平的累計時長; 最后通過進入外部中斷的次數(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,負責(zé)對接紅外接收頭供電,可以用來控制紅外通訊的低功耗工作模式[17].

      圖2 紅外接收電路

      2.2 軟件設(shè)計

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

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

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

      圖3 紅外通訊接收過程

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

      圖4 外部中斷流程圖

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

      本方法中,定時器周期為0.2 ms,根據(jù)紅外波形的特點可知電平狀態(tài)的最長為9 ms,因此如果Timer_Count記錄數(shù)超過45(9/0.2=45),則說明紅外通訊結(jié)束.定時器中斷流程如圖5所示,任務(wù)相對簡單,僅對Timer_Count進行累計加一處理; 然后檢查Timer_Count是否大于50時,滿足這個條件,判斷有兩種情況:判斷數(shù)據(jù)傳輸完畢、數(shù)據(jù)有異常. 但無論是哪種情況,處理的方式都是相同的,先將接收完成標志位IsIR_Done置成TRUE,然后關(guān)閉定時器中斷,防止系統(tǒng)被定時器中斷長時間占據(jù)而出現(xiàn)崩潰的現(xiàn)象. 當IsIR_Done為TRUE時,說明波形采集工作已經(jīng)完成,申請下一步進行數(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,再拼接成地址碼、指令以及兩者的反碼; 最后進行校驗檢查,即將地址碼和指令與其反碼相加,驗證兩者之和是否為0FFH,校驗無誤后,得到地址碼和指令,本次紅外通訊結(jié)束. 如果上述過程中出現(xiàn)任何錯誤,立刻退出并初始化MyIR結(jié)構(gòu)體,等待下一次紅外通訊的信號接收.

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

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

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

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

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

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

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

      圖7 測試界面與效果

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

      猜你喜歡
      低電平高電平解碼
      數(shù)字電路中“邏輯非”的用法辨析
      《解碼萬噸站》
      一種基于FPGA的PWM防錯輸出控制電路
      鐵道車輛高/低電平信號智能發(fā)生器設(shè)計
      解碼eUCP2.0
      中國外匯(2019年19期)2019-11-26 00:57:32
      TS-03C全固態(tài)PDM中波發(fā)射機開關(guān)機控制電路原理及故障分析
      科技傳播(2019年15期)2019-08-22 08:07:44
      NAD C368解碼/放大器一體機
      Quad(國都)Vena解碼/放大器一體機
      2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
      DM 50KW中波廣播發(fā)射機欠推動故障分析
      雅江县| 重庆市| 陕西省| 福建省| 郸城县| 合川市| 乐亭县| 大荔县| 桦甸市| 绥宁县| 兴海县| 财经| 盘锦市| 滨海县| 正宁县| 清水河县| 汉沽区| 灵石县| 武冈市| 深水埗区| 义乌市| 伽师县| 池州市| 牟定县| 镇巴县| 荔波县| 海安县| 抚远县| 玉龙| 泸西县| 南充市| 开远市| 合水县| 文安县| 云南省| 贺州市| 姜堰市| 大宁县| 句容市| 广宗县| 大埔区|