手机红外方案介绍

     红外知识介绍的网站(https://www.sbprojects.net/knowledge/ir/index.php),包含各种红外协议,其中常见是是nec协议。

 

 

                                             

图1是红外的发射电路,图2是红外的接收电路,图3和图4是nec协议

9毫秒脉冲+4.5毫秒低电平+8位地址码+8位地址反码+8位命令码+8位命令反码

比如地址码是0xff,相当于8个逻辑1,按图4进行发送即可。

所谓的码库就是时间信息(单位是us),由于对称性,nec发一次码的时间为(9+4.5+(2.15+1.12)×32),大约118ms

脉冲经过图2的电路处理后,就变成了一个简单的波形,如图5橙色部分(或反相),只要判断脉冲的长度(ktime_sub&&ktime_get),便可将需要的红外码解析出来了,内核已集成相关的代码gpio-ir-recv.c,编译相应的协议文件即可。

1.io/pwm/spi-do控制红外灯发射红外线(成本低,不支持学习功能,小米手机采用这种方案)


2.芯片方案
下面三种芯片都是支持学习型的芯片 
     abov(MC96FR116C 硬件i2c)  http://www.abov.co.kr/en/
     ETEK(et4007 模拟i2c)             http://www.etek.com.cn/
     宏芯达(hxd019d 模拟i2c)         http://www.hxdkj88.com/

3.红外码库(这部分一般需要购买)
       酷控 遥控精灵 宏芯达等 

 

拿小米的开源代码来分析下,使用过gpio,pwm,spi-do来控制红外的发射。

如Redmi 4X(gpio方式),电路类似下图

 

https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/santoni-n-oss/arch/arm/boot/dts/qcom/msm8917-pmi8937-qrd-sku5_S88503.dtsi

gpio-leds {
                compatible = "gpio-leds";
                status = "okay";
                pinctrl-names = "default";
                pinctrl-0 = <&gpio_led_off>;

                infred {
                        gpios = <&tlmm 45 0>;
                        label = "infrared";
                        linux,default-trigger = "infra-red";
                        default-state = "off";
                        retain-state-suspended;
                };

        };

驱动https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/santoni-n-oss/drivers/leds/leds-gpio.c

Redmi Note 4X Standard(pwm方式)

https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/mido-n-oss/arch/arm/boot/dts/qcom/msm8953-qrd.dtsi

   pwm_ir {
                compatible = "pwm-ir";
                pwms = <&pmi8950_pwm 0 0>;
                reg-id = "vdd";
                vdd-supply = <&pm8953_l8>;
        };

驱动https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/mido-n-oss/drivers/media/rc/pwm-ir.c

Xiaomi5X, Redmi 5Plus(spi-do方式,即使用spi的一个口来发射,因为spi有参考时钟,能用来做延时,同时spi要开启dma模式,保证传输过程中不受os调度影响,保证时序稳定)

https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/tiffany-n-oss/arch/arm/boot/dts/qcom/msm8953-qrd.dtsi

&spi_6 {
        status = "ok";
        peel_ir@0 {
                compatible = "peel_ir";
                reg = <0x0>;
                spi-max-frequency = <19200000>;
                vdd-supply = <&pm8953_l8>;
                peel_ir,reg-id = "vdd";
                peel_ir,lr-gpio = <73>;
                peel_ir,lr-gpio-valid = <0>;
                peel_ir,spi-bpw = <32>;
                peel_ir,spi-clk-speed = <960000>;
                peel_ir,spi-mode = <0>;
                peel_ir,peel-field = <2345>;
                status = "ok";
        };
};

驱动https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/tiffany-n-oss/drivers/media/rc/peelir.c

最新的内核https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/media/rc?h=v4.14.194

已集成这三种方式ir-spi.c,pwm-ir-tx.c,gpio-ir-tx.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值