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.

CC1121 Data is not being received.

Other Parts Discussed in Thread: CC1121

Dear Sir Madam

We are working on CC1121 which is interfaced to 8051 core microcontroller. 

The Transmission is seems OK as we are getting the GPIO status while transmission of Data.

But we are not getting the data at receiver end.

Can you please help to support here.

Attached is the RF receiver.c and transmitter.c file.

#include <N78E059A.H>
#include <TA6932.h>
#include "typedef.h"
#include "intrins.h"
#include "CC1121_REG_DEFINATION.H"
#include "RF_FUNCTION.H"
#include "RF_SPI_FUNC.H"

#define	BLANK_NO_DIGIT								0
#define	BLANK_1_DIGIT									1
#define	BLANK_2_DIGIT									2
#define	BLANK_3_DIGIT									3
#define	BLANK_4_DIGIT									4
#define	BLANK_5_DIGIT									5
#define	FULL_MESSAGE									6
#define	HALF_MESSAGE									3
#define	SHOW_NEGATIVE									1
#define	HIDE_NEGATIVE									0
#define	SHOW_DP												1
#define	HIDE_DP												0
#define	FULL_INTENSITY								1
#define DIM_INTENSITY									0
#define DISPLAY_BLANK									0x2A
#define	DISPLAY_DASH									0x29
#define NO_OF_DIGIT 									6
#define	SHOW													1
#define	HIDE						              0
#define	BUZZER_ON									BUZZER = 0;
#define	BUZZER_OFF								BUZZER = 1;
#define	PAGE_SIZE											255

//************************************* RF RELATED MEMORY LOCATIONS DECLARATIONS
#define	NVM_RF_PAGE										0x0F						
#define NVM_RF_PAGE_START_ADDRESS			0xFF00
#define NVM_RF_DATA_LENGTH						11      //time being 47	
#define	NVM_RF_SIGNATURE							0xAA
#define NVM_RF_SIGNATURE_ADDRESS_LOC	0x00
#define	NVM_RF_CONFIG_START_LOC				0x01
#define NVM_RF_PACKET_LENGTH_LOC			0x07
#define	NVM_RF_COMM_ADDRESS_LOC				0x0A
//************************************* END OF RF RELATED MEMORY LOCATION DECLARATION


sbit 	DISP_6932_DT 			= 	P0^0;
sbit 	DISP_6932_CLK 		= 	P0^1;
sbit 	DISP_6932_STR 		= 	P0^2;
sbit	RF_CS							=		P1^4;
sbit	RF_MOSI						= 	P1^5;
sbit	RF_MISO						=		P1^6;
sbit	RF_SCLK						=		P1^7;
sbit	BUZZER					=		P2^0;																				// 	"0" = Buzzer ON , "1" = Buzzer OFF


idata DISPLAY_DIG DISPLAY;
extern code unsigned char CONFIG_ARRAY_NORMAL[47] ;
extern code unsigned char CONFIG_ARRAY_EXTENDED[64];

unsigned char bdata DP_REG _at_ 0x20;
sbit 	DP_LED						= DP_REG^0;
sbit	DP_SSD6						=	DP_REG^1;//6
sbit	DP_SSD5						=	DP_REG^2;//5
sbit	DP_SSD4						=	DP_REG^3;//4
sbit	DP_SSD3						=	DP_REG^4;//3
sbit	DP_SSD2						=	DP_REG^5;//2
sbit	DP_SSD1						=	DP_REG^6;//1
sbit	DP_BLANK					=	DP_REG^7;

unsigned char bdata LED_REG  _at_ 0x22;
sbit	LED_BATT					=	LED_REG^1;																		//	"1" = LED is ON	,	"0" = LED is OFF
sbit	LED_ZERO					=	LED_REG^3;																		//	"1" = LED is ON	,	"0" = LED is OFF
sbit	LED_TARE					=	LED_REG^6;	                                  //	"1" = LED is ON	,	"0" = LED is OFF
sbit	LED_LITER					=	LED_REG^0;																		//	"1" = LED is ON	,	"0" = LED is OFF	//LED_COUNT
sbit	LED_HOLD					=	LED_REG^4;																		//	"1" = LED is ON	,	"0" = LED is OFF

//sbit	LED_BATT					=	LED_REG^1;																		//	"1" = LED is ON	,	"0" = LED is OFF
//sbit	LED_ZERO					=	LED_REG^3;																		//	"1" = LED is ON	,	"0" = LED is OFF
//sbit	LED_TARE					=	LED_REG^6;																		//	"1" = LED is ON	,	"0" = LED is OFF
sbit	LED_COUNT					=	LED_REG^7;																		//	"1" = LED is ON	,	"0" = LED is OFF

bit RF_PRESENT , INTENSITY;						
unsigned char RF_DEVICE_ADDRESS;

xdata unsigned char BUFFER[255] ;

void main(void)
{
	RF_DEVICE_ADDRESS = 0x05;
	INIT_DISPLAY ();	
  FILL_DISPLAY (0x08 , SHOW_DP);
	DELAY(5000);
	CLEAR_BUFFER();
  	
//	NVM_WRITE_RF_PARAMETERS();
//  CHECK_RF_AND_CONFIGURE ();
// 	DELAY(5000);

	if(INIT_CC1121())
		PROCESS_RF_ERROR ();
 	RAM_TEST();

	PACKET.COMMUNICATION_ADDRESS = RF_DEVICE_ADDRESS;
	PACKET.SLAVE_OPERATION_COMMAND = SLAVE_COMMAND_NORMAL_OPERATION;
	CLEAR_BUFFER();
 CONVERT_TO_DECIMAL_AND_DISPLAY (123456 , 4 , 1 , 0);
	while(1)
	{
		TRANSMIT_DATA ();
		DELAY(50000);
	}
}


void FILL_DISPLAY (unsigned char DATA , bit SHOW_HIDE_DP)
{
	unsigned char SAVE_DP = DP_REG;
	if(!SHOW_HIDE_DP)
		DP_REG = 0;
	DISPLAY.SSD1 = DATA ;
	DISPLAY.SSD2 = DATA ;	
	DISPLAY.SSD3 = DATA ;	
	DISPLAY.SSD4 = DATA ;
	DISPLAY.SSD5 = DATA ;	
	DISPLAY.SSD6 = DATA ;
	DISPLAY.LED = LED_REG;
	SHOW_DISPLAY ();
	DP_REG = SAVE_DP;
}

void SHOW_DISPLAY (void)
{	
	DISPLAY.LED = LED_REG;
		SHOW_6932_DISPLAY ();
}


// void CHECK_RF_AND_CONFIGURE (void)
// {
// 	INIT_CC1121 ();
// // 	if(RF_PRESENT)
// // 	{
// // 		if(NVM_BYTE_READ (NVM_RF_PAGE_START_ADDRESS + NVM_RF_SIGNATURE_ADDRESS_LOC) != NVM_RF_SIGNATURE)	
// // 			NVM_WRITE_RF_PARAMETERS ();																						
// // 		NVM_READ_LOAD_RF_PARAMETERS ();																				
// // 		INIT_CC1101 ();
// // 	}



// 	_nop_();
// }


bit INIT_CC1121 (void)
{
	if( CC1121_SPI_REG_SEND_STROBE (cc1121_SRES) )
		return (1);
	if( CC1121_SPI_WRITE (0 , CONFIG_ARRAY_NORMAL , sizeof(CONFIG_ARRAY_NORMAL) ))	
		return(1);
	
	if( CC1121_SPI_WRITE (0x2F00 , CONFIG_ARRAY_EXTENDED , sizeof(CONFIG_ARRAY_EXTENDED) ))	
		return(1);

//	manualCalibration();
	return (0);
}


//void NVM_WRITE_RF_PARAMETERS (void)
//{
//	xdata unsigned char i = 0 , *PTR = &CC1121_CONFIGURATION;
//	CLEAR_BUFFER();
////  	BUFFER[i] = 0X12; //NVM_RF_SIGNATURE;
//	for(i = 0; i <= NVM_RF_DATA_LENGTH ; i++)
//	 {BUFFER[i] = *(PTR + i);} //- 1);
//// 	ERASE_DATA_FLASH_PAGE (NVM_RF_PAGE);
//// 	WRITE_TO_NVM (BUFFER , NVM_RF_PAGE_START_ADDRESS , NVM_RF_DATA_LENGTH + 1 );
//}
/*
void NVM_WRITE_RF_PARAMETERS (void)
{
	xdata unsigned char i = 0 , *PTR = &CC1101_CONFIGURATION;
	CLEAR_BUFFER();
	BUFFER[i] = NVM_RF_SIGNATURE;
	for(i = 1; i <= NVM_RF_DATA_LENGTH ; i++)
	 BUFFER[i] = *(PTR + i - 1);
	ERASE_DATA_FLASH_PAGE (NVM_RF_PAGE);
	WRITE_TO_NVM (BUFFER , NVM_RF_PAGE_START_ADDRESS , NVM_RF_DATA_LENGTH + 1 );
}

void NVM_READ_LOAD_RF_PARAMETERS (void)
{
	READ_FROM_NVM (BUFFER , NVM_RF_PAGE_START_ADDRESS + NVM_RF_CONFIG_START_LOC  , NVM_RF_DATA_LENGTH );
	RF_DEVICE_ADDRESS = BUFFER[NVM_RF_COMM_ADDRESS_LOC - 1];
}

void READ_MODIFY_WRITE_RF_ADDRESS (unsigned char MASTER_ADDRESS)
{
	CLEAR_BUFFER ();
	READ_FROM_NVM (BUFFER , NVM_RF_PAGE_START_ADDRESS , PAGE_SIZE);
	BUFFER[(unsigned char)(NVM_RF_PAGE_START_ADDRESS + NVM_RF_COMM_ADDRESS_LOC)] = MASTER_ADDRESS;
	ERASE_DATA_FLASH_PAGE (NVM_RF_PAGE);
	WRITE_TO_NVM (BUFFER , NVM_RF_PAGE_START_ADDRESS , PAGE_SIZE );
	RESTART_MICROCONTROLLER ();
}

void RESTART_MICROCONTROLLER (void)
{
	TA = 0xAA;
	TA = 0x55;
	CHPCON &= 0xFD;					
	TA = 0xAA;
	TA = 0x55;
	CHPCON |= 0x80;
}

*/

void DELAY (unsigned long i)
{
	while(i)
		i--;
}

void RAM_TEST (void)
{	
	unsigned char i;
	for( i=0 ; i < 10 ; i++ )
	{
		DISPLAY.SSD1 = i;
		DISPLAY.SSD2 = i;
		DISPLAY.SSD3 = i;
		DISPLAY.SSD4 = i;
		DISPLAY.SSD5 = i;
		DISPLAY.SSD6 = i;
		SHOW_DISPLAY ();
		DELAY(5000);
		BUZZER_ON		
		DELAY(8000);
		BUZZER_OFF
	}
}

void CLEAR_BUFFER (void)
{
	unsigned char i;
	for(i=0;i<PAGE_SIZE;i++)
		BUFFER[i] = 0xFF;	
}


void CONVERT_TO_DECIMAL_AND_DISPLAY (unsigned long HEX_VALUE , unsigned char NO_OF_BLANK , bit DISPLAY_YES_NO , bit NEG_YES_NO)					//long	// Routine to Convert FARE to DECIMAL and DISPLAY
{
	
	unsigned char DIG[NO_OF_DIGIT];
	unsigned char CN;
	
 	for(CN = 0 ; CN < NO_OF_DIGIT ; CN++)
 	{
 		DIG[CN] = HEX_VALUE % 10;
 		HEX_VALUE /= 10; 
 	}
	if(NO_OF_BLANK)
	{	
		for(CN = NO_OF_DIGIT-1 ; CN > (NO_OF_DIGIT - 1 - NO_OF_BLANK) ; CN--)					// Leading Zero Blanking Loop
		{	
			if(((CN == NO_OF_DIGIT-1) && (DIG[CN] == 0)) || ((DIG[CN] == 0)&&(DIG[CN+1] == DISPLAY_BLANK)))
				DIG[CN] = DISPLAY_BLANK;
		}
	}
	DISPLAY.SSD1 = DIG[0];
	DISPLAY.SSD2 = DIG[1];
	DISPLAY.SSD3 = DIG[2];
	DISPLAY.SSD4 = DIG[3];
	DISPLAY.SSD5 = DIG[4];
	DISPLAY.SSD6 = DIG[5];
	if(DISPLAY_YES_NO)
		SHOW_DISPLAY ();	
}

void PROCESS_RF_ERROR (void)
{
	DISPLAY.SSD1 = DISPLAY_BLANK;
	DISPLAY.SSD2 = 0x1A;
	DISPLAY.SSD3 = 0x0F;
	DISPLAY.SSD4 = 0x0E;
	DISPLAY.SSD5 = 0x1A;
	DISPLAY.SSD6 = 0x1A;
		SHOW_DISPLAY ();	
	while(1);
}
RECEIVER_MAIN.C