微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1101 接收电流过大问题

CC1101 接收电流过大问题

时间:12-22 整理:3721RD 点击:

在配置CC1101为接收模式时,产品的总电流为33mA,经验证CC1101的电流大约有30mA。

我采用的是异步串口输出模式(Asynchronous serial mode),接收到的数据直接从GDO2输出,再用MCU解码。频率为457.6MHz,数据的速率为512Bit/s,频宽为10KHz,接收灵敏度大约要有-80dBm(由于产品需要,发射的参数已经固定了,只用CC1101开发接收机)。

接收没问题,只是接收时的电流过大,有30mA,跟规格书上的15mA左右有较大的差异。

请问: 如何减小接收时的电流?以下配置是根据SmartRfStudio给出的。还有睡眠和唤醒时的指令。

    Write_CC1101_Reg(IOCFG2,0x0D);//Serial Data Output. Used for asynchronous serial mode
    Write_CC1101_Reg(IOCFG1,0x2E);//High impedance(3-state)
    Write_CC1101_Reg(IOCFG0,0x2E);//High impedance(3-state)
    
    Write_CC1101_Reg(FIFOTHR,0x47);
   
    Write_CC1101_Reg(SYNC1,0xD3);
    Write_CC1101_Reg(SYNC0,0x91);
   
    Write_CC1101_Reg(PKTLEN,0xFF);//Packet Length
    Write_CC1101_Reg(PKTCTRL1,0x00);
    Write_CC1101_Reg(PKTCTRL0,0x32);//Synchronous serial mode,Infinite packet length mode
   
    Write_CC1101_Reg(ADDR,0x00);
    Write_CC1101_Reg(CHANNR,0x00);
    Write_CC1101_Reg(FSCTRL1,0x06);
    Write_CC1101_Reg(FSCTRL0,0x29);  //frequency offset (normal)
   
    Write_CC1101_Reg(FREQ2,(u8)((0x00FF0000&lulFrequency)>>16));
    Write_CC1101_Reg(FREQ1,(u8)((0x0000FF00&lulFrequency)>>8));
    Write_CC1101_Reg(FREQ0,(u8)(0x000000FF&lulFrequency));
    Write_CC1101_Reg(MDMCFG4,0xF4);
    Write_CC1101_Reg(MDMCFG3,0x4A);
    Write_CC1101_Reg(MDMCFG2,0x00);
    Write_CC1101_Reg(MDMCFG1,0x00);
    Write_CC1101_Reg(MDMCFG0,0x00);
   
    Write_CC1101_Reg(DEVIATN,0x15);//0x00);
   
    Write_CC1101_Reg(MCSM2,0x07);
    Write_CC1101_Reg(MCSM1,0x30);
    Write_CC1101_Reg(MCSM0,0x18);
   
    Write_CC1101_Reg(FOCCFG,0x16);
    Write_CC1101_Reg(BSCFG,0x6C);
   
    Write_CC1101_Reg(AGCCTRL2,0x03);//0x38);//0x40);
    Write_CC1101_Reg(AGCCTRL1,0x40);
    Write_CC1101_Reg(AGCCTRL0,0x91);
   
    Write_CC1101_Reg(WOREVT1,0x87);
    Write_CC1101_Reg(WOREVT0,0x6B);
    Write_CC1101_Reg(WORCTRL,0xF8);
   
    Write_CC1101_Reg(FREND1,0x56);
    Write_CC1101_Reg(FREND0,0x10);
   
    Write_CC1101_Reg(FSCAL3,0xE9);
    Write_CC1101_Reg(FSCAL2,0x2A);
    Write_CC1101_Reg(FSCAL1,0x00);
    Write_CC1101_Reg(FSCAL0,0x1F);
   
    Write_CC1101_Reg(RCCTRL1,0x41);
    Write_CC1101_Reg(RCCTRL0,0x00);
   
    Write_CC1101_Reg(FSTEST,0x59);
    Write_CC1101_Reg(PTEST,0x7F);
    Write_CC1101_Reg(AGCTEST,0x3F);
   
    Write_CC1101_Reg(TEST2,0x81);
    Write_CC1101_Reg(TEST1,0x35);
    Write_CC1101_Reg(TEST0,0x09);

    Write_CC1101_Com(SFRX);
    Write_CC1101_Com(SFTX);
    Write_CC1101_Com(SIDLE);

    CC1101_WakeUp();

void CC1101_Sleep(void)
{
    Write_CC1101_Reg(MCSM1,0x00);
    Delay_Ms(1);
    Write_CC1101_Com(SIDLE);
    Delay_Ms(1);
    Write_CC1101_Com(SXOFF);
    Delay_Ms(1);
    Write_CC1101_Com(SPWD);
    CSN_HIGH;
}

void CC1101_WakeUp(void)
{
    u8 lucWakeUpState;
    do
    {
        Write_CC1101_Com(SRX);
        lucWakeUpState = Read_CC1101_Reg(MARCSTATE);
    }
    while(lucWakeUpState != RX);
    Delay_Ms(200);
    Write_CC1101_Com(SRX);

}

没人解答一下么?

建议使用TI的代码进行测试,寄存器先从SmartRF里面选择一个典型配置,里面有选择灵敏度优先和电流优先两种,如果是灵敏度优先的话电流大约为18mA,电流优先时才15mA

        配置了电流优先之后,电流确实减少了2mA - 3mA, 但是接收电流还有接近30mA,接收灵敏度和波特率都做过调整,结果都没有明显的改善。

会不会是硬件的问题?我用的是3V供电,但是MCU烧写电压值瞬间会达到12V,会不会有可能在烧写MCU时把IC烧坏了?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top