📄 ad9851.c
字号:
#define AD9851_GLOBALS
#include"AD9851.h"
/**************************************** 数据定义 ******************************************/
union
{
uint32 lDDSRAM;
uint8 cDDSRAM[4];
}DDS_DATA;
uint8 MODE=1;//表示使用的传输模式,1为并行
//uint8 SerialMask[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//从高位开始取
uint8 SerialMask[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/***********************************************************************************
函数名称:Send8Bytes(bytedata)
功能:mode:1表示并行发送,2表示串行发送,串行是从高位先传输,bytedata为所要传输的数据
***********************************************************************************/
void Send8Bytes(uint8 bytedata)
{
uint8 i;
DDS_WCLK=0;
if(MODE==MODE_PARALLEL)
{
PARA_DATA_OUT=bytedata;
DDS_WCLK=1;
DDS_WCLK=0;//1us左右
}
else
{
for(i=0;i<8;i++)
{
if(bytedata&SerialMask[i]!=0)SERIAL_DATA_OUT=1;
else SERIAL_DATA_OUT=0;
DDS_WCLK=1;
DDS_WCLK=0;
}
}
}
/***********************************************************************************
函数名称:SetFrequency(uint32 f)
功能:将f表示的频率值传换成AD9851的RAM的值并保存到DDS_DATA中
***********************************************************************************/
void SetFrequency(uint32 f)
{
DDS_DATA.lDDSRAM=f*FRE_PARA;
}
/***********************************************************************************
函数名称:DDSRset()
功能:复位AD9851
***********************************************************************************/
void DDSReset()
{
DDS_RESET=1;
DDS_RESET=0;
DDS_WCLK=0;
DDS_FQ_UD=0;
}
/***********************************************************************************
函数名称:SendF()
功能:将保存在DDS_DATA中的数据发送给AD9851
***********************************************************************************/
void SendF(uint32 f)
{
uint8 i;
SetFrequency(f);
DDSReset();
if(MODE==1)
{
Send8Bytes(W0);
for(i=0;i<4;i++)Send8Bytes(DDS_DATA.cDDSRAM[i]);
}
else
{
for(i=0;i<4;i++)Send8Bytes(DDS_DATA.cDDSRAM[3-i]);
Send8Bytes(W0);
}
DDS_FQ_UD=1;
DDS_FQ_UD=0;
}
void SendP(uint32 f)
{
uint8 i;
SetFrequency(f);
DDSReset();
if(MODE==1)
{
Send8Bytes(W);
for(i=0;i<4;i++)Send8Bytes(DDS_DATA.cDDSRAM[i]);
}
else
{
for(i=0;i<4;i++)Send8Bytes(DDS_DATA.cDDSRAM[3-i]);
Send8Bytes(W);
}
DDS_FQ_UD=1;
DDS_FQ_UD=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -