通过普通的红外发射管,兼作红外接收管使用。通过示波器看到了原始的带红外载波的信号,那么Decoder需要做的是:
1、计算载波频率;
2、复制一个完整的红外数据包;
3、识别红外数据包中的重发模式(重发数据包/发送固定的Repeate波形/……);
4、特殊格式的识别与处理,如RC5的触发bit翻转;
解决思路:
1、MCU开启下降沿触发中断,通过观察格式类型,带载波的单元长度+一个闲置电平(TX端为Low,RX端为High)远小于Timer的计数范围,同时,载波频率通常在38-500Khz之间,因此,载波两次进入终端的最长时间理论值为26uS,因此通过一个阀值判断可以很简单的识别载波单元与闲置单元。
2、有了上面的基础,我们就能够顺利的拷贝载波单元与闲置单元的执行时间,即实现了拷贝红外数据包;示例如下:
CurrTimVal = GetCNTTIM();
IdleTime = CurrTimVal - preTimerVal;
if(IdleTime > CARRERMAXPERIOD)
{
CopyTimeBuf[p] = preTimerVal - preStartVal;
CopyTimeBuf[p+1]= IdleTime;
preStartVal = CurrTimVal;
p +=2;
preTimerVal = tmpTimer