【STM32学习笔记】红外遥控之红外解码(支持长按、连发码数量检测)

本文详细介绍了如何在STM32上实现红外遥控器的解码,特别是长按检测和连发码数量的统计。通过定时器的输入捕获功能解析NEC协议,解释了引导码、数据码和连发码的时序,提供了红外解码的流程和具体代码实现,包括GPIO和定时器初始化、中断服务函数等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

二、解码思路(定时器的输入捕获功能)

1、NEC协议的编码时序(接收端)

(1)引导码的组成和时间

(2)数据码(0、1)的组成和时间

(3)连发码的组成和时间

2、定时器下降沿捕获来得到波形时间

如何获取一个编码波形的时间?

重点:如何知道连发码发完了呢?

3、红外解码流程图及实现代码

1、红外解码流程

2、GPIO和定时器的初始化

3、中断服务函数的编写(实现红外解码) 

前言

在学习红外遥控实验的过程中,长按检测、连发码数量统计一直是学习的的难点,网上几乎搜不到关于连发码的检测和处理的相关教程;尽管可以搜到一些代码,但通常也不完整,没有注释,对于初学者来说阅读困难;为此,本教程将系统讲解一下支持连按的解码思路并给出详细代码,还会提供可运行的完整的工程代码下载链接,对于各类教程常见的NEC编码理论和指令接收部分,不再详细介绍。

先来看一下实验结果,本实验可以实现的功能是指令码的检测和打印;若进行长按,对应LED1指示灯点亮,直到松开后LED1熄灭,并且通过串口打印出接收到的连发码个数;若进行一次短按,理论上只打印命令值,不会打印连发码个数(取决于个人操作,松手慢的话依然会接收到几个连发码)。

基于STM32F103ZET6的完整工程代码,请到资源页下载:资源上传中请稍后

一、连发码的发送时机

     网上关于连发码的发送时序的资料很少,本人经过一段时间的测试和研究,绘制了连发码的发送序列图,如上图所示。从图中可以看出:当第32位指令(控制反码的最后一位)发送完成后,不是立即发送连发码,而是先发一个低电平,一段时间后再发一个高电平,这一段波形的时间大概是40ms左右(时间根据遥控器的不同会有一些出入),这一段波形的作用有两个:

(1)单按时,多提供给定时器一个下降沿捕获,从而获得第32位指令的波形时间;

(2)通过这一小段延时,来进行按键消抖,给手一个松开的时间,若延时完,手还没有松开,则认为是连按,开始发送连发码。

二、解码思路(定时器的输入捕获功能)

1、NEC协议的编码时序(接收端

(1)引导码的组成和时间

引导码由9ms的低电平和4.5ms的空闲(即高电平)组成,波形时间为13.5ms

(2)数据码(0、1)的组成和时间

逻辑1是560us 的低电平和1680us 的高电平,波形时间为2.24ms;

逻辑0 是560us的低电平和560us 的高电平,波形时间为1.12ms;

首先将板子连接好;接着将红外接收头按照上述方法接好,将VOUT接到数字11口引脚 载波频率都是38khz 每一位癿时间为1.125ms戒2.25ms •逻辑 0和1的定义如下图 协议如下: •按键按下立刻松开的发射脉冲: 上面图片显示了NEC的协议典型的脉冲序列。注意:这首先发送LSB(最低位)的协议。在上面癿脉冲传输的地址为0x59命令为0x16。一个消息是由一个9ms的高电平开始,随后有一个4.5ms的低电平,(返两段电平组成引寻)然后由地址和命令。地址和命令传输两次。第二次所有位都取反,可用于对所收到的消息中的确认使用。总传输时间是恒定的,因为每一点与它取反度重复。如果你不感兴趣,你可以忽略这个可靠性取反,也可以扩大地址和命令,以每16位! 按键按下一段时间才松开的发射脉冲: 一个命令发送一次,即使在遥控器上的按键仍然按下。当按键一直按下时,第一个110ms癿脉冲与上图一样,之后每110ms重复代传输一次。返个重复代是由一个9ms的高电平脉冲和一个2.25ms低电平和560μs癿高电平组成。 •重复脉冲 注意:脉冲波形进入一体化接收头以后,因为一体化接收头里要迕解码、信号放大和整形,故要注意:在没有红外信号时,其输出端为高电平,有信号时为低电平,故其输出信号电平正好和发射端相反。接收端脉冲大家可以通过示波器看到,结合看到的波形理解程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值