CC2500: CC2500 Carrier Sense

Part Number: CC2500

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?

  • 您好

    关于这个官方没有针对性资料参考

    官方提供以下代码例程请您参考

    https://www.ti.com.cn/tool/cn/download/SLAC139

    www.ti.com.cn/.../SWRC021

  • #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值的变化呢?以下是我相关的配置与代码。

  • 您好

    感谢您回复!

    十分高兴我们官方资料能给与您相关的帮助,如果您有新的问题请重新发帖。