0xf8, // Delay register2
// Crystal turn on delay 2.5ms // AGC delay 40us
// RSSI measurement delay 10us //0x18 register
0x26, // RX register
// Demodulator filter bandwidth = 1M // Demodulator gain select * 3 // BPF bandwidth 500khz // Up side band select
// 0x36, // AFC = 1,frequency compensation select (auto) //0x19 register
0x80, // RX gain register1, 手动校验VGA, PGA gain 12db,mixer gain 24db, LNA gain 24db
//0x1a register
0x80, // RX gain register2, VGA calibrate upper limit target //0x1b register
0x00, // RX gain register3, VGA calibrate lower limit target
//0x1c register
0x0e, // RX gain register4, VGC calibrate continues until ID code word is received
// Mixer current select 1.2mA // LNA current select 2.0mA //0x1d register
0x32, // RSSI register RSSI 50 //0x1e register
0xc3, // ADC register //0x1f register
// 0x0f, // CODE register1, ID length 4 bytes, preamble length 4 bytes // 0x4f, // open manchester 0x5f, // open manchester, FEC //0x20 register
0x12, // CODE register2, //0x21 register
0x00, // CODE register3, //0x22 register
0x00, // IF calibration1, auto calibration IF //0x23 register
0x00, // IF calibration2, read only
//0x24 register
0x00, // VCO current calibration register //0x25 register
0x00, // VCO Single band calibration register1
// auto calibration //0x26 register
31
0x3a, // VCO Single band calibration register2 // REGA = 1.1V,VCO tuning voltage =0.3V //0x27 register
0x00, // battery register default //0x28 register
0x17, // TX test register default //0x29 register
0x47, // RX DEM test registe1 default //0x2a register
0x80, // RX DEM test register2 defalut //0x2b register
0x01, // charge pump current register // charge pump curretn = 1.0mA //0x2c register
0x05, // Crystal test register default //0x2d register
0x45, // PLL TEST register default //0x2e register
//0x2f register
0x00, // VCO test register2 default //0x30 register
0x01, // IFAT register default
0x18, // VCO test register1 default
//0x31 register
0x0f, // RScale register RSSI tuning scale default
//0x32 register
0x00 // Filter test register default };
/**************************************************************** name: ini rf input: none output: none
describe: 初始化A7105 notice:
creat date: 2009-5 creator:
****************************************************************/ void ini_rf(void) {
set_rf_io();
A7105_reset_chip(); delay_2us(50000); A7105_write_ID(); A7105_config_chip(); A7105_calibration();
32
A7105_setup_channel(3); A7105_setup_wpll(); delay_2us(100); A7105_entry_rx(); }
// 接收状态
/**************************************************************** name: A7105_config_chip input:
none
output: none describe: 配置A7105 notice: creat date:
2009-5
creator:
****************************************************************/ void A7105_config_chip(void) {
U8 i = 0;
// 0x00 mode register, for reset // 0x05 fifo data register
// 0x06 id code register
// 0x23 IF calibration II, only read // 0x32 filter test register for(i=0x01; i<=0x04; i++)
{
A7105_write_register(i,A7105_Default_Par[i]); } {
A7105_write_register(i,A7105_Default_Par[i]); } {
for (i=0x24; i<=0x31; i++) for(i=0x07; i<=0x22; i++)
A7105_write_register(i,A7105_Default_Par[i]); }
}
/**************************************************************** name: set_rf_io input: none output: none
describe: 上电时设置RF的I/O口方向及状态 notice: creat date: 2009-5 creator:
****************************************************************/ void set_rf_io(void)
33
{
RF_SCK_LOW(); RF_SDIO_LOW(); RF_SCS_HIGH(); RF_TX_PA_OFF(); }
RF_GPIO1_INPUT();
/******************************************************* name: input:
A7105_calibration none
output:
describe: 校验A7105
notice:1. RF 上电后一定要调用该程序对VCO进行校验2. 校验时需在 stby 状态 creat date:
2009-5
creator:
********************************************************/ void A7105_calibration(void) {
U8 temp = 0; // standby状态下校准IF
A7105_entry_stby();
A7105_write_register(RF_REG_CALIBRATION,0x01); do
{
temp = A7105_read_register(RF_REG_CALIBRATION); temp &= 0x01; }while(temp);
temp = A7105_read_register(RF_REG_IF_CALIBRATION1); temp &= 0x10; if(temp)
{
// 校准出错
}
// anual vco current band 3,vco band 1
A7105_write_register(RF_REG_VCO_CURRENT_CAL,0x13); A7105_write_register(RF_REG_VCO_BAND_CAL1,0x09); A7105_entry_stby();
}
/*************************************************** name: input: output: Describe: RFNotice: creat date:
A7105_entry_stby none none
进入等待模式 2009-5
34
creator:
***************************************************/ void A7105_entry_stby(void)
{
A7105_write_command(RF_CMD_STBY); delay_2us(100); }
/*************************************************** name: input:
A7105_setup_wpll none
output: none Describe: Notice:
creat date: 2008-7-20
creator:
***************************************************/ void A7105_setup_wpll(void) {
A7105_write_command(RF_CMD_PLL);
}
/*************************************************** name: A7105_setup_channel input: channel RF工作通道 output: none
Describe: 设置RF的工作频率 Notice:
creat date: 2008-8-7 creator: dengyihong
***************************************************/ void A7105_setup_channel(U8 channel)
{
A7105_write_register(RF_REG_PLL1,channel);
}
/*************************************************** name: input:
A7105_setup_data_rate
data_rate_cnt 要写入A7105的速率参数
output: none
Describe: 设置A7105的速率 Notice:
creat date: 2008-8-8 creator:
***************************************************/ void A7105_setup_data_rate(U8 data_rate_cnt) {
A7105_write_register(RF_REG_DATA_RATE,data_rate_cnt);
35