手机红外方案介绍

news/2024/12/1 0:44:18/

     红外知识介绍的网站(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


http://www.ppmy.cn/news/338817.html

相关文章

HTML5期末大作业:电影网站设计——电影介绍(11页) 大学生电影网页作品 电影网页设计作业模板 学生网页制作源代码下载

HTML5期末大作业&#xff1a;电影网站设计——电影介绍(11页) 大学生电影网页作品 电影网页设计作业模板 学生网页制作源代码下载 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 …

东东动态夏目猫咪老师404官网html源码

介绍&#xff1a; 非常好看的一款404页面&#xff0c;右键记事本就可以修改文字~ 按钮忘记插入超级链接了自己加一下&#xff0c;不然不会跳转哈&#xff01; 网盘下载地址&#xff1a; http://kekewl.net/jGfERMG5xaG 图片&#xff1a;

手撸架构,Nginx 面试40问

技术栈传送门JAVA 基础手撸架构&#xff0c;Java基础面试100问_vincent-CSDN博客JAVA 集合手撸架构&#xff0c;JAVA集合面试60问_vincent-CSDN博客JVM 虚拟机手撸架构&#xff0c;JVM面试30问_vincent-CSDN博客并发编程手撸架构&#xff0c;并发编程面试123问_vincent-CSDN博客…

面试必备:Spring 面试 63 问!

作者 | 夏目 blog.csdn.net/wuzhiwei549/article/details/122324261 Sping原理 Spring是一个轻量级Java开发框架&#xff0c;最早有Rod Johnson创建&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack&#x…

面试攻略!Java 基础面试 100 问

点击关注公众号&#xff0c;回复“1024”获取2TB学习资源&#xff01; 面向对象的特征有哪些方面? 抽象(Encapsulation)&#xff1a;封装的目的是为了保证变量的安全性&#xff0c;使用者不必在意具体实现细节&#xff0c;而只是通过外部接口即可访问类的成员 如果不进行封装&…

【夏目鬼鬼分享】rabbitmq消息队列发送于接收

1. 创建连接的工具类 *** Created by wzy on 2020/12/3* 用于创建连接的工具类*/ public class ConnectionUtil {public static Connection getConnection() throws Exception{//获取连接ConnectionFactory connectionFactory new ConnectionFactory();connectionFactory.set…

【夏目鬼鬼分享】RabbitMQ发布/订阅广播模式

消息发送流程说明 可以有多个消费者每个消费者都有自己的队列(queue)每个队列都要绑定到交换机(Exchange)(都是一些临时队列)生产者发送的消息只能发送到交换机&#xff0c;交换机来决定要发给那个队列&#xff0c;生产者无法决定。交换机将消息发送给绑定过的所有队列队列的消…

HTML期末作业,仿b站视频项目模板(HTML+CSS+JS)

项目&#xff1a;视频网站项目 作品描述&#xff1a;仿b站视频项目模板HTMLCSSJavaScript。主要包括的页面有推荐、推荐、榜单、推荐、游戏、游戏、 音乐、舞蹈等总共8个栏区。 视频链接&#xff1a;寒假充电了吗&#xff1f;快拿走b站源码练练手吧&#xff08;HTMLCSSJS&…