STM32 紅外NEC協議筆記

2021-09-18 02:37:39 字數 1469 閱讀 8967

學習nec協議,我認為只分為兩部分:1、學習nec協議的解碼,也就是對紅外置收頭接收到訊號後產生的電平訊號進行解讀;2、學習nec協議的編碼,當了解到nec原理之後,自己就可以嘗試著編寫模擬nec紅外訊號,來加深對nec的理解。

原理:1、傳送原理:nec協議為傳送38khz的紅外載波來控制資料的傳輸,週期大概為26us。nec傳送的一次訊號可分為引導碼、位址碼、位址反碼、命令碼、命令反碼,如圖:

可以看出,傳送資料時從地位開始發。其中黑色陰影為載波訊號,也就是高低電平交替的訊號,如

其中陰影即載波,第二張圖為放大後的樣子。傳送的訊號,除了引導碼,其他資料全都是由『0』,『1』組成。『0』由560us載波和560us無載波構成,『1』則是560us載波和1690us無載波構成,如

2、接收原理:和傳送原理相反,當收到傳送的載波時接收頭產生低電平,接收到不傳送載波時接收頭產生高電平。有圖更容易理解。

一、解碼

解碼就比較頭疼了,這個nec解碼起來很容易,,不管是利用輸入捕獲功能還是只利用讀取電平變化進入外部中斷來計時都可以達到解碼的目的;

但是當自己仿照著nec寫乙個傳送字串的協議時,發現我怎麼都解讀不出來。。。當然傳送出來的時序圖是沒有問題的。我很納悶,然後這個問題困擾我幾天後,問起老師,老師說cup只能同時做一件事,要麼解讀要麼傳送。頓時覺得我好睿智啊。到現在,我也沒解讀出來,因為我太懶了。。寫完筆記就去完成最後的實驗吧!

二、編碼

編碼的核心思想就是編制載波,

#define infrared_encodingsend pgout(11)//pg11為訊號輸出腳,連線紅外發射器

/*紅外編碼傳送一位,紅外置收為38khz,所以一週期為1/38khz,26us

則閃爍一週期26us,亮13us,滅13us,紅外置收到載波訊號後產生低電平。

而接收到不閃爍訊號則產生高電平

time:持續的時間,如9000us載波、4500us無載波

type:紅外發射器閃爍否,1閃爍,0不閃爍(接收器產生高電平)

*/void nec_infraredencoding38khz(u16 time,u8 type)

{ u16 i=0;

if(type)//傳送載波

{ for(i=0;i後面的傳送資料就好辦了,直接按照想要傳送的命令碼和位址碼封裝乙個函式就可。

STM32紅外遙控NEC協議

正點原子紅外遙控實驗 nec協議發出的一幀資料報括 同步 引導 碼,位址碼,位址反碼,控制碼,控制反碼,連發 重複 碼 其中位址碼,位址反碼,控制碼,控制反碼的邏輯 1 和邏輯 0 表示如下 邏輯 1 2.25ms 560us脈衝 1680us低電平 邏輯 0 1.125ms 560us脈衝 560...

STM32HAL 紅外遙控(NEC)

整理了乙個nec協議的紅外程式,nec協議,物理環境為f103原子戰艦v3,使用stm32cubemx生成初始程式。定時器配置72分頻,9999裝載值 10ms nec協議 資料格式 同步碼頭 位址碼 位址反碼 按鍵碼 按鍵反碼 lsb先行 同步碼頭 9ms低電平 4.5ms高電平 連發碼 9ms低...

紅外遙控NEC協議

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