📄 drv2_cc1000.c
字号:
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 + -