本帖最后由 yesful 于 2012-6-25 17:45 编辑
最近调试CC1101模块~~~频率为433M~~~在无地址检测,可变长度模式下,通信正常~~~当我改成地址检测,将地址设置成相应地址,其它设置不变时,通信就不成功了~~~问题就出现在地址检测这部分,但我搞了好久都没调试通,现在请大家指点一下~~~
我的测试过程是这样的:
功能:发射模块向接收模块发送8字节数据,(即1,2,3,4,5,6,7,8)
发射和接收都配置成:地址检测,可变长度数据,
0x05,// PKTCTRL1 Packet automation control.
0x05,// PKTCTRL0 Packet automation control.
0x01,// ADDR Device address.
0x20,// PKTLEN Packet length.
发送端(2秒一次):
T TX_Buff[0] = 10;
//字节长度,这个字节长度,需要加上2( 长度1字节和地址1字节,还是
//只是有用数据字节,即1,2,3,4,5,6,7,8)
Tx_Buff[1] = 1;
//地址
halRfSendPacket(Tx_Buff,10);
// Transmit Tx buffer data
接收端:
leng = 10;
//leng的长度=8+2(长度1字节+地址1字节)
if(halRfReceivePacket(RxBuf,&leng))
{
Led = ~Led;
}
测试结果:LED灯不闪,接收端收不到数据,RXFIFO中的数据字节数为0
疑问:1、匹配地址:
发送端:是发送数据包中,紧跟在数据长度后的ADDR字节的地址吗?
接收端:是初始化时写入地址寄存器里的自身地址吗?
2、TX_FIFO中的数据长度(Length field),它包插了哪里内容,是数据长度所占的
1 字节+地址长度所占的一字节+有用数据的n字节,即Length = 1+1+n(个字节)
还是,数据字节只是有用的数据长度,即Length = n吗?
3、数据包格式:如果我设置成地址检测,则,发送的数据应该是,前导码+同步词汇
+ 数据长度+目标地址+有用数据+CRC状态字,当接收模块接收到
数据后,从接收到的数据包中,提取地址(即长度字节后的地址)与
自身地址作匹配对吗?
|