CC2500: CC2500 读取RSSI

Part Number: CC2500

你好,我在尝试通过寄存器读取RSSI的值时,当我另一台设备开始在同一频段工作发送信号时,当前的设备CC2500读取到的RSSI值从-59dB变成-19dB,但是就一直维持在这个值没有再发生变化了,即使是我关闭了另一台CC2500的设备。请问我应该怎么配置CC2500才能使其可以连续正常的读取RSSI值的变化呢?以下是我相关的配置与代码。

#define CCxx0x_SRX          0x34
#define CCxx0x_RSSI         0x34

static const C25RegisterSetting_t C25PreferredSettings[]= 
{
    {CCxx0x_IOCFG2,            0x29},
	{CCxx0x_IOCFG1,            0x2E},
	{CCxx0x_IOCFG0,            0x06},
	{CCxx0x_FIFOTHR,           0x07},
	{CCxx0x_SYNC1,             0xD3},
	{CCxx0x_SYNC0,             0x91},
	{CCxx0x_PKTLEN,            0xFF},
	{CCxx0x_PKTCTRL1,          0x04},
	{CCxx0x_PKTCTRL0,          0x05},
	{CCxx0x_ADDR,              0x00},
	{CCxx0x_CHANNR,            0x00},
	{CCxx0x_FSCTRL1,           0x06},
	{CCxx0x_FSCTRL0,           0x00},
	{CCxx0x_FREQ2,             0x5D},
	{CCxx0x_FREQ1,             0x93},
	{CCxx0x_FREQ0,             0xB1},
	{CCxx0x_MDMCFG4,           0x88},
	{CCxx0x_MDMCFG3,           0x93},
	{CCxx0x_MDMCFG2,           0x13},
	{CCxx0x_MDMCFG1,           0x22},
	{CCxx0x_MDMCFG0,           0xF8},
	{CCxx0x_DEVIATN,           0x34},
	{CCxx0x_MCSM2,             0x07},
	{CCxx0x_MCSM1,             0x30},
	{CCxx0x_MCSM0,             0x18},
	{CCxx0x_FOCCFG,            0x16},
	{CCxx0x_BSCFG,             0x6C},
	{CCxx0x_AGCCTRL2,          0x43},
	{CCxx0x_AGCCTRL1,          0x40},
	{CCxx0x_AGCCTRL0,          0x91},
	{CCxx0x_WOREVT1,           0x87},
	{CCxx0x_WOREVT0,           0x6B},
	{CCxx0x_WORCTRL,           0xF8},
	{CCxx0x_FREND1,            0x56},
	{CCxx0x_FREND0,            0x10},
	{CCxx0x_FSCAL3,            0xA9},
	{CCxx0x_FSCAL2,            0x0A},
	{CCxx0x_FSCAL1,            0x00},
	{CCxx0x_FSCAL0,            0x11},
	{CCxx0x_RCCTRL1,           0x41},
	{CCxx0x_RCCTRL0,           0x00},
	{CCxx0x_FSTEST,            0x59},
	{CCxx0x_PTEST,             0x7F},
	{CCxx0x_AGCTEST,           0x3F},
	{CCxx0x_TEST2,             0x88},
	{CCxx0x_TEST1,             0x31},
	{CCxx0x_TEST0,             0x0B},
}

int8_t CC2500_Get_RX_dBm(unsigned char _ucRssi)
{
    int16_t sData=_ucRssi;
	// 取绝对值
    if(_ucRssi>=128)
	{
		sData = (int16_t)(_ucRssi - 256)/2 - 74;
	}
	else
	{
		sData = (_ucRssi/2) - 74;
	}	
	
	if(sData < -128)
	{
		sData = -128;
	}
    return sData;                                     // 计算RSSI值
}

int8_t CC2500_ReadReg_RSSI()
{
	uint8_t nRet;
	// 进入接收模式
	CC2500_Strobe(CCxx0x_SRX); 
	// 等待稳定
	delay_ms(1);
	// 读取信号强度寄存器
	nRet = CC2500_ReadReg(CCxx0x_RSSI);

	return CC2500_Get_RX_dBm(nRet);
}