你好,我在尝试通过寄存器读取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);
}