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

📄 ad9851.c

📁 DDS芯片AD9851的单片机C语言驱动程序
💻 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 + -