网站首页 > 博客文章 正文
来源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频文字版)
作者:韦东山
本文字数:1468,阅读时长:2分钟
本节开始讲解红外遥控器信号的接收和解码,视频分为三部分,每一部分都专注做一件事情,让每节视频更短一点。
红外遥控器的操作比前面的温度、温湿度传感器都要简单。
首先看一下原理图上的红外遥控接收器:
我们用遥控器对它按动的时候,它就可以接收到红外信号,然后把红外信号转换成电平信号,通过IRD这根线,传给SOC。
整个传输,只涉及单向传输,由HS0038向主芯片传送。
因此,我们只需要编写程序,从IRD上获取数据即可,在这之前,我们需要先了解下数据是怎么表示的,也就是传输的红外数据的格式。
红外协议有:NEC、SONY、RC5、RC6等,常用的就是NEC格式,因此我们主要对NEC进行讲解。
在分析文章中的波形之前,我们先想象一下怎么在一条数据线上传输信号。
开始传输数据之前,一般都会发出一个start起始信号,通知对方我开始传输数据了,后面就是每一位每一位的数据。
NEC协议的开始是一段引导码:
这个引导码由一个9ms的低脉冲加上一个4.5ms的高脉冲组成,它用来通知接收方我要开始传输数据了。
然后接着的是数据,数据由4字节组成:地址、地址(取反)、数据、数据(取反),这些取反是用来校验用的。
地址是指遥控器的ID,每一类遥控器的ID都不一样,数据就是遥控器上的不同按键。
从前面的图可以知道,NEC每次要发32位的数据,每一位用什么来表示0和1呢?
数据1和01,开始都是0.56ms的低脉冲,对于数据1,后面的高脉冲比较长,对于数据0,后面的高脉冲比较短。 可以看出,红外遥控器的数据表示方法是比较简单的。
我们长按一个按键,第一次按的时候,他会发出引导码,地址,地址取反,数据,数据取反。
接着由于长按,遥控器会发送一个不一样的引导码,这个引导码由9ms的低脉冲,2.25ms的高脉冲组成,表示现在按的还是上次一样的按键,然后再一直是引导码(重复),直到松开。
里面的内容和前面文章基本一致,但这个更详细,发现每次数据传输完还有一个0.5625ms的低脉冲表示数据传输结束。
对于引导码(重复)也一样,也有一个0.5625ms的低脉冲表示传输结束。
大部分文章都漏掉了结束的低脉冲。
NEC协议里有很多时间,这些时间有一个有趣的现象,把所有时间里面最小的0.53ms看作基本脉冲宽度,假设用t表示,那么其它所有时间都是t的倍数:
我们可以看到对于所有的时间,最小的单位都是0.56ms,这个时间对人来说是非常短的,但对嵌入式系统它是非常非常长的了,足够我们做很多事情了,那么我们可以使用中断来处理这些数据。
并且对于红外遥控器来说,我们根本不知道用户什么时候按下遥控器,使用轮询的方式特别耗资源,因此直接使用中断来处理。
使用官方文档的时序图:
图中的脉冲方向正好相反,绿色表示低脉冲,白色表示高脉冲。
涉及内容:
- ①中断引脚设置为双边缘触发,在每一个脉冲变化的地方都会产生中断;
- ②发生中断时,计算当前中断与上次中断之间的时间差,就得到脉冲宽度,放入buffer,同时还要记录引脚极性;
- ③主循环从buffer取出数据,并解析时序;
我们可以估算下,每按下一次遥控器,会产生多少中断,2+32*2+1=67次。
中断发生时,将数据放入buffer,主函数从buffer取出数据,用什么数据结构来实现数据的存取?
最好的方式就是环形缓冲区,所谓环形缓冲区就是一边存储数据一边读取数据,下节课再详细讲解。
编程要点:
- ①中断
- ②系统时间
- ③环形缓冲区
- ④NEC解析
猜你喜欢
- 2024-10-07 思科和NEC合作为巴西电信公司部署5G自动化传输网络
- 2024-10-07 红外遥控功能的实现(红外遥控的实现原理)
- 2024-10-07 STM32 NEC红外遥控器解码(stm32f103红外遥控)
- 2024-10-07 神奇魔力:12岁小同志如何驱动红外遥控器?
- 2024-10-07 硬件监控-IPMI协议简析(什么是ip监控)
- 2024-10-07 遥控器拆解,这些电子知识赶紧学起来
- 2024-10-07 联想集团(00992)与NEC成立合营公司所订立的过渡服务协议续期至6月30日
- 2024-10-07 NEC将旗下锂离子电池公司卖给了金沙江资本
- 2024-10-07 NEC和Fortinet达成5G网络安全协议
- 2024-10-07 日本NEC与Milano合作,在意大利米兰打造基于光纤的传感网络
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)