📄 adf4113.c
字号:
#include <p24fj128ga006.h>
#include "key.h"
#include "lcd.h"
/* --NO AD820 */
#define CE PORTDbits.RD10 // PORTGbits.RG3 //
#define LE PORTGbits.RG9 // PORTBbits.RB2 //
#define DATA PORTGbits.RG8 // PORTFbits.RF3 //
#define CLK PORTGbits.RG6 // PORTFbits.RF6 //
#define CE2 PORTGbits.RG3
#define LE2 PORTBbits.RB2
#define DATA2 PORTFbits.RF3
#define CLK2 PORTFbits.RF6
void delay(unsigned int i)
{
unsigned int j;
for(j=0;j<i;j++);
}
void ADF4113_INIT()
{
TRISGbits.TRISG6=0;
TRISGbits.TRISG7=1;
TRISGbits.TRISG8=0;
TRISGbits.TRISG9=0;
TRISDbits.TRISD10 =0;
/*******************/
TRISGbits.TRISG3 =0;
TRISBbits.TRISB2 =0;
TRISFbits.TRISF3 =0;
TRISFbits.TRISF6 =0;
//*****************
LE=0;
CLK=0;
CE=1; //处于上电状态
DATA=0;
LE2=0;
CLK2=0;
CE2=1; //处于上电状态
DATA2=0;
}
void ADF4113_data_input(unsigned long int all_data)
{
unsigned long int temp;
unsigned int i;
temp=0x800000;
//ADF4001_INIT();
for(i=0;i<24;i++)
{
CLK=0;
NOP();
if(all_data&temp) //注意位与&与&&的区别
{
DATA=1;
NOP();
NOP();
}
else {
DATA=0;
NOP();
NOP();
}
temp=temp>>1;
CLK=1;
NOP();
}
LE=1;
NOP();
NOP();
LE=0;
}
void ADF4113_data_input2(unsigned long int all_data)
{
unsigned long int temp;
unsigned int i;
temp=0x800000;
//ADF4001_INIT();
for(i=0;i<24;i++)
{
CLK2=0;
NOP();
if(all_data&temp) //注意位与&与&&的区别
{
DATA2=1;
NOP();
NOP();
}
else {
DATA2=0;
NOP();
NOP();
}
temp=temp>>1;
CLK2=1;
NOP();
}
LE2=1;
NOP();
NOP();
LE2=0;
}
/*******************************************************************************************/
void ADF4113_Mode_Init()
{
ADF4113_data_input(0x1ff893); //功能锁存器数据位00,0, 111, 111, 1111, 00, 01, 001, 0,0, 11
// pd2,setting2,setting1,time,fastlock and enable,cp out and positive,digital lock detect,normal,control bits
delay(30);
}
void ADF4113_SetR(unsigned long int REF_Data)
{
unsigned long int temp;
temp = REF_Data<<2;
ADF4113_data_input(0x100000|temp);
delay(10);
}
void ADF4113_SetR2(unsigned long int REF_Data)
{
unsigned long int temp;
temp = REF_Data<<2;
ADF4113_data_input2(0x100000|temp);
delay(10);
}
void ADF4113_SetN(unsigned long int B,unsigned long int A)
{
unsigned long int tempN;
tempN = ((B<<8) | (A<<2));
ADF4113_data_input(0x000001 | tempN);
delay(10);
}
void ADF4113_SetN2(unsigned long int B,unsigned long int A)
{
unsigned long int tempN;
tempN = ((B<<8) | (A<<2));
ADF4113_data_input2(0x000001 | tempN);
delay(10);
}
void ADF4113_Reset_Value(unsigned long int REF_Data,unsigned long int B,unsigned long int A)
{
ADF4113_data_input(2198);//settings=000,muxout=001,timeout=7,p=8
delay(10);
ADF4113_SetR(REF_Data);
ADF4113_SetN(B, A);
ADF4113_data_input(2194);//close f1
}
void ADF4113_Reset_Value2(unsigned long int REF_Data,unsigned long int B,unsigned long int A)
{
ADF4113_data_input2(2198);//settings=000,muxout=001,timeout=7,p=8
delay(10);
ADF4113_SetR2(REF_Data);
ADF4113_SetN2(B, A);
ADF4113_data_input2(2194);//close f1
}
void ADF4113_Reset_Value2_16(unsigned long int REF_Data,unsigned long int B,unsigned long int A)
{
ADF4113_data_input2(2198+4194304);//settings=000,muxout=001,timeout=7,p=16
delay(10);
ADF4113_SetR2(REF_Data);
ADF4113_SetN2(B, A);
ADF4113_data_input2(2194+4194304);//close f1
}
void main()
{
int i;
Init_Lcd();
Line_1();
ADF4113_INIT();
Lcd_Sprintf("adf4113---");
/* ADF4001_data_input(4196515) ; 1.6G
ADF4001_data_input(1048608);
ADF4001_data_input(25409);*/
/* ADF4113_data_input(4196515-16) ; // 1.1G -16 for detect //P=8 pd2=0 setting1=000;setting2=000;time=0001
ADF4113_data_input(1048608);
ADF4113_data_input(17473); */
// ADF4113_Mode_Init();
// ADF4113_data_input(4196515-16);
/* ADF4113_data_input(0x5ff893); //229376 settint =000 p=16
ADF4113_SetR(16);
ADF4113_SetN(124,16);*/
ADF4113_data_input(4196515) ;
ADF4113_data_input(1048608);
ADF4113_data_input(17473);
delay(100);
Line_2();
printf("999999");
while(1);
Lcd_Sprintf("press 1,2,3,4");
while(1)
{
i=GetKey();
Home_Clear();
switch(i)
{
case 1:
/*********LO1*******************/
ADF4113_Reset_Value(8,124,8);
Line_2();
Lcd_Sprintf("---1G---");
/************LO2**************/
Line_1();
ADF4113_Reset_Value2(40,759,8);
Lcd_Sprintf("-L2--1.216G---");
break;
case 2:
ADF4113_Reset_Value(8,733,8);
Line_2();
Lcd_Sprintf("-L1--1.172G---");
/* ***LO2 *** ***/
Line_1();
ADF4113_Reset_Value2_16(40,562,16);
Lcd_Sprintf("-L2--1.8G---");
break;
case 3:
ADF4113_Reset_Value(8,124,24);
Line_2();
Lcd_Sprintf("--L1-1.016G---");
Line_1();
ADF4113_Reset_Value2(40,1124,8);
Lcd_Sprintf("-L2--1.4G---");
break;
case 4:
ADF4113_Reset_Value(40,733,8);
Line_2();
Lcd_Sprintf("-L1--1.172G---");
Line_1();
ADF4113_Reset_Value2_16(40,624,16);
Lcd_Sprintf("-L2--2G---");
break;
default : break;
}
i=9;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -