色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

基于STM32的紅外遙控和解碼遙控程序解析

發(fā)布時(shí)間:2016-9-13 11:28    發(fā)布者:designapp
關(guān)鍵詞: STM32 , 紅外遙控
文本主要包含兩個(gè)內(nèi)容:一、紅外遙控協(xié)議的的講解;二、解碼程序解析(參考正點(diǎn)原子的代碼)

紅外的介紹、優(yōu)點(diǎn)、缺點(diǎn)就不給大家說了,網(wǎng)上書上都有,下面進(jìn)入正題

一、紅外遙控協(xié)議的的講解

紅外遙控的編碼目前廣泛使用的是:NEC Protocol的PWM(脈沖寬度調(diào)制)和Philips RC-5 Protocol的PPM(脈沖位置調(diào)制)

本文將以NEC協(xié)議實(shí)現(xiàn)紅外遙控。

NEC協(xié)議的特征:

1、8位地址和8位指令長度;

2、地址和命令兩次傳輸(確?煽啃);

3、PWM脈沖寬度調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;

4、載波頻率為38KHz;

5、位時(shí)間為1.125ms和2.25ms;

NEC 碼位的定義:一個(gè)脈沖對(duì)應(yīng)560us的連續(xù)載波,一個(gè)邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個(gè)邏輯0的傳輸需要 1.125ms(560us脈沖+560us低電平)。而遙控接收頭在收到脈沖時(shí)為低電平,在沒有收到脈沖時(shí)為高電平,因此,我們?cè)诮邮疹^端收到的信號(hào) 為:邏輯1應(yīng)該是560us低+1680us高,邏輯0應(yīng)該是560us低+560us高。如下圖:





NEC 遙控指令的數(shù)據(jù)格式為:同步碼頭(引導(dǎo)碼)+地址碼+地址反碼+控制碼+控制反碼。同步碼是由一個(gè)9ms的低電平和一個(gè)4.5ms的高電平組成,地址碼、 地址反碼、控制碼、控制反碼均為8位數(shù)據(jù)格式。按照高位在前低位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃?可用于校驗(yàn))。下圖是我們按下按鍵2 時(shí),從紅外接收頭端測(cè)到的波形:





在 圖中可以看到,在100ms之后,我們還收到了幾個(gè)脈沖,這是NEC碼規(guī)定的連發(fā)碼(由9ms低電平+2.5ms高電平+0.56ms低電平和 97.94ms高電平組成),如果在一幀數(shù)據(jù)發(fā)送完后,按鍵仍沒有松開,則發(fā)送重復(fù)碼(連發(fā)碼),可以通過統(tǒng)計(jì)連發(fā)碼的次數(shù)來標(biāo)記按鍵按下的長短/次數(shù)。

二、解碼程序解析(參考正點(diǎn)原子的代碼)

在正點(diǎn)原子的代碼中是利用定時(shí)器的輸入捕獲功能來實(shí)現(xiàn)遙控解碼的,下面解析一下關(guān)鍵代碼:

在該實(shí)驗(yàn)remote.h文件中,定義了3個(gè)函數(shù):Remote_Init();、TIM4_IRQHandler();、Remote_Scan();。

1、Remote_Init();





這里要注意中斷優(yōu)先級(jí),定時(shí)器4的兩個(gè)中斷,溢出(更新)中斷,捕獲事件中斷的優(yōu)先級(jí)是一樣的。意思就是,他兩誰也不能打斷誰,例如A在執(zhí)行時(shí),B就不會(huì)產(chǎn)生中斷。這里很重要,很重要,很重要!

2、TIM4_IRQHandler();













注意上圖中畫紅框的狀態(tài)標(biāo)識(shí),下面解析一下此中斷服務(wù)函數(shù)(該終端服務(wù)函數(shù)中有兩個(gè)中斷,溢出中斷和捕獲中斷):

1、先看捕獲中斷,Rmtsta剛開始時(shí)為0,當(dāng)發(fā)生一次上升沿捕獲時(shí)(RDATA對(duì)應(yīng)的引腳得到一個(gè)高電平),先把捕獲事件配置為下降沿捕獲,然后Rmtsta=0x10,標(biāo)記了上升沿已經(jīng)被捕獲;

2、當(dāng)有下降沿到來時(shí),將CCR1寄存器的值賦給Dval變量,并再將捕獲事件配置為上升沿捕獲;補(bǔ)充:像這樣上升沿捕獲和下降沿捕獲交替使用,是為了捕獲到高電平持續(xù)時(shí)間。

3、注意:只有當(dāng)接收頭收到了引導(dǎo)碼后,才進(jìn)行解碼。故先判斷Dval的值是不是在4200us~4700us之間,如果在,就將Rmtsta|=1




注意:遙控器發(fā)過來的碼都是編好的,比如想破解遙控器編碼,可以拿示波器去測(cè)接收端的碼。

整個(gè)程序思路不難,就是對(duì)遙控器發(fā)過來的碼進(jìn)行解碼,這里主要是兩個(gè)中斷的理解。
本文地址:http://m.54549.cn/thread-173718-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表