STM32學習筆記一一紅外遙控

2021-09-01 12:41:38 字數 2264 閱讀 5408

紅外遙控是一種無線、非接觸摸制技術,具有抗干擾能力強,資訊傳輸可靠,低功耗,低成本。

紅外遙控的編碼方式目前廣泛使用的是: pwm (脈衝寬度調製)的 nec 協議和 philips ppm(脈衝位置調製) 的 rc-5 協議的。

1.1 nec 協議定義

nec 碼的位定義:乙個脈衝對應 560us 的連續載波,乙個邏輯 1 傳輸需要2.25ms(560us 脈衝+1680us 低電平),乙個邏輯 0 的傳輸需要1.125ms(560us 脈衝+560us 低電平)。而遙控接收頭在收到脈衝的時候為低電平,在沒有脈衝的時候為高電平,這樣,我們在接收頭端收到的訊號為:邏輯 1 應該是 560us 低+1680us 高,邏輯 0 應該是 560us 低 + 560us 高。

發射端邏輯:

遙控接收頭邏輯:

1.2 nec 協議特點

(1) 8 位位址和 8 位指令長度;

(2)位址和命令 2 次傳輸(確保可靠性);

(3) pwm 脈衝位置調製,以發射紅外載波的占空比代表「0」和「1」;

(4)載波頻率為 38khz;

(5)位時間為 1.125ms 或 2.25ms;

1.3 nec 遙控指令的資料格式

採用反碼是為了增加傳輸的可靠性。nec 碼規定的連發碼(由 9ms 低電平+2.5m 高電平+0.56ms 低電平+97.94ms 高電平組成),如果在一幀資料傳送完畢之後,按鍵仍然沒有放開,則發射重複碼,即連發碼。

上面我們基本了解了 nec 格式的紅外發碼和收碼的格式,就可以根據通訊的協議來完成對應的程式。

程式邏輯:

)//高電平為1680us

else

if(dval>

2200

&&dval<

2600

)//連發碼判斷

}else

if(dval>

4200

&&dval<

4700)}

rmtsta &=~

(1<<4)

;}}tim_clearflag

(tim5,tim_it_update|tim_it_cc2)

;}

u8 remote_scan

(void)if

((sta==0)

||((rmtsta&

0x80)==

0))//接收錯誤或者按鍵沒有按下

參考:1.原子庫函式參考手冊

STM32 紅外遙控器

紅外 原理 遙控器作為發射器,發射38khz的載波,接收器在接收到載波時為低電平 按照nec protocol的pwm,該協議的特點 1 8位位址和8位指令長度 2 位址和命令分兩次傳送,並有傳送位址和命令反碼,便於校驗,確保傳輸的準確 3 pwm脈衝位置調製,以發射紅外載波的占空比來表示 0 和 ...

STM32紅外遙控NEC協議

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

學習型紅外遙控的實現 stm32

最近在做乙個智慧型家居的專案,其核心部分是使用紅外遙控各種家電,包括電視,風扇,空調等等。在製作學習型紅外遙控的過程中,遇到了許多問題,也頗有感悟,特此記錄下來與大家分享。紅外線傳送不同於一般的資料傳輸協議,在此與串列埠比較說明。串列埠是最簡單的資料傳輸協議,學過微控制器的人都知道,微控制器通過串列...