STM32单片机以NEC协议实现红外遥控设计

红外的介绍、优点、缺点就不给大家说了,进入正题
一、红外遥控协议的的讲解
红外遥控的编码目前广泛使用的是: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();
注意:遥控器发过来的码都是编好的,比如想破解遥控器编码,可以拿示波器去测接收端的码。
整个程序思路不难,就是对遥控器发过来的码进行解码,这里主要是两个中断的理解。

递归的三大要素!有关递归的一些优化思路
POL设计中有哪些需要注意的因素
扬尘监测仪器有哪些_扬尘监测仪器规格型号
诺基亚回归颠覆作:Swan,无边框,安卓机皇
三款红外接收二极管电路图
STM32单片机以NEC协议实现红外遥控设计
小米6最新消息:并非尽善尽美,第一批小米6问题汇总,你能够接受吗?
如何利用精密编带包装载带提高芯粒和 WLCSP 装配产量
基于高通 QCC5181 aptX adptivite 24 bit-96KHz/Lossless蓝牙扩大机方案
刷新世界纪录:英飞凌芯片以0.637秒破解魔方
5V2A手机充电器电源芯片的优势
行业方案|装备制造业SRM供应商管理解决方案
一个简单的错误可能会导致用户损坏麦克风
光纤激光器的优点_光纤激光器是否有辐射
数据链路协议,数据链路协议是什么意思
魅族魅蓝6正式发布:699元起!魅族魅蓝Note6海贼王定制版亮相:1699元起
光纤激光器自产率逐步提升 创新大年有望实现新突破
红米手机3拆解 在做工方面红米3有何提升呢
机械加工毛刺产生的原因及处理办法
智慧医疗可以如何去重构