⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adf4113.c

📁 锁相芯片4113的驱动程序
💻 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 + -