#include <c8051f120.h>
#include <define.h>
#include <DASET.h>
#include <PortRedefine.h>
#include <General.h>
#include <RFBoardINIT.h>
#include <Config.h>
/**********************************************************************************************/
/******************ADC2相关配置程序************************************************************/
/**********************ADC2通道选择**************/
void ADC2_MUX(Byte Type,Byte Source)
{//type 配置测量方式为差动还是单端输入
//source 为ADC2通道选择(共有8个通道)
Byte PageCache = SFRPAGE;
/*****************************/
SFRPAGE = ADC2_PAGE;
AMX2CF = Type;
AMX2SL = Source;
/*****************************/
SFRPAGE = PageCache;
}
void ADC2_source(Byte source)
{
Byte PageCache = SFRPAGE;
/*****************************/
SFRPAGE = ADC2_PAGE;
AMX2SL = source;
/*****************************/
SFRPAGE = PageCache;
}
/**************配置p1口模拟输入管脚**************/
void AnalogPort_Init(Byte port)
{
Byte PageCache = SFRPAGE;
/*****************************/
SFRPAGE = CONFIG_PAGE;
P1MDIN &= ~port;//将相应管脚配置成模拟输入口
/*****************************/
SFRPAGE = PageCache;
}
void ADC2_Window(Byte Up,Byte Down)
{
Byte PageCache = SFRPAGE;
/*****************************/
SFRPAGE = ADC2_PAGE;
ADC2GT = Up;
ADC2LT = Down;
AD2WINT=0;
/*****************************/
SFRPAGE = PageCache;
}
void ADC2_Init(void)
{
Byte PageCache = SFRPAGE;
/*****************************/
SFRPAGE = ADC2_PAGE;
ADC2CF = 0x31;//ADC2时钟为系统时钟7分频,PGA增益为1
ADC2CN = 0xc0;//AD2TM=1,ADC2为低功耗跟踪模式由写AD2BUSY启动
SFRPAGE = 0x00;
REF0CN = 0x00|REFBEN|BIASEN|AD2VRSAV|AD0VRSVEF0|TEMPEN;//采用AV+作为参考电压
/*BIASE=1,偏移产生器工作,注意若AD启动此位必须置1,不管是否采用内部参考电平
REFBE=1,内部参考电平工作,电路部分须将VREF参考输出(C8051F40的第12管脚)与
VREF2(C8051F040的17管脚)相连,并最好并联一个4.7uF和0.1uF的旁路电容以电平滤波*/
AnalogPort_Init(0xff);//将P1.0-P1.7配置为模拟输入。
ADC2_MUX(0x00,0x01);
/*通道均为单端输入模式,选择1通道单端输入进入AD转化*/
// EIE2 |= ADC2ISR; //开ADC2中断
// EIE2 |= ADC2WINISR; //开ADC2窗口中断
/*****************************/
SFRPAGE = PageCache;
}
void ADC0_Init(void)
{
Byte PageCache = SFRPAGE;
/*****************************/
SFRPAGE = ADC0_PAGE;
ADC0CF = 0x32;//ADC0时钟为系统时钟7*2分频,PGA增益为4
ADC0CN = 0xc0;//AD2TM=1,ADC2为低功耗跟踪模式由写AD2BUSY启动
AMX0SL = 0x00;//选择A00输入
/*****************************/
SFRPAGE = PageCache;
}
/**************射频板初始化函数*****************/
void HMC703N45_init()
{
Byte REG_ADD[16] = {0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e};
Byte RDIV[3] = {0x00,0x00,0x04};//REG02
// Byte INTG[3] = {0x00,0x00,0x64};//REG03
Byte SEED[3] = {0xb2,0x9d,0x08};//REG05,SEED写满已获得最佳杂散性能;
Byte SD_CFG[3] = {0x00,0x1d,0x5f};//REG06,精确小数模式,外触发使能关闭,调制器未重新初始化
Byte EN_CFG[3] = {0x03,0x6f,0xff};//REG08,RFDIV2使能,电荷泵放大器开 ,vco偏置参数3
Byte CP_CFG[3] = {0x00,0x12,0x24};//REG09,HIKCP
// Byte CP_CFG[3] = {0xC0,0x01,0x02};//REG09,HIKCP
Byte PD_CFG[3] = {0x03,0xe0,0x71};//REG0b,负极性,量化分频比在16到1023,
Byte GPO_CFG[3] = {0x00,0x00,0x81};//REG0f,gpo为输出模式,与sdo不复用,r分频输出
Byte ALTFRAC[3] = {0x00,0x00,0x32};//REG13,频率通道数
Byte TRIG[3] = {0x00,0x00,0x01};//REG14,trig置位
Byte TRIG1[3] = {0x00,0x00,0x00};//REG14,trig清零
Byte i = 0;
Byte PageCache = SFRPAGE;
SFRPAGE = CONFIG_PAGE;
/*****************************/
PLL2 = 0;
delay(10);
H703SEL2 = 1;
delay(10);
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[8] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(EN_CFG,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1; //寄存器EN_CFG
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[6] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(SD_CFG,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //寄存器SD_CFG
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[13] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(ALTFRAC,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //寄存器ALTFRAC
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[5] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(SEED,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //寄存器SEED
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);;
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[11] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(PD_CFG,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1; //寄存器PD_CFG
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[9] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(CP_CFG,3);
SCK_R = 0;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //寄存器CP_CFG
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[2] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(RDIV,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1; //寄存器RDIV
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[15] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(GPO_CFG,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //寄存器GPO_CFG
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[14] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(TRIG,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //置寄存器SPI_TRI
SCK_R = 0;
PLL2 = 0;
delay(2);
SDA_R = 0;
delay(1);
/******************************/
PLL2 = 1;
delay(2);
for(i = 0;i < 7;)
{
SCK_R = 0;
REG_ADD[14] <<= 1;
SDA_R = CY;
i++;
SCK_R = 1;
}
SPI(TRIG1,3);
SCK_R = 0 ;
SDA_R = 0;
i = 0;
SCK_R = 1 ; //清寄存器SPI_TRI
SCK_R = 0;
PLL2 = 0;
评论0