红外遥控学习笔记

1.红外遥控工作原理

  • 协议类型:红外遥控有多种通信协议,包括NEC,RC5,RC6等,(我的小车配套遥控器采用NEC协议,所以这边重点解析NEC)。
  • NEC数据帧结构:
  1. 组成:引导码(13.5ms)+用户码(8bit)+用户反码(8bit)+数据码(8bit)+数据反码(8bit)+停止位(1bit)
  2. 总时长:引导码(13.5ms)+ 用户码 && 用户反码(18ms--36ms)+数据码 && 数据反码(27ms) = 58.5--76.5ms
  3. 反码作用:通过取反操作增强数据传输的正确性
  4. 总位数:32位(32位数据+1停止位+1引导码)

2.NEC协议编码约定

  • 引导码特征:
  1. 首次按键:9ms低电平 + 4.5ms高电平
  2. 连发情况:9ms低电平 + 2.25ms高电平(重复)
  • 数据表示:
  1. 逻辑0:0.56ms低电平+0.56ms高电平
  2. 逻辑1:0.56ms低电平+1.12ms高电平
  • 连发机制:按键持续按下时,发送重复码(无数据跟随),直到松开重新触发完整信号
  • 重复码:
  1. 触发条件:按键长按不松开时产生
  2. 时序特征:110ms间隔的重复码序列
  3. 数据特点:仅包含引导码变体(9ms+2.25ms),不携带用户码和数据码

3.NEC协议解码

  • 硬件路径;遥控器—>红外接收头—>MCU中断引脚
  • 解码原理:通过测量高低电平持续时间识别码类型
    • 关键参数: 精确测量9ms/4.5ms/2.25ms/0.56ms/1.12ms等特征时长
    • 判断依据: 将实际测量时长与协议标准值比较

为什么不用定时器的输入捕获?

答:因为在硬件设计上,红外遥控和舵机控制的定时器功能需求冲突。具体分析:舵机控制需要定时器3输出固定20ms周期的PWM波,同时我们的红外遥控也需要定时器3进行输入捕获,但信号周期不固定。所以我们的解决方案是,改用外部中断模式(PB1引脚),以此来避免定时器资源冲突。

4.程序设计思路

  • 实现步骤:
  1. 配置PB1为双边沿触发外部中断
  2. 在中断回调中记录定时器计数值
  3. 建立环形缓冲区存储连续计数值
  4. 计算相邻计数值差转换为时间差
  • 关键技术:
  1. 双边沿检测: 同时捕获上升沿和下降沿时刻
  2. 缓冲区设计: 应对连续多次中断触发
  3. 时间计算: 通过定时器计数差换算实际时间
  4. 独立定时器: 使用定时器10专用于计数,避免资源竞争

具体代码还是去具体实现吧,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值