📄 ad9852_2.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 + -