使用两块CC1101的板子做测试,A板上电首先进行发送,B板上电配置为接收,当B板接收到A发送的数据时进行简单的校验(A发给B的是已知的固定值的数据),校验通过后B板马上转换成发送,而A板发送完成立刻变成接收并且A板有超时退出机制。B板变成发送,每次发送21个字节数据(实际上设置为可变数据包长度模式),现在发现的问题是,A板接收的时候经常出现数据重叠,比如说发送 01 02 03 04 05 06 07 数据,接收到的可能就是 01 02 03 03 04 05 06 就是其中一个数据又重复了一次或者N次(实际上不应该重复)。A板和B板一直这样循环,出现数据重复的概率很大,两个板子间隔3米左右,5db的天线。
配置如下:
{CC1101_IOCFG0, 0x06}, // 432MHz 76.767KBaud 3.52ms@30Byte 26
{CC1101_FIFOTHR, 0x47},
// {CC1101_PKTCTRL0, 0x05},
{CC1101_PKTCTRL0, 0x45},
{CC1101_FIFOTHR, 0x47},
// {CC1101_PKTCTRL0, 0x05},
{CC1101_PKTCTRL0, 0x45},
{CC1101_FSCTRL1, 0x08},
{CC1101_FREQ2, 0x10}, //
{CC1101_FREQ1, 0xa7}, //
{CC1101_FREQ0, 0x62}, //
{CC1101_FREQ1, 0xa7}, //
{CC1101_FREQ0, 0x62}, //
{CC1101_MDMCFG4, 0x7B},
{CC1101_MDMCFG3, 0x83},
{CC1101_MDMCFG2, 0x13},
{CC1101_DEVIATN, 0x42},
{CC1101_MCSM0, 0x18},
{CC1101_FOCCFG, 0x1D},
{CC1101_BSCFG, 0x1C},
// {CC1101_AGCCTRL2, 0xC7},
// {CC1101_AGCCTRL1, 0x00},
// {CC1101_AGCCTRL0, 0xB2},
{CC1101_AGCCTRL2, 0x03},
{CC1101_AGCCTRL1, 0x40},
{CC1101_AGCCTRL0, 0x91},
{CC1101_MDMCFG3, 0x83},
{CC1101_MDMCFG2, 0x13},
{CC1101_DEVIATN, 0x42},
{CC1101_MCSM0, 0x18},
{CC1101_FOCCFG, 0x1D},
{CC1101_BSCFG, 0x1C},
// {CC1101_AGCCTRL2, 0xC7},
// {CC1101_AGCCTRL1, 0x00},
// {CC1101_AGCCTRL0, 0xB2},
{CC1101_AGCCTRL2, 0x03},
{CC1101_AGCCTRL1, 0x40},
{CC1101_AGCCTRL0, 0x91},
{CC1101_WORCTRL, 0xFB},
{CC1101_FREND1, 0xB6},
// {CC1101_FREND1, 0x56}, //
{CC1101_FREND1, 0xB6},
// {CC1101_FREND1, 0x56}, //
{CC1101_FSCAL3, 0xEA},
{CC1101_FSCAL2, 0x2A},
{CC1101_FSCAL1, 0x00},
{CC1101_FSCAL0, 0x1F},
{CC1101_TEST2, 0x81},
{CC1101_TEST1, 0x35},
{CC1101_TEST0, 0x09}
{CC1101_FSCAL2, 0x2A},
{CC1101_FSCAL1, 0x00},
{CC1101_FSCAL0, 0x1F},
{CC1101_TEST2, 0x81},
{CC1101_TEST1, 0x35},
{CC1101_TEST0, 0x09}
Viki Shi:
看描述AB板是相同的配置,但是重复数据只出现在A板?
Butterfly:
用A板单独循环发21个字节数据给B,会有这个问题吗?
建议先测试单独A发送,B接收没有问题
user3971797:
回复 Butterfly:
问题已经解决了,谢谢!