首页/协议速查/红外 NEC
📺

红外 NEC 红外遥控

无线协议
电视/空调遥控器的经典编码:38kHz载波+引导码+反码校验。
🧩 核心原理
📈 时序 / 工作过程图
红外 NEC 编码时序38kHz 载波调制 → 引导码 → 地址/命令(含反码校验)IR 输出9ms4.5ms位0:0.56ms高+0.56ms低位1:0.56ms高+1.69ms低NEC 帧:引导码(9+4.5ms) + 地址码 + 地址反码 + 命令码 + 命令反码 ≈ 67.5ms载波:38kHz(占空比1/3)· 红外一体化接收头输出为解调后的电平
⚙️ 配置 / 使用要点
  1. 发射:38kHz载波调制数据→红外LED
  2. 接收:一体化头→电平→定时器测量脉冲宽度
  3. 解码:用定时器捕获高/低电平时长→映射位
  4. 学习:保存键值到Flash重发
🛠️ 项目示例
NEC 解码(定时器输入捕获测脉宽)
// 捕获相邻边沿间隔:高电平时长决定位值
// 引导码: 高9ms → 低4.5ms
// 位1: 高0.56ms + 低1.69ms ; 位0: 高0.56ms + 低0.56ms

uint32_t last_t = 0;
void capture_isr(void){
  uint32_t now = TIM1->CCR1;
  uint32_t dt = now - last_t;         // 相对上次边沿
  last_t = now;
  if(dt > 8000 && dt < 11000){ state = START_HI; return; }
  switch(state){
    case START_HI: if(dt > 4000){ state = BITS; bit = 0; val = 0; } break;
    case BITS:
      if(dt > 1200 && dt < 2200) val |= (1 << (31-bit));  // 位1
      if(++bit >= 32) key_done(val);                        // 32位完成
      break;
  }
}
❓ 面试高频
为什么要38kHz载波?
红外LED以38kHz闪烁调制,接收端带通滤除环境光(日光/白炽灯)干扰,只认38kHz分量
NEC反码有什么用?
命令+命令反码做校验,防止误码导致误操作(如误关机)
怎么防误触?
帧校验(反码/CRC)+连续两帧一致才执行+按键去抖
✅ 自查清单 (点击勾选,本地保存)
0/0
知道38kHz载波作用
会画NEC帧结构
知道位0/位1脉宽
会用定时器捕获解码
知道重复码机制