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

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

目录

前言

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

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;

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32外部中断红外遥控解码是指利用STM32微控制器的外部中断功能对红外遥控信号进行解码的过程。 首先,我们需要了解红外遥控信号的工作原理。红外遥控信号是通过红外线传输的,信号的编通常采用NEC、RC5等协议。主要包括起始位、地址和命令等。 解码的第一步是利用红外接收器将红外遥控信号转化为电信号。常用的红外接收器有红外管、红外模块等。电信号经过红外接收器的解调,得到了红外遥控信号的脉冲宽度调制(PWM)信号。 接下来,我们需要利用STM32的外部中断功能对红外遥控信号进行解码。首先,需要配置STM32的GPIO引脚为外部中断模式,并设置中断触发方式。常用的触发方式有上升沿触发、下降沿触发和双边沿触发等。 当红外管接收到PWM信号后,触发外部中断,将中断引脚与STM32的外部中断输入管脚连接。当外部中断触发时,STM32会跳转到相应的中断服务函数进行处理。 在中断服务函数中,我们可以利用定时器和输入捕获功能来测量PWM信号的高电平时间和低电平时间。利用这些时间信息,我们可以解析出红外遥控信号的起始位、地址和命令解码完成后,我们可以根据实际需求对红外遥控信号进行相应的处理。比如,可以控制某些设备的开关状态、调节音量、切换频道等。 需要注意的是,在实际应用中,还需要考虑红外遥控干扰、多个按键同时按下等问题,以提高系统的稳定性和抗干扰能力。 综上所述,STM32外部中断红外遥控解码是一种使用STM32微控制器的外部中断功能,对红外遥控信号进行解码的技术。通过这种技术,我们可以实现红外遥控信号的解析和响应,从而控制不同设备的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值