CC1101 接收电流过大问题
在配置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烧坏了?