天天看點

紅外遙控NEC協定總結

一、協定特征

8位位址和8位指令長度;

為了可靠,每次傳輸兩遍位址(使用者碼)和指令(按鍵值);

通過脈沖串之間的時間間隔來實作信号的調制(PPM);

載波頻率為38kHz;

每位的周期為1.12ms(低電平)或者2.25ms(高電平);

二、NEC協定的典型脈沖鍊

紅外遙控NEC協定總結

上圖為NEC協定的典型脈沖鍊。協定規定低位首先發送。首先發送9ms+4.5ms的引導碼,接下來是兩位元組使用者碼,第三位元組是資料碼,用來判斷按鍵值,第四位元組是資料反碼,可以用來校驗,提高按鍵的準确性。另外在資料幀傳輸的最後還有一個停止位的脈沖。

三、NEC協定脈沖資料碼介紹

紅外遙控NEC協定總結

除了引導碼、使用者碼和資料碼以外,協定最後還有一個1bit的停止位,用于資料發送完畢判斷。

一個NEC資料幀占用的時間長度包括:(引導碼,9ms的高電平和4.5ms的低電平,然後是32位資料[其中包括:兩位元組使用者碼,第三位元組是資料碼,第四位元組是資料反碼]和1位停止位):即引導碼:(9+4.5)ms + 32位資料[全是高電平時,(32x2.25)ms; 全是低電平時,(32x1.12)ms] + 1位停止位(0.5625ms),是以一幀資料所占用的時間範圍是:

9+4.5+35.84+0.5625 = 49.9025ms < frame_data_time(NEC) < 9+4.5+72+0.5625 = 86.0625ms

四、NEC協定的高低電平說明

紅外遙控NEC協定總結

NEC協定使用比特的脈沖距離編碼。每個脈沖是一個560us長的38kHz載波脈沖(大約21個周期)。一個邏輯“1”需要2.25毫秒來傳輸,而一個邏輯“0”隻需要一半的時間,即1.125毫秒。建議載波占空比為1/4或1/3。

使用者碼和資料碼中的‘0’和‘1’是利用脈沖的時間間隔來區分,這種編碼方式稱為脈沖位置調制方式(PPM)。

五、程式設計注意事項

1.紅外接收頭引腳信号是相反的電平。

以上電平是從發射頭角度來看,紅外接收頭引腳輸出的是相反的電平。

紅外遙控NEC協定總結

如圖,即沒有資料傳輸時,IR引腳保持為高電平,當接收到資料時,首先是引導碼,9ms的高電平和4.5ms的低電平,然後是32位資料和1位停止位。一般來說,IR與主要平台的某中斷引腳相連,當接收資料時,低電平會觸發中斷。

2.資料從LSB(低位)開始發送,是以選擇右移方式接收資料。

四個位元組的資料都是先發送D0,最後發送D7。是以接收到1位資料後,給變量的最高位指派,右移。或者先右移,再給變量的最高位指派。

3.可以用一個數組儲存32個資料的持續時間,用于後面判斷高低電平。

用定時器對兩個資料(中斷)之間的時間計時,并儲存這個持續時間用于以後判斷是位1還是位0。

4.可以用2位元組,4位元組變量存儲32個資料,以節省代碼空間。

可以用兩個16位的int型變量存儲資料,第一個int變量存儲使用者碼,第二個存儲資料碼和資料反碼。也可以用一個32位long型的變量存儲所有資料。

六、判斷停止位。

接收到停止位後可以屏蔽紅外引腳的中斷,防止後面資料的幹擾,解碼成功後在開啟中斷。就是每次傳完一幀的資料,都會有一個0.5625ms的脈沖表示結束。同樣的,每個重複碼結束後,也有一個0.5625ms的脈沖表示結束。

七、重複碼

當遙控器上的鍵一直按下時。每110毫秒重複碼就會被傳輸一次,隻要鍵保持按下狀态。這個重複代碼隻是一個9ms的AGC脈沖,接着是2.25ms的空間和560 µs的脈沖。

紅外遙控NEC協定總結

繼續閱讀