⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv2_cc1000.c

📁 CC1000 Rf modem C codes for philips sLpc213X ARM MCU.
💻 C
📖 第 1 页 / 共 3 页
字号:
      PLLvalue=0x3F;
      break;
    case 'B' :
      regvalue=0x53;
      PLLvalue=0x3F;
      break;
    case 'C' :
      regvalue=0x55;
      PLLvalue=0x3F;
      break;
    case 'D' :
      regvalue=0x51;
      PLLvalue=0x3F;
      break;
    case 'E' :
      regvalue=0x54;
      PLLvalue=0x3F;
      break;
    case 'F' :
      regvalue=0x50;
      PLLvalue=0x3F;
      break;
*/
  }
  
  WriteToCC1000Register(CC1000_MODEM0,regvalue);
  WriteToCC1000Register(CC1000_TEST4, PLLvalue);
}

///////////////////////////////////////////////////////////////////////////////
// Configures all the CC1000 registers according to the values stored in EEPROM
void SetupCC1000All(void)
{ 
char counter;
char value;

  Uart0SendString("SetupCC1000All!");

//  for (counter=0x01;counter<=0x1C;counter++) {
  for(counter=CC1000_FREQ_2A;counter<=CC1000_PRESCALER;counter++){
    value=EEPROMCC1000Config[counter-1];
    WriteToCC1000Register(counter,value);
  }
  
//  for (counter=0x40;counter<=0x44;counter++) {
  for(counter=CC1000_TEST6;counter<=CC1000_TEST2;counter++){
    value=EEPROMCC1000Config[counter-CC1000_TEST6+CC1000_PRESCALER];
    WriteToCC1000Register(counter,value);
  }

  TxCurrent	= EEPROM_TxCurrent;		//be used in sending mode 
  RF_TxPll	= EEPROM_TxPll;			//

  RxCurrent	= EEPROM_RxCurrent;		//be used in receiving mode
  RF_RxPll	= EEPROM_RxPll;			//
}

/////////////////////////////////////////////////
// Lets the user select one of the default setups
void DefaultSettings(void)
{
char i;
  
  Uart0SendString("0:429.483164MHz");
  Uart0SendString("1:430.875231MHz");
  Uart0SendString("2:432.009508MHz");
  Uart0SendString("3:433.265314MHz,the old config");
  Uart0SendString("4:434.845200MHz");
  Uart0SendString("5:435.979477MHz");
  Uart0SendString("please put in the number of 0 to 5 to select the frequency:...");
  i=_getchar();
  
  switch (toupper(i)) {
  	case '0':
        for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig429_5[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL429_5;
        EEPROM_RxPll		=DefaultRXPLL429_5;
        Uart0SendString("RF run in 429.483164MHz");
        break;
    case '1':
        for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig431[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL431;
        EEPROM_RxPll		=DefaultRXPLL431;
        Uart0SendString("RF run in 430.875231MHz");
        break;
    case '2':
        for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig432[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL432;
        EEPROM_RxPll		=DefaultRXPLL432;
        Uart0SendString("RF run in 432.009508MHz");
        break;
    case '3':
        for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig433_3[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL433_3;
        EEPROM_RxPll		=DefaultRXPLL433_3;
        Uart0SendString("RF run in 433.265314MHz,the old config");
        break;
  	case '4':
        for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig434_6[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL434_6;
        EEPROM_RxPll		=DefaultRXPLL434_6;
        Uart0SendString("RF run in 434.845200MHz");
        break;
	case '5':
        for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig436[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL436;
        EEPROM_RxPll		=DefaultRXPLL436;
        Uart0SendString("RF run in 435.979477MHz");
        break;
        
/*        
    case '8':
        for (i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig868[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_868;
        EEPROM_RxCurrent	=RX_CURRENT_868;
        EEPROM_TxPll		=DefaultTXPLL868;
        EEPROM_RxPll		=DefaultRXPLL868;
        break;
        
    case '9':
        for (i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig905[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_868;
        EEPROM_RxCurrent	=RX_CURRENT_868;
        EEPROM_TxPll		=DefaultTXPLL905;
        EEPROM_RxPll		=DefaultRXPLL905;
        break;
        
*/
	default:
		for(i=0;i<33;i++) {
          EEPROMCC1000Config[i]=DefaultConfig433_3[i];
        }
        EEPROM_TxCurrent	=TX_CURRENT_433;
        EEPROM_RxCurrent	=RX_CURRENT_433;
        EEPROM_TxPll		=DefaultTXPLL433_3;
        EEPROM_RxPll		=DefaultRXPLL433_3;
        Uart0SendString("RF run in 433.265314MHz,the old config");
        break;
	
  }


  SetupCC1000All();		//set the above to cc1000 chip
}

//////////////////////////////////////////////////////
// Displays the configuration menu
void DisplayConfigMenu(void)
{

}

////////////////////////////////////////////////
// Handles keystrokes for the configuration menu
void HandleConfigMenu(char inputvalue)
{
  switch(toupper(inputvalue)){
//
    case 'D' : 
      DumpCC1000Regs();
      break; 
//
    case 'E' :
      SetRFDataRate();
      break;
//
    case 'F' :
      DefaultSettings();
      break;
//
    case 'C' :
				// calibrate in R mode
      	SetupCC1000TX(TxCurrent,RF_TxPll);
  		if(!CalibrateCC1000()){
	   		Uart0SendString("TX Calibration failed");
  		}else{
	    	Uart0SendString("TX Calibration success");
  		}
			  	// calibrate in R mode
		SetupCC1000RX(RxCurrent,RF_RxPll);
		if(!CalibrateCC1000()){
			Uart0SendString("RX Calibration failed");
  		}else{
			Uart0SendString("RX Calibration success");
		}
      break;
//
    case 'R' :
      RFtoRXmode();

      break;
//
    case 'T' :
      RFtoTXmode();

      break;    
//
    case 'L' :
		if(ReadFromCC1000Register(CC1000_LOCK)&0x01==1){
			Uart0SendString("PLL in lock");
    	}else{
			Uart0SendString("PLL out of lock");
    	}  
      break;
//      
    case 'X' :
      break;
//      
    default:
      DisplayConfigMenu();
      break;
  }
}

/////////////////////////////////////////////////////
// Runs the configuration menu
void RF_ManualConfig(void)
{
int i;
  DisplayConfigMenu();
 
  while(1) {

//	i=_getchar();
	i='E';

	if (toupper(i)=='X')	break;
	HandleConfigMenu(i);
	DisplayConfigMenu();

//	i=_getchar();
	i='X';

	if (toupper(i)=='X')	break;
	HandleConfigMenu(i);

	}  
}

/////////////////////////////////////////////////////////////
// print working state to screen
void PrintRF_Mode(void)
{
char dummy;

//	WriteLine("");
//	WriteLine("RF Modem ready");
//	WriteStr("Compiled ");	WriteStr(__DATE__);	WriteStr(" ");	WriteStr(__TIME__);	WriteLine("");

	dummy=ReadFromCC1000Register(CC1000_MODEM0);
	switch(dummy) {
/*
		case 0x07:
    		WriteStr("0.3kbit/s Manchester");
    		break;
    	case 0x03:
    		WriteStr("0.6kbit/s NRZ");
      		break;
    	case 0x17:
      		WriteStr("0.6kbit/s Manchester");
      		break;
    	case 0x13:
      		WriteStr("1.2kbit/s NRZ");
      		break;
    	case 0x27:
     		WriteStr("1.2kbit/s Manchester");
      		break;
    	case 0x23:
      		WriteStr("2.4kbit/s NRZ");
      		break;
    	case 0x37:
      		WriteStr("2.4kbit/s Manchester");
      		break;
*/
/*
    	case 0x33:
		 	WriteLine("");
			WriteLine("RF Modem ready");
      		WriteStr("4.8kbit/s NRZ");
      		RF_ModemState=ENABLE_FLAG;
      		break;
*/
    	case 0x47:
    		Uart0SendEnter();
			Uart0SendString("RF Modem ready");
      		Uart0SendString("4.8kbit/s Manchester");
      		RF_ModemState=ENABLE_FLAG;
      		break;
/*
    	case 0x43:
      		WriteStr("9.6kbit/s NRZ");
      		break;
    	case 0x57:
      		WriteStr("9.6kbit/s Manchester");
      		break;
    	case 0x53:
      		WriteStr("19.2kbit/s NRZ");
      		break;
    	case 0x55:
      		WriteStr("19.2kbit/s Manchester");
      		break;
    	case 0x51:
      		WriteStr("38.4kbit/s NRZ");
      		break;
    	case 0x54:
      		WriteStr("38.4kbit/s Manchester");
      		break;
    	case 0x50:
      		WriteStr("76.8kbit/s NRZ");
      		break;
*/
    	default:
//     		WriteStr("Invalid data rate");
			Uart0SendString("");
			Uart0SendString("RF_Modem ERROR");
			RF_ModemState=DISABLE_FLAG;
      		break;
  }
  		Uart0SendString("");
}  

/////////////////////////////////////////////////////////////
//// synchronization semaphore
void RF_makeSynFlag(void)
{

	RFt_outp=0;
	RFt_inp=0;				//all has been transmited
	RF_TxBitCounter=0;
	RF_TxCounter=0;

	// start semaphore

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -