版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mike8825/article/details/80955992
1.单个io控制红外灯发射红外线(成本低,稳定性不高,不支持学习功能,小米有一部分手机采用这种方案)
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,芯片来控制红外的发射。
如Redmi 4X,电路类似下图
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_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_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