正點原子紅外遙控實驗
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傳輸...