有哪位大神做过CC1101的WOR功能?

2019-07-21 00:46发布

本人在做CC1101的项目,由于接收端要做低功耗处理。看到CC1101有WOR功能,所以就想用这个功能达到低功耗的目的。但是进入WOR模式后,很难接收,或者过很长一段时间才能接收,如果缩短睡眠时间,功耗增大很多。
本人也试过隔一段时间恢复CC1101,但是功耗并不理想,因为接收模式耗电太大了。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
ryanwong
2019-07-21 15:10
本帖最后由 ryanwong 于 2018-12-4 20:38 编辑

对不起,晚了点。
首先:由于篇幅的原因,我只把CC1101的某些配置发出来
把基本配置上传上来先
寄存器配置:
static const unsigned char CC1101InitData[30][2]=
{
  {CC1101_IOCFG0,      0x06},                            //这里是GDO0的收到数据就产生中断的配置
  {CC1101_FIFOTHR,     0x47},
  {CC1101_PKTCTRL0,    0x05},
  {CC1101_CHANNR,      0x01},
  {CC1101_FSCTRL1,     0x0B},
  {CC1101_FSCTRL0,     0x00},   //    Frequency synthesizer control.
  {CC1101_FREQ2,       0x10},
  {CC1101_FREQ1,       0xA7},
  {CC1101_FREQ0,       0x62},
  {CC1101_MDMCFG4,     0x7B},                             //这里比较重要的是 MDMCFG4 - 0,这几个寄存器,其实我不知道这是什么意思,但是这样配置的话,发送端发送周期会下降至5ms
  {CC1101_MDMCFG3,     0x83},                             //按照其他文章配置的话,发送周期将会到达100ms,发送周期太长的话,接收端不好接收数据
  {CC1101_MDMCFG2,     0x93},                             //这里的“发送周期”不是指连续发送,而是每次只发几个字节,用来唤醒CC1101。(这里表述不清楚,真是不好意思)
  {CC1101_MDMCFG1,     0x23},   //    Modem configuration.                                        //其余的和网上的配置差不多
  {CC1101_MDMCFG0,     0xA4},   //    Modem configuration.
  {CC1101_DEVIATN,     0x15},
  {CC1101_FREND1,      0x56},   //     Front end RX configuration.
  {CC1101_FREND0,      0x10},   //     Front end RX configuration.
  {CC1101_MCSM0,       0x18},
  {CC1101_FOCCFG,      0x16},
  {CC1101_BSCFG,       0x6C},   //      Bit synchronization Configuration.
  {CC1101_AGCCTRL2,    0x43},   //   AGC control.
  {CC1101_AGCCTRL1,    0x40},   //   AGC control.
  {CC1101_AGCCTRL0,    0x91},   //   AGC control.
  {CC1101_FSCAL3,      0xA9},
  {CC1101_FSCAL2,      0x0A},
  {CC1101_FSCAL1,      0x00},
  {CC1101_FSCAL0,      0x11},
  {CC1101_TEST2,       0x81},
  {CC1101_TEST1,       0x35},
  {CC1101_MCSM1,       0x3B},
初始化函数:  //以下是初始化函数的操作,值得注意的是这里配置了地址。一般CC1101选择信道就可以了。我也是跟着别人配置的
void cc1101Init(void)
{
    unsigned char i;
        SPI_GPIO_Init();
    Reset();   
    for(i=0;i<0xff;i++);
    for(i=0;i<0xff;i++);

    for( i = 0; i < 30; i++ )                //28
    {
        WriteReg(CC1101InitData[0],CC1101InitData[1]);
    }
    //cc1101_mode(RX_MODE);
        CC1101SetAddress( 0x05, BROAD_0AND255 );
        CC1101SetSYNC( 0x8799 );
        WriteReg(CC1101_MDMCFG1,   0x72); //Modem Configuration
        
        WriteMultiReg(CC1101_PATABLE, PaTabel, 8 );
        
        i = ReadStatus( CC1101_PARTNUM );//for test, must be 0x80
    i = ReadStatus( CC1101_VERSION );//for test, refer to the datasheet
        
        CC1101SetTRMode(RX_MODE);
}


unsigned char PaTabel[8] = { 0xc0, 0xC8, 0x84, 0x60, 0x68, 0x34, 0x1D, 0x0E};

一周热门 更多>