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 with MS430F5529

Other Parts Discussed in Thread: CC1101, MSP430F5529

Hi,

I am trying to interface CC1101 with MSP430F5529. After writing SIDLE when I am checking TI_CC1101_MARCSTATE register to be idle, it is never becoming IDLE(0x01) or able to enter into RX state(RX). 

Please find below code snippets attached.

Please help me.

Please 

void FreqHoppingCalib(void)
{
UCHAR8_t ucChannelNo;

for(ucChannelNo=0; ucChannelNo < MAX_CHANNEL; ucChannelNo++)
{
REFRESH_WDT;
/*Set to Manual Calibration*/
TI_CC_SPIWriteReg(TI_CC1101_MCSM0 , 0x08); //MainRadio Cntrl State Machine
/*since forced calib can be performed only from idle mode.*/
TI_CC_SPIStrobe(TI_CC1101_SIDLE);

void TransmitByte()
{
unsigned char i;
//DISABLE_HARDWARE_INT;

TI_CC_SPIStrobe(TI_CC1101_SIDLE);
TI_CC_SPIStrobe(TI_CC1101_SFTX);
TI_CC_SPIStrobe(TI_CC1101_SFRX);


TI_CC_SPIStrobe(TI_CC1101_SRX);

//while(TI_CC_SPIReadStatus(TI_CC1101_MARCSTATE) != RX);

Delay(1);

SET_PA;
RESET_LNA;
// RESET_HGM;

TI_CC_SPIWriteBurstReg(TI_CC1101_TXFIFO,(unsigned char *)&g_ucDmaBuffer[0],PACKET_LENGTH);

for(i=0;i<5;i++)
{
TI_CC_SPIStrobe(TI_CC1101_STX); // Change state to TX

if(TI_CC_SPIReadStatus(TI_CC1101_MARCSTATE) == TX)
{
break; //keep issuing TX strobe until it enters TX state.
}
else
{
Delay(1);
}
}

if(i<5)
{
//while (!(TI_CC_GDO0_PIN));// Wait GDO0 to go hi -> sync TX'ed
//while (TI_CC_GDO0_PIN); // Wait GDO0 to clear -> end of pkt

if(TI_CC_SPIReadStatus(TI_CC1101_MARCSTATE) == TX_UNDERFLOW)
{
TI_CC_SPIStrobe(TI_CC1101_SFTX);
}


toggleLed(2);
}
else
{
TI_CC_SPIStrobe(TI_CC1101_SIDLE);
TI_CC_SPIStrobe(TI_CC1101_SFTX);
gstStsReg1.m_ucTxStateFlag=0;
}


TI_CC_SPIStrobe(TI_CC1101_SIDLE);
TI_CC_SPIStrobe(TI_CC1101_SFRX);
TI_CC_SPIStrobe(TI_CC1101_SRX);

SET_LNA;
SET_HGM;
RESET_PA;

//ENABLE_HARDWARE_INT;
}


while(TI_CC_SPIReadStatus(TI_CC1101_MARCSTATE) != IDLE);
/*switch to desired channel.*/
TI_CC_SPIWriteReg(TI_CC1101_CHANNR,ucChannelNo); // Channel number.;
/*force radio into calibtraion mode.*/
SCAL();
/*wait till calibration is over.*/
while(TI_CC_SPIReadStatus(TI_CC1101_MARCSTATE) != IDLE);
/*Set to Auto Calibration*/
TI_CC_SPIWriteReg(TI_CC1101_MCSM0 , 0x18); //MainRadio Cntrl State Machine
/*save FS calibration values.*/


g_ucFreqHopSCalib[ucChannelNo][0] = TI_CC_SPIReadStatus(TI_CC1101_FSCAL1);
g_ucFreqHopSCalib[ucChannelNo][1] = TI_CC_SPIReadStatus(TI_CC1101_FSCAL2);
g_ucFreqHopSCalib[ucChannelNo][2] = TI_CC_SPIReadStatus(TI_CC1101_FSCAL3);
}
}