電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>可編程邏輯>基于STM32的紅外遙控重點解析資料下載

基于STM32的紅外遙控重點解析資料下載

2021-04-24 | pdf | 302.45KB | 次下載 | 5積分

資料介紹

今天本文有兩個內容:一、紅外遙控協(xié)議的的講解;二、解碼程序解析(參考正點原子的代碼)紅外的介紹、優(yōu)點、缺點就不給大家說了,網(wǎng)上書上都有。。下面進入正題→_→一、紅外遙控協(xié)議的的講解紅外遙控的編碼目前廣泛使用的是:NEC Protocol的PWM(脈沖寬度調制)和Philips RC-5 Protocol的PPM(脈沖位置調制)本文將以NEC協(xié)議實現(xiàn)紅外遙控。NEC協(xié)議的特征:1、8位地址和8位指令長度;2、地址和命令兩次傳輸;(確保可靠性)3、PWM脈沖寬度調制,以發(fā)射紅外載波的占空比代表“0”和“1”;4、載波頻率為38KHz5、位時間為1.125ms和2.25msNEC碼位的定義:一個脈沖對應560us的連續(xù)載波,一個邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個邏輯0的傳輸需要1.125ms(560us脈沖+560us低電平)。而遙控接收頭在收到脈沖時為低電平,在沒有收到脈沖時為高電平,因此,我們在接收頭端收到的信號為:邏輯1應該是560us低+1680us高,邏輯0應該是560us低+560us高。如下圖:NEC遙控指令的數(shù)據(jù)格式為:同步碼頭(引導碼)+地址碼+地址反碼+控制碼+控制反碼。同步碼是由一個9ms的低電平和一個4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均為8位數(shù)據(jù)格式。按照高位在前低位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕捎糜谛r灒?。下圖是我們按下按鍵2時,從紅外接收頭端測到的波形:在圖中可以看到,在100ms之后,我們還收到了幾個脈沖,這是NEC碼規(guī)定的連發(fā)碼(由9ms低電平+2.5ms高電平+0.56ms低電平和97.94ms高電平組成),如果在一幀數(shù)據(jù)發(fā)送完后,按鍵仍沒有松開,則發(fā)送重復碼(連發(fā)碼),可以通過統(tǒng)計連發(fā)碼的次數(shù)來標記按鍵按下的長短/次數(shù)。二、解碼程序解析(參考正點原子的代碼)在正點原子的代碼中是利用定時器的輸入捕獲功能來實現(xiàn)遙控解碼的,下面解析一下關鍵代碼:在該實驗remote.h文件中,定義了3個函數(shù):Remote_Init();、TIM4_IRQHandler();、Remote_Scan();。1、Remote_Init();這里要注意中斷優(yōu)先級,定時器4的兩個中斷,溢出(更新)中斷,捕獲事件中斷的優(yōu)先級是一樣的。意思就是,他兩誰也不能打斷誰,例如A在執(zhí)行時,B就不會產生中斷。這里很重要,很重要,很重要!2、TIM4_IRQHandler();注意上圖中畫紅框的狀態(tài)標識,下面解析一下此中斷服務函數(shù)(該終端服務函數(shù)中有兩個中斷,溢出中斷和捕獲中斷):1、先看捕獲中斷,Rmtsta剛開始時為0,當發(fā)生一次上升沿捕獲時(RDATA對應的引腳得到一個高電平),先把捕獲事件配置為下降沿捕獲,然后Rmtsta=0x10,標記了上升沿已經(jīng)被捕獲;2、當有下降沿到來時,將CCR1寄存器的值賦給Dval變量,并再將捕獲事件配置為上升沿捕獲;補充:像這樣上升沿捕獲和下降沿捕獲交替使用,是為了捕獲到高電平持續(xù)時間。3、注意:只有當接收頭收到了引導碼后,才進行解碼。故先判斷Dval的值是不是在4200us~4700us之間,如果在,就將Rmtsta|=1<<7,將Rmtsta的最高位置1,標記成功接收到了引導碼;4、當Rmtsta的最高位被置為1后,即滿足了if(Rmtsta&0x80),就可以判斷Dval的值在下面3鐘范圍內了:300~800(560us)、1400~1800(1680us)、2200~2600(2500us)。從而得到0或者1或者RmtCnt++。實現(xiàn)了解碼。4、以上3條,其中的高電平持續(xù)時間都在10ms之內,意思就是還沒到10ms就產生了捕獲中斷(上升沿和下降沿),因為優(yōu)先級相同的原因,這時是無法產生溢出中斷的。只有當你到10ms了,還沒有產生上升沿捕獲或下降沿捕獲,就會產生溢出中斷;5、那什么情況下10ms都沒有產生捕獲呢,那就是上文中的連發(fā)碼,那個97.94ms的高電平,遠大于了10ms,故會產生溢出中斷。在溢出中斷里會標記已經(jīng)完成一次完整的鍵值信息采集(RmtSta|=1<<6),正點原子在溢出中斷中給設的連發(fā)碼時間為130ms,超過130ms視為是松開按鍵了(因為松開按鍵就不會有脈沖,也就是高電平,看上文)。此外,處理紅外鍵盤的程序就很簡單了,先判斷是不是得到所有一個鍵的所有信息了(根據(jù)上一條,判斷if(RmtSta&(1<<6))是否成立),然后通過移位讀取之前在捕獲中斷中存進去的數(shù)據(jù),再進行原碼和反碼的對比。這里不多說了。。注意:遙控器發(fā)過來的碼都是編好的,比如想破解遙控器編碼,可以拿示波器去測接收端的碼?!鷂→整個程序思路不難,就是對遙控器發(fā)過來的碼進行解碼,這里主要是兩個中斷的理解。。由于博主水平有限,如有不當之處,懇請各位大咖指正,共同進步!(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費