详细 IR NEC 红外驱动调试数据
详细 IR NEC 红外驱动调试数据:
TX调试注意:
1). 数据处理时,需要进行LSB处理,也就是低位在先,可以右移处理,但我用的另外方式:
for(j=0;j<8;j++)
{
if(txcode[i] & (0x1 << j))
{
/* Logic '1' :560us(carrier), 1680us(low) */
tx->txbuf[index++] = 0x8000 | NEC_L10_560US;
tx->txbuf[index++] = NEC_L1_1680US;
}
else
{
/* Logic '0' :560us(carrier), 560us(low) */
tx->txbuf[index++] = 0x8000 | NEC_L10_560US;
tx->txbuf[index++] = NEC_L10_560US;
}
//next bit
//txcode[j] = txcode[j] >> 1;
}
一. NEC TX调式数据:
1. 发送频率:38.46KHz
占空比:1:3
之前的占空比配置不对,修正后的占空比如下:
2. 引导码:
程式设定:9ms+4.5ms
实测:9.13ms + 4.69ms
||||||||||||||||___|
3. Logic "1"
程式设定:650us+1680us
实测:carrier 688us + 1827us
4. Logic "0"
程式设定:650us+ 650us
实测:carrier 688us + 715us
注:为什么实测跟程式设定有点误差?
是因为timer hander有处理代码,造成的一些偏差。
对应处理其实可以timer设定的时候,可以适当根据代码处理减少一点时间来达到或尽量解决目标程式时间。
根据实测时间时间延时,减少timer时间,测试比较接近目标值。
5. 发送一个完整的波形NEC 数据波形:
输入:address:0x0b , code: 0x05
因为LSB数据在前,所以
程式输出: 9ms|4.5ms| 1101 0000 0010 1111 1010 0000 0101 1111
实测波形:
|9ms|4.5ms|1101|0000|0010|1111|1010|0000|0101|1111|
跟程式设定输出一致。
6. repeat 重复码:
目标:9ms+2.25ms+560us
测试:8.966ms+2.293ms+675us
repeat 周期:110ms:
7. 用逻辑分析仪捕捉到的波形及数据解析:
address: 0x0B ,~address: 0xF4
cmd: 0x05,~cmd:0xFA
repeat code:1
对应的debug log:
跟捉到的波形及解码一致: input: address: 0x0b, command: 0x05
二. NEC RX调式数据:
1. 从逻辑分析仪抓的波形及解析到的NEC RX协议code:
此图为TCL IR NEC 红外遥控器开关机键捕捉到的波形和解析出来的code.
address: 0x08,~address: 0xF7
cmd: 0x9B, ~cmd: 0x64
repeat code: 1
2. 串口debug的得到的ir rx decode数据:
跟逻辑分析仪捕捉decode的数据一致: 0x649BF708