红外的介绍、优点、缺点就不给大家说了,网上书上都有,下面进入正题
一、红外遥控协议的的讲解
红外遥控的编码目前广泛使用的是:NEC Protocol的PWM(脉冲宽度调制)和Philips RC-5 Protocol的PPM(脉冲位置调制)
本文将以NEC协议实现红外遥控。
NEC协议的特征:
1、8位地址和8位指令长度;
2、地址和命令两次传输(确保可靠性);
3、PWM脉冲宽度调制,以发射红外载波的占空比代表“0”和“1”;
4、载波频率为38KHz;
5、位时间为1.125ms和2.25ms;
NEC 码位的定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需要 1.125ms(560us脉冲+560us低电平)。而遥控接收头在收到脉冲时为低电平,在没有收到脉冲时为高电平,因此,我们在接收头端收到的信号 为:逻辑1应该是560us低+1680us高,逻辑0应该是560us低+560us高。如下图:
NEC 遥控指令的数据格式为:同步码头(引导码)+地址码+地址反码+控制码+控制反码。同步码是由一个9ms的低电平和一个4.5ms的高电平组成,地址码、 地址反码、控制码、控制反码均为8位数据格式。按照高位在前低位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于校验)。下图是我们按下按键2 时,从红外接收头端测到的波形:
在 图中可以看到,在100ms之后,我们还收到了几个脉冲,这是NEC码规定的连发码(由9ms低电平+2.5ms高电平+0.56ms低电平和 97.94ms高电平组成),如果在一帧数据发送完后,按键仍没有松开,则发送重复码(连发码),可以通过统计连发码的次数来标记按键按下的长短/次数。
二、解码程序解析(参考正点原子的代码)
在正点原子的代码中是利用定时器的输入捕获功能来实现遥控解码的,下面解析一下关键代码:
在该实验remote.h文件中,定义了3个函数:Remote_Init();、TIM4_IRQHandler();、Remote_Scan();。
1、Remote_Init();
这里要注意中断优先级,定时器4的两个中断,溢出(更新)中断,捕获事件中断的优先级是一样的。意思就是,他两谁也不能打断谁,例如A在执行时,B就不会产生中断。这里很重要,很重要,很重要!
2、TIM4_IRQHandler();
注意上图中画红框的状态标识,下面解析一下此中断服务函数(该终端服务函数中有两个中断,溢出中断和捕获中断):
1、先看捕获中断,Rmtsta刚开始时为0,当发生一次上升沿捕获时(RDATA对应的引脚得到一个高电平),先把捕获事件配置为下降沿捕获,然后Rmtsta=0x10,标记了上升沿已经被捕获;
2、当有下降沿到来时,将CCR1寄存器的值赋给Dval变量,并再将捕获事件配置为上升沿捕获;补充:像这样上升沿捕获和下降沿捕获交替使用,是为了捕获到高电平持续时间。
3、注意:只有当接收头收到了引导码后,才进行解码。故先判断Dval的值是不是在4200us~4700us之间,如果在,就将Rmtsta|=1<<7,将Rmtsta的最高位置1,标记成功接收到了引导码。
4、 当Rmtsta的最高位被置为1后,即满足了if(Rmtsta&0x80),就可以判断Dval的值在下面3钟范围内 了:300~800(560us)、1400~1800(1680us)、2200~2600(2500us)。从而得到0或者1或者RmtCnt++。 实现了解码。
4、以上3条,其中的高电平持续时间都在10ms之内,意思就是还没到10ms就产生了捕获中断(上升沿和下降沿),因为优先级相同的原因,这时是无法产生溢出中断的。只有当你到10ms了,还没有产生上升沿捕获或下降沿捕获,就会产生溢出中断。
5、 那什么情况下10ms都没有产生捕获呢,那就是上文中的连发码,那个97.94ms的高电平,远大于了10ms,故会产生溢出中断。在溢出中断里会标记已 经完成一次完整的键值信息采集(RmtSta|=1<<6),正点原子在溢出中断中给设的连发码时间为130ms,超过130ms视为是松开 按键了(因为松开按键就不会有脉冲,也就是高电平,看上文)。
此外,处理红外键盘的程序就很简单了,先判断是不是得到所有一个键的所有信息了(根据上一条,判断if(RmtSta&(1<<6))是否成立),然后通过移位读取之前在捕获中断中存进去的数据,再进行原码和反码的对比。这里不多说了。。
注意:遥控器发过来的码都是编好的,比如想破解遥控器编码,可以拿示波器去测接收端的码。
整个程序思路不难,就是对遥控器发过来的码进行解码,这里主要是两个中断的理解。
上一篇:基于STM32平台的CoAP Server方案
下一篇:使用STM32完成智能电机保护器设计方案
推荐阅读最新更新时间:2024-03-16 15:07
设计资源 培训 开发板 精华推荐
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光
- 数药智能冯尚:ADHD数字疗法正为儿童“多动症”提供更有效便捷服务
- Vicor高性能电源模块助力低空航空电子设备和 EVTOL的发展