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

📄 ad9852_2.c

📁 AD9852 串行控制子程序
💻 C
字号:

#define DDS_SINGLE_TONE	DDS_mode0
#define DDS_FSK			DDS_mode1
#define DDS_RAMPED_FSK	DDS_mode2
#define DDS_CHIRP		DDS_mode3
#define DDS_BPSK		DDS_mode4

#define DDS_TRIANGLE_FSK DDS_mode2_2

DDS_read()	 //读地址ADDR内容到DATA
{
	char num;
	char i;
	_CS=1;
	if(ADDR==0||ADDR==1||ADDR==8||ADDR==9||ADDR==0x0b)
	num=2;
	else if(ADDR==0xa)
	num=1;
	else if(ADDR==6)
	num=3;
	else if(ADDR==5||ADDR==7)
	num=4;
	else num=6;
	_CS=0;
	SCLK=0;
	temp=ADDR|0x80;
	for(i=7;i>=0;i--)
	{
		SCLK=0;
		SDIO=temp7;
		SCLK=1;
		temp<<=1;	
	}
	for(i=5;i>=0;i--)
	DATA[i]=0;
	for(;num>0;num--)
	{
		for(i=7;i>=0;i--)
		{
			temp<<=1;
			SCLK=0;
			temp0=SDIO;
			SCLK=1;
		}
		DATA[num-1]=temp;
	}
	SCLK=0;
	_CS=1;					 
}

DDS_OSK_1()
{
	ADDR=7;
	DDS_read();
	DATA[0]|=0x30;
	DDS_w_d();
}

DDS_OSK_2(unsigned int osk)
{
	ADDR=7;
	DDS_read();
	DATA[0]|=0x30;
	DATA[0]&=0xef;
	DDS_w_d();
	ADDR=9;
	DATA[0]=osk;
	osk>>=8;
	DATA[1]=osk;
}

void DDS_w_DFW(unsigned long f)
{
	ADDR=4;
	DDS_w_f(f);
}



DDS_mode0(unsigned long clk)
{
	ADDR=7;
	DATA[3]=4;
	DATA[2]=N;
	DATA[1]=0;
	DATA[0]=0;
	DDS_w_d();
	DDS_w_f1(clk);
}

DDS_mode1(unsigned long f1,unsigned long f2) 
{
	ADDR=7;
	DATA[3]=4;
	DATA[2]=N;
	DATA[1]=2;
	DATA[0]=0;
	DDS_w_d();
	if(f1>f2)
	{DDS_w_f1(f2);DDS_w_f2(f1);}
	else
	{DDS_w_f1(f1);DDS_w_f2(f2);}
}

DDS_mode2(unsigned long f1,unsigned long f2,unsigned long ramped_n,unsigned long DFW)
//在 ramped_n+1 个系统时钟内增加或减少频率 DFW(3角频率字)
{
 	ADDR=7;
	DATA[3]=4;
	DATA[2]=N;
	DATA[1]=4;
	DATA[0]=0;
	DDS_w_d();
	if(f1>f2)
	{DDS_w_f1(f2);DDS_w_f2(f1);}
	else
	{DDS_w_f1(f1);DDS_w_f2(f2);}
	ADDR=6;
	DATA[0]=ramped_n;
	ramped_n>>=8;
	DATA[1]=ramped_n;
	ramped_n>>=8;
	DATA[2]=ramped_n;
	DDS_w_d();
	ADDR=4;
	DATA[0]=DFW;
	DFW>>=8;
	DATA[1]=DFW;
	DFW>>=8;
	DATA[2]=DFW;
	DFW>>=8;
	DATA[3]=DFW;
	DDS_w_d();	
}

DDS_mode2_2(unsigned long f1,unsigned long f2,unsigned long ramped_n,unsigned long DFW)
{								  //三角频率波形
	DDS_mode2(f1,f2,ramped_n,DFW);
	ADDR=7;
	DATA[3]=4;
	DATA[2]=N;
	DATA[1]=0x24; ///
	DATA[0]=0;
	DDS_w_d();
}

DDS_mode3()
{	 /////////////////////
 	
}

DDS_mode4(unsigned long f,unsigned int phas1,unsigned int phas2)	 //以度为单位
{
	phas1%=360;
	phas2%=360;
	phas1=phas1*2048/45;
	phas2=phas2*2048/45;
	ADDR=7;
	DATA[3]=4;
	DATA[2]=N;
	DATA[1]=8;
	DATA[0]=0;
	DDS_w_d();
	DDS_w_f1(f);
	ADDR=0;
	DATA[0]=phas1;
	phas1>>=8;
	DATA[1]=phas1;
	DDS_w_d();
	ADDR=1;
	DATA[0]=phas2;
	phas2>>=8;
	DATA[1]=phas2;
	DDS_w_d();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -