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

[复制链接]
1523|1
 楼主| 看花开花落 发表于 2016-11-11 12:00 | 显示全部楼层 |阅读模式
CC1101 主机与从机之间进行1对1通信,主机发送一包数据,从机接收到主机的数据后给主机返回一包数据,GDO0引脚配置是0x06,经过试验发现主机发送一包数据数据后,有时候从机收不到,主机发送100包,从机只收到90包左右。通过示波器检测GDO0引脚,当未收到主机的数据时,GDO0引脚也不发生跳变。主机发送数据时,发送每一包数据GDO0引脚都有跳变,所以我认为主机每包数据都发送成功。

以下是我的主从机配置帮忙检查以下是否有误。
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. {CC1101_IOCFG0,      0x06},
  24. {CC1101_FIFOTHR,     0x47},
  25. {CC1101_PKTCTRL0,    0x05},//0x05 default
  26. {CC1101_CHANNR,      0x01},
  27. {CC1101_FSCTRL1,     0x06},
  28. {CC1101_FREQ2,       0x0F},
  29. {CC1101_FREQ1,       0x62},
  30. {CC1101_FREQ0,       0x76},
  31. {CC1101_MDMCFG4,     0xF6},//f6
  32. {CC1101_MDMCFG3,     0x43},//43
  33. {CC1101_MDMCFG2,     0x13},//13  GFSK
  34. {CC1101_DEVIATN,     0x15},
  35. {CC1101_MCSM0,       0x18},
  36. {CC1101_FOCCFG,      0x16},
  37. {CC1101_WORCTRL,     0xFB},
  38. {CC1101_FSCAL3,      0xE9},
  39. {CC1101_FSCAL2,      0x2A},
  40. {CC1101_FSCAL1,      0x00},
  41. {CC1101_FSCAL0,      0x1F},
  42. {CC1101_TEST2,       0x81},
  43. {CC1101_TEST1,       0x35},
  44. {CC1101_MCSM1,       0x30},

以下是我的接收函数
  1. INT8U CC1101RecPacket( INT8U *rxBuffer )
  2. {
  3.     INT8U status[2];
  4.     INT8U pktLen;
  5.     INT16U x = 0;

  6.     if ( CC1101GetRXCnt( ) != 0 )
  7.     {
  8.         pktLen = CC1101ReadReg(CC1101_RXFIFO);           // Read length byte
  9.         if( ( CC1101ReadReg( CC1101_PKTCTRL1 ) & ~0x03 ) != 0 )
  10.         {
  11.             x = CC1101ReadReg(CC1101_RXFIFO);x=x;
  12.         }
  13.         if( pktLen == 0 )           { return 0; }
  14.         else                        { pktLen --; }
  15.         CC1101ReadMultiReg(CC1101_RXFIFO, rxBuffer, pktLen); // Pull data
  16.         CC1101ReadMultiReg(CC1101_RXFIFO, status, 2);   // Read  status bytes

  17.         CC1101ClrRXBuff( );

  18.         if( status[1] & CRC_OK ) {   return pktLen; }
  19.         else                     {   return 0; }
  20.     }
  21.     else   {  return 0; }                               // Error
  22. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部