www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 嵌入式客棧
[導讀]紅外遙控是我們經(jīng)常見到的一種無線收發(fā)設備,比如電視遙控,空調(diào)遙控,現(xiàn)在電視遙控有些慢慢變成了藍牙裝置。昨天是在知識星球里面看到有人提問,今天來解析一份網(wǎng)友寫的驅(qū)動程序。調(diào)試紅外需要注意幾個細節(jié)1、我們發(fā)射的遙控器用肉眼是看不到的,需要拿相機來觀察。2、紅外接收管和普通的二極管不同...

紅外遙控是我們經(jīng)常見到的一種無線收發(fā)設備,比如電視遙控,空調(diào)遙控,現(xiàn)在電視遙控有些慢慢變成了藍牙裝置。昨天是在知識星球里面看到有人提問,今天來解析一份網(wǎng)友寫的驅(qū)動程序。


調(diào)試紅外需要注意幾個細節(jié)

1、我們發(fā)射的遙控器用肉眼是看不到的,需要拿相機來觀察。

2、紅外接收管和普通的二極管不同,如果用錯物料也是不行的。



1.NEC協(xié)議無線傳輸數(shù)據(jù)原理


NEC協(xié)議的特征:?


1、8位地址和8位指令長度;?

2、地址和命令兩次傳輸;(確??煽啃裕?

3、PWM脈沖寬度調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;?

4、載波頻率為38KHz?

5、位時間為1.125ms和2.25ms?


NEC碼位的定義:一個脈沖對應560us的連續(xù)載波,一個邏輯1傳輸需要2.25ms(560us脈沖 1680us低電平),一個邏輯0的 傳輸需要1.125ms(560us脈沖 560us低電平)。


而遙控接收頭在收到脈沖時為低電平,在沒有收到脈沖時為高電平,因此, 我們在接收頭端收到的信號為:邏輯1應該是560us低 1680us高,邏輯0應該是560us低 560us高。


如下圖:




硬件




2. Linux下的驅(qū)動接收程序


參考原文:


https://blog.csdn.net/wllw7176/article/details/110506677


兩個驅(qū)動文件


gpio-ir-recv.c

/*?Copyright?(c)?2012,?Code?Aurora?Forum.?All?rights?reserved.
?*
?*?This?program?is?free?software;?you?can?redistribute?it?and/or?modify
?*?it?under?the?terms?of?the?GNU?General?Public?License?version?2?and
?*?only?version?2?as?published?by?the?Free?Software?Foundation.
?*
?*?This?program?is?distributed?in?the?hope?that?it?will?be?useful,
?*?but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of
?*?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.??See?the
?*?GNU?General?Public?License?for?more?details.
?*/


#include?

  • #include?

  • #include?

  • #include?

  • #include?

  • #include?

  • #include?

  • #include?

  • #include?

  • #include?

  • #include?
    #include?

    #define?GPIO_IR_DRIVER_NAME?"gpio-rc-recv"
    #define?GPIO_IR_DEVICE_NAME?"gpio_ir_recv"

    struct?gpio_rc_dev?{
    ?struct?rc_dev?*rcdev;
    ?int?gpio_nr;
    ?bool?active_low;
    };

    #ifdef?CONFIG_OF
    /*
    ?*?Translate?OpenFirmware?node?properties?into?platform_data
    ?*/

    static?int?gpio_ir_recv_get_devtree_pdata(struct?device?*dev,
    ??????struct?gpio_ir_recv_platform_data?*pdata)

    {
    ?struct?device_node?*np?=?dev->of_node;
    ?enum?of_gpio_flags?flags;
    ?int?gpio;

    ?gpio?=?of_get_gpio_flags(np,?0,?
  • 本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
    關閉
    關閉