STM32红外线模块
STM32 红外线模块
一.原理
1.连接跳线帽
如图,画圈的黑色部分为红外线模块的硬件设备,黄色为跳线帽,记住使用的时候一定要连跳线帽,否者无法使用。
2.NEC协议
首先红外线的主要载波频率
高电平 38Khz
低电平 无载波
码位定义:560 us一个脉冲
信号1:2.25ms (560us脉冲+1680us低电平)
信号0:1.125ms (560us脉冲+560us低电平)
则接收头接受的信号为:
信号1:2.25ms (560us低电平+1680us脉冲)
信号0:1.125ms (560us低电平+560us脉冲)
NEC指令格式:同步码头(9ms低电平+4.5ms高电平),地址码头(区分红外遥控器),地址反码,控制码,控制反码(8位数据格式,反码用于校验),连发码(9ms低电平+2.5ms高电平+0.56ms低电平+97.94ms高电平,以此来统计连发码的次数来标记按键按下的次数)
注:如果高电平超过100ms,一般是超过130ms以后,认为不是连发码。
3.引脚方面
战舰和精英的开发板是PB9引脚;(该引脚接的是定时器4的第四个通道)
mini的开发板则是PA1的引脚;(该引脚接的是定时器5的第二个通道)
由于定时器和引脚的不同,三个开发板的红外线模块的程序也略有不同。
4.大致思路
1.开启定时器的输入捕获,设置为上升沿捕获。(频率为1MHZ,装载值为10000,溢出时间为10ms);
2.中断,更新和捕获。(上升捕获,溢出更新);
3.上升捕获调为下降捕获,定时器计数值设置为0.
对捕获值进行判断;
300-800(650us,逻辑值0)
1400-1800(1680us,逻辑值1)
2200-2600(2500us,连发码)
4200-4700(4500us,同步码)
注:定时器溢出,若收到同步码,且第一次溢出,则标记一次信息采集成功。
二.代码讲解
首先是对PA1端口的使能,载设置定时器5的通道2.频率为1M,装载值为1000,溢出时间为10ms。,在设置中断(跟新中断和捕获中断)。设置中断一定要记住,在此之前,要设置中断优先级。
RmtSta 有8位,每一位表示的意思都不一样。
位7(第8位),表示是否接受到了引导码(同步码)。
位6(第7位),为接受信息的标志,接受完所有信息为1.
位5(第6位)保留。
位4(第5位),标记上升沿是否已经捕获。
位【3:0】(第1-4位),溢出计时器。
Dval 下降沿计数器的值
RmtRec 红外接受到的数据
RmtCnt 按键按下的次数
程序的大致思路为看前文所示。
接受完信号后,就是对信号的处理。先将信号进行分离。分为地址码,地址反码。再进行分析,如图所示。
最后就是通过LCD 屏,对接受到的数据进行显示,如图所示。