红外控制实验
有一份《红外NEC协议编码说明》,非常清楚的描述了红外NEC码的格式。如下图:
红色为前导码。接下来为32位的数据。包括地址/地址反码/数据/数据反码。后面为重复码,就是你一直按着遥控器,他就会发送重复码。
回到物理层:560us低/560us高------bit0 560us低/1690us高------bit1
思考:关键是识别高电平的长度,来区分前导码,逻辑1和0。自然想到了STM32的输入捕获的功能。
使能两个中断,一个溢出中断,一个捕获中断,溢出中断的时间设置的长一点,识别码的长度的时候不进入,至少要大于4.5ms。
通过捕获中断,来识别不同的码,获得前导码标志,以及后面的32bit的数据。 通过溢出中断,来判断重复按键的次数。
最后再搞一个函数,用来判断这个32bit的数据是否有效,就是反码的比较,返回命令值。