📄 rfconfig.c
字号:
/******************************************************************************
* *
* ********** *
* ************ *
* *** *** *
* *** ++ *** *
* *** + + *** CHIPCON *
* *** + *
* *** + + *** *
* *** ++ *** *
* *** *** *
* ************ *
* ********** *
* *
*******************************************************************************
Filename: rfConfig.c
Target: cc1110
Author: EFU
Revised: 2/3-2006
Revision: 1.0
******************************************************************************/
#include "hal.h"
//-----------------------------------------------------------------------------
// See hal.h for a description of this function.
//-----------------------------------------------------------------------------
BOOL halRfConfig(UINT32 frequency)
{
BOOL status;
//Turning on crystal oscillator
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
// Setting the frequency
halRfSetRadioFrequency(frequency);
if (frequency < 1000000)
{
// 315 MHz band
if (frequency < 400000)
{
PA_TABLE0 = 0x63;
}
// 433 MHz band
else if (frequency < 800000)
{
PA_TABLE0 = 0x33;
}
// 868 MHz band
else if (frequency < 890000)
{
PA_TABLE0 = 0x66;
}
// 915 MHz band
else
{
PA_TABLE0 = 0x66;
}
// 250 kbps MSK setup (for other data rates or modulation formats, please see SmartRF Studio).
// --------------------------------------------------------------
// Dynamic packet length
PKTLEN = 0xFF;
PKTCTRL0 = 0x05;
// Append status
PKTCTRL1 = 0x84;
// IF frequency
FSCTRL1 = 0x0B;
//
// FSCTRL0 = 0x00;
// filter BW, data rate,
// MDMCFG4 = 0x0E;
MDMCFG4 = 0x2D;
MDMCFG3 = 0x3B;
// Modulation format, detection level
MDMCFG2 = 0x73;
MDMCFG1 = 0x42;
// MDMCFG1 = 0x22;
// Deviation setting
DEVIATN = 0x00;
// Calibration synth
MCSM0 = 0x10;
// Frequency offset compensation configuration
FOCCFG = 0x1D;
// Bit synchronization
BSCFG = 0x1C;
// AGC and front end settings (from SmartRf04)
AGCCTRL2 = 0xC7;
// AGCCTRL1 = 0x40;
AGCCTRL1 = 0x00;
AGCCTRL0 = 0xB2;
FREND1 = 0xB6;
FSCAL3 = 0xEA;
// Synth calibration
// FSCAL0 = 0x19;
FSCAL0 = 0x11;
// PA_TABLE0 = 0xC3;
// --------------------------------------------------------------
// Calibrating synth.
SIDLE();
SCAL();
while(MARCSTATE != 0x01);
INT_SETFLAG(INUM_RFTXRX,INT_CLR);
status = TRUE;
}
else {
status = FALSE;
}
return status;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -