看花开花落 发表于 2016-11-11 12:00

求助!CC1101主机从机距离2米,2kbuad GFSK 丢包率在10%左右,怎么降低丢包率呢?

CC1101 主机与从机之间进行1对1通信,主机发送一包数据,从机接收到主机的数据后给主机返回一包数据,GDO0引脚配置是0x06,经过试验发现主机发送一包数据数据后,有时候从机收不到,主机发送100包,从机只收到90包左右。通过示波器检测GDO0引脚,当未收到主机的数据时,GDO0引脚也不发生跳变。主机发送数据时,发送每一包数据GDO0引脚都有跳变,所以我认为主机每包数据都发送成功。

以下是我的主从机配置帮忙检查以下是否有误。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{CC1101_IOCFG0,      0x06},
{CC1101_FIFOTHR,   0x47},
{CC1101_PKTCTRL0,    0x05},//0x05 default
{CC1101_CHANNR,      0x01},
{CC1101_FSCTRL1,   0x06},
{CC1101_FREQ2,       0x0F},
{CC1101_FREQ1,       0x62},
{CC1101_FREQ0,       0x76},
{CC1101_MDMCFG4,   0xF6},//f6
{CC1101_MDMCFG3,   0x43},//43
{CC1101_MDMCFG2,   0x13},//13GFSK
{CC1101_DEVIATN,   0x15},
{CC1101_MCSM0,       0x18},
{CC1101_FOCCFG,      0x16},
{CC1101_WORCTRL,   0xFB},
{CC1101_FSCAL3,      0xE9},
{CC1101_FSCAL2,      0x2A},
{CC1101_FSCAL1,      0x00},
{CC1101_FSCAL0,      0x1F},
{CC1101_TEST2,       0x81},
{CC1101_TEST1,       0x35},
{CC1101_MCSM1,       0x30},
以下是我的接收函数
INT8U CC1101RecPacket( INT8U *rxBuffer )
{
    INT8U status;
    INT8U pktLen;
    INT16U x = 0;

    if ( CC1101GetRXCnt( ) != 0 )
    {
      pktLen = CC1101ReadReg(CC1101_RXFIFO);         // Read length byte
      if( ( CC1101ReadReg( CC1101_PKTCTRL1 ) & ~0x03 ) != 0 )
      {
            x = CC1101ReadReg(CC1101_RXFIFO);x=x;
      }
      if( pktLen == 0 )         { return 0; }
      else                        { pktLen --; }
      CC1101ReadMultiReg(CC1101_RXFIFO, rxBuffer, pktLen); // Pull data
      CC1101ReadMultiReg(CC1101_RXFIFO, status, 2);   // Readstatus bytes

      CC1101ClrRXBuff( );

      if( status & CRC_OK ) {   return pktLen; }
      else                     {   return 0; }
    }
    else   {return 0; }                               // Error
}
页: [1]
查看完整版本: 求助!CC1101主机从机距离2米,2kbuad GFSK 丢包率在10%左右,怎么降低丢包率呢?