This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to disable carrier sense in CC1101

Other Parts Discussed in Thread: CC1101, CC1100

Hi,

I am programming a device using CC1101.

I am doing the program of the mutual communication between the master and the slave.

Carrier sense was frequently observed on multiple boards on the slave unit side using a CPU debugger.

I tried to stop the career sense function as follows to investigate the problem.

////before////

{CC1100_REG_AGCCTRL1,0x50},
{CC1100_REG_AGCCTRL2,0x03}, // CS thrthold about 61dBm add 2018/03/13

////after////

{CC1100_REG_AGCCTRL1,0x48},
{CC1100_REG_AGCCTRL2,0x00}, // CS cariier sense disabled add 2019/03/14


Then, although it was possible to confirm that the transmission radio wave was output by the spectrum analyzer, Slave Unit could not receive any reply signal from the master unit at all.


Please tell me the register (AGCCTRL1 , AGCCTRL2 and so on) setting to disable only the carrier sense function.

Thanks.

  • To disable carrier sense you need to set MSCM1.CCA_MODE = 0 (Always indicate the channel as available)

    BR

    Siri
  • Hi Siri,
    Thank you for your reply.

    Please let me ask you one more question.

    Is this code still able to detect carrier sense even if MSCM1.CCA_MODE is cleared?

    In fact, I have already confirmed that MSCM1.CCA_MODE is always cleared.
    However, there are times when it is confirmed by the debugger that the operation showing carrier sense detection of the following code is done.

    Is this possible when MSCM1.CCA_MODE is cleared?

    best regards

    Thanks

    
    u8 cc1101_tx(u8 * data , u8 length,u8 th,u8 chSearchModeActive,u8 searchCh)
    {
    	int i;
    
    
    	cc1100_cmd_idle();
    
    	set_freq(chSearchModeActive,searchCh);
    
    	cc1101_rtx_reg_set(1); // rx
    	//led_flasher(10,500);
    	cc1101_carrier_wave_setup();
    	cc1100_cfg_gdo0(0x0e);
    
    	cc1100_cmd_idle();
    	cc1100_cmd_flush_rx();
    	cc1100_cmd_calibrate();
    	cc1100_cmd_rx();
    
    	PORTA.PIN2CTRL = 0x18; // pullup , both edge
    
    	delay_ms(10);
    
    	if(PORTA.IN & 0x04)
    	{
    		cc1100_cmd_idle();
    
    		if(th == 0)
    		{
    			return CARRIER_SENSE_DETECT;
    		}
    
    	}
    
    	PORTA.PIN2CTRL = 0x00;
    
    
    	cc1101_rtx_reg_set(0);
    	cc1101_carrier_wave_setup();
    	cc1100_cmd_idle();
    	cc1100_cmd_calibrate();
    	tx_fifo_write(data,length);
    
    	cc1100_write_reg(CC1100_REG_MCSM1,0x00);
    	cc1100_cfg_gdo0(0x09);
    
    
    
    	cc1100_cfg_gdo0(CC1100_GDOx_SYNC_WORD);
    	cc1100_cmd_tx();
    	while(!get_gdoa());	//data send start
    	while(get_gdoa());		//data send end
    
    
    	return 1;
    }
    

  • Setting CCA mode to 0 simply means that the CCA is not used to anything (you will always transmit even if the channel is BUSY). However, the Carrier Sense signal can still be output on a GDO pin, and will high in RX mode, if the CS is above the threshold you have programmed.

    Siri