Hello, I recently want to use the CC2500 to read Carrier Sense information and detect the impact of environmental noise on CC2500 communication. How should I configure the CC2500 to achieve this function?
#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); }
你好,非常感谢您提供的例程,具有很大的参考价值。但是我根据例程在尝试通过寄存器读取RSSI的值时,当我另一台设备开始在同一频段工作发送信号时,当前的设备CC2500读取到的RSSI值从-59dB变成-19dB,但是就一直维持在这个值没有再发生变化了,即使是我关闭了另一台CC2500的设备。请问我应该怎么配置CC2500才能使其可以连续正常的读取RSSI值的变化呢?以下是我相关的配置与代码。