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.

CC1101 transmit error

Other Parts Discussed in Thread: CC1101

I am trying to send one byte of data using the CC1101 and then put it back in sleep state.  I have the following code set up to handle the calibration, transmission and sleep,

void send_data(void)
{
	CSn = 0;
	while (SDI);

	SSPBUF = SIDLE;
	while(BF == 0);

	SSPBUF = SCAL;
	while (BF == 0);

	__delay_us (800);


	SSPBUF = 0x3F;					//Single byte written to the TX FIFO
	while (BF == 0);

	SSPBUF = 0x04;					//write data
	while (BF == 0);				//wait for SPI buffer to empty

	SSPBUF = STX;
	while (BF == 0);
	__delay_us (4);

	SSPBUF = SPWD;
	while (BF == 0);

	CSn = 1;
}

I can see something is being transmitted using a spectrum analyzer and the status bytes I see on the SPI lines for each command sent are always 0x0F (IDLE state and at least 15 bytes available) except at the SPWD command, the status changes to SETTLING state but still with at least 15 bytes available.

 

I followed the settings recommended in the SmartRF studio and believe the registers were all successfully configured.  Am I missing a necessary delay somewhere or is there some other order the above commands need to be in? 

Any guidance would be most appreciated!

 

  • I noticed the spectrum analyzer has a lot of "flickering" to the signal it's picking up. I thought maybe this was normal but when I reduce the commands to: IDLE, STX, SPWD (run in a continuous loop separated by a 2ms delay)....the signal that appears on the spectrum analyzer appears much more stable/constant. When doing this, the status byte will indicate that the transceiver entered transmit mode; however, the point at which the status indicates transmit is during the IDLE command strobe.