NEC协议是在红外遥控器中较为常用的一种。
协议使用38K载波对数据进行调制(建议采用是⅓占空比,即1个时间单位的高电平(LED亮)+2个时间单位的低电平(LED灭))。
数据调制的基准时间宽度T为560μs。
基本格式:引导码+用户码+用户码反码+数据码+数据码反码+结束码。一般用户码同一款遥控器相同。
数据发送顺序:从低位向高位发送。(例如0xF0(11110000),先发0000再发1111)
格式详解:
- 引导码:9ms载波+4.5ms空闲
- 逻辑1:560μs载波+1.68ms空闲
- 逻辑0:560μs载波+560μs空闲
- 结束码:560μs载波
- 重复码:9ms载波+2.25ms空闲
按基准时间格式详解:
- 引导码:16T载波+8T空闲
- 逻辑1:1T载波+3T空闲
- 逻辑0:1T载波+1T空闲
- 结束码:1T载波
- 重复码:16T载波+4T空闲
注意:无论38K载波还是调制间隔时间都允许一定的误差,比如美的遥控器载波是38.186K。
重复码(通常可以不做处理,即不发送):有一种场景就是我们一直按住按键不松手,则需要每隔110ms发送一次重复码。第一次重复码发送间隔需要算上前面按键数据的时间。注:重复码也需要发送结束标志(即结束码)。
着重注意一下:很多博客并没有提到协议中的结束码问题(本人测试时候就发现连续发送信号偶尔成功,原因就是没有发送结束码,而偶然成功只是因为操作速度刚刚好令到设备把我下一帧信号的开头当作结束码)。