STM32紅外遙控NEC協議

2021-10-24 11:51:51 字數 2014 閱讀 8648

正點原子紅外遙控實驗

nec協議發出的一幀資料報括: 同步(引導)碼, 位址碼, 位址反碼, 控制碼, 控制反碼, 連發(重複)碼

其中位址碼, 位址反碼, 控制碼, 控制反碼的邏輯』1』和邏輯』0』表示如下

邏輯』1』:2.25ms(560us脈衝+1680us低電平)

邏輯』0』: 1.125ms(560us脈衝+560us低電平)

其中高電平的部分其實是由很密集的載波所組成, 就像這樣

但在接收端, 空閒時為高電平. 當接收到有載波時, 接收端變為低電平, 接收到無載波部分時, 又變高電平.

所以其實是和發射端的電平相反了.

同步碼: 9ms低電平+4.5ms高電平

邏輯』0』: 2.25ms(560us低電平+1680us高電平)

邏輯』1』: 1.125ms(560us低電平+560us高電平)

連發碼: 9ms低電平+2.5ms高電平+0.56低電平+97.94ms高電平

當接收端接收到紅外線時, 高電平變為低電平, 進入同步碼, 同步碼結束後開始接收位址碼, 按照這流程下去…

它是先傳送低位, 再傳送高位的; 然後乙個位元組乙個位元組傳送的

連發碼前的高電平應該是是按鍵按下然後沒有松, 按下的時間

這是中斷服務程式**

引導碼==同步碼

//遙控器接收狀態

//[7]:收到了引導碼標誌

//[6]:得到了乙個按鍵的所有資訊

//[5]:保留

//[4]:標記上公升沿是否已經**獲

//[3:0]:溢位計時器

u8 rmtsta=

0;

u16 dval;

//下降沿時計數器的值

u32 rmtrec=0;

//紅外置收到的資料

u8 rmtcnt=0;

//按鍵按下的次數

//定時器5中斷服務程式

void

tim5_irqhandler

(void)}

}if(tim_getitstatus

(tim5,tim_it_cc2)

!=reset)

else

//下降沿捕獲

else

if(dval>

1400

&&dval<

1800

)//1680為標準值,1680us

else

if(dval>

2200

&&dval<

2600

)//得到按鍵鍵值增加的資訊 2500為標準值2.5ms

}else

if(dval>

4200

&&dval<

4700

)//4500為標準值4.5ms

} rmtsta&=~

(1<<4)

;//取消上公升沿捕獲標記}}

tim_clearflag

(tim5,tim_it_update|tim_it_cc2)

;}

此前初始化時已配置好更新中斷和捕獲中斷使能

所以每當電平變化和計數器溢位都會發生中斷進入中斷服務函式

shout out to紅外遙控nec協議使用總結

STM32 紅外NEC協議筆記

學習nec協議,我認為只分為兩部分 1 學習nec協議的解碼,也就是對紅外置收頭接收到訊號後產生的電平訊號進行解讀 2 學習nec協議的編碼,當了解到nec原理之後,自己就可以嘗試著編寫模擬nec紅外訊號,來加深對nec的理解。原理 1 傳送原理 nec協議為傳送38khz的紅外載波來控制資料的傳輸...

紅外遙控NEC協議

一 nec協議特徵 8位位址和8位命令長度 每次傳輸兩遍位址 使用者碼 和命令 按鍵值 通過脈衝串之間的時間間隔來實現訊號的調製 ppm 38khz載波 每位的週期為1.12ms 低電平 或者2.25ms 高電平 二 nec協議的典型脈衝鏈 上圖所示為nec協議的典型脈衝鏈。協議規定低位首先傳送。首...

紅外遙控NEC協議

nec協議的特徵 1 8位位址和8位指令長度 2 位址和命令2次傳輸 確保可靠性 3 pwm脈衝位置調製,以發射紅外載波的占空比代表 0 和 1 4 載波頻率為38khz 5 位時間為1.125ms或2.25ms 高電平持續時間來區分 nec碼的位定義乙個脈衝對應560us的連續載波,乙個邏輯1傳輸...