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

📄 ad9852.c

📁 AD9852是现代信号源广泛采用的芯片
💻 C
字号:
#define AD9852_GLOBALS
#include "ad9852.h"
//P0.3~P0.8   -> GPIO -> A0~5
//P0.12       -> GPIO -> DDS_RST
//P0.25       -> GPIO -> DDS_SHAP
//P0.28       -> GPIO -> DDS_WR
//P0.29       -> GPIO -> DDS_RD
//P0.30       -> GPIO -> DDS_FSK
//P1.25		  -> GPIO -> DDS_UD

//P1.16~P1.23 -> GPIO -> DATA0~7

//********************************************************************************//
void TimeDly(unsigned int t)
{
	unsigned int	i;
	while(t--)
	{
		i = 10;
		while(i--);
	}
}
//********************************************************************************//
void AD9852_WriData(INT8U Add,INT8U Data)
{
//发地址有效
IO0CLR = 0x000001f8;
IO0SET = ((INT32U)Add)<<3;
TimeDly(10);
IO0CLR = DDS_WR_BIT;
//发数据有效
IO1CLR = 0x00ff0000;
IO1SET = ((INT32U)Data)<<16;
TimeDly(10);
//数据写入
IO0SET = DDS_WR_BIT;
TimeDly(10);
}
//********************************************************************************//
void AD9852_UpData(void)
{
IO1SET = DDS_UD_BIT;
TimeDly(10);
IO1CLR = DDS_UD_BIT;
TimeDly(10);
}
//********************************************************************************//
//复位AD9852
void RST_AD9852(void)
{
//Init_Freq.lFreq = (uint64_t)0x000000EC8EC2; 
//相关引脚上升到高电平
IO0SET = DDS_SHAP_BIT;//0.25
IO0SET = DDS_WR_BIT;  //0.28
IO0SET = DDS_RD_BIT;  //0.29
IO0SET = DDS_FSK_BIT; //0.30
IO1CLR = DDS_UD_BIT;  //1.25
IO0CLR = DDS_RST_BIT; //0.12
//硬复位
IO0CLR = DDS_RST_BIT;
IO0SET = DDS_RST_BIT;
TimeDly(1000);
IO0CLR = DDS_RST_BIT;
//写寄存器
SetMode(SIN_Cfg);
//写初始化频率
SetFreq(F1_ADD,2000000);
}

//********************************************************************************//
//写AD9852的频率控制器
void SetFreq(INT8U Add,INT32U Freq)
{
INT8U i;
//INT8U fre[6] ={0x01,0xB4,0xE8,0x1B,0x4E,0x80};
TW_FREQ TW_Freq;
//INT8U *pChar = &(TW_Freq.cFreq[0]);
TW_Freq.lFreq = (((((uint64_t)Freq)<<16)/MUL)*(uint64_t)2<<32/(uint64_t)CLK);
//TW_Freq.lFreq =  (uint64_t)0xA740DA741;
for(i=0;i<6;i++)
	{
		AD9852_WriData(4+i,TW_Freq.cFreq[6-i]);
		//AD9852_WriData(4+i,fre[i]);
	}
AD9852_UpData();
}

//********************************************************************************//
//设置AD9852工作模式
void SetMode(INT8U *pCfg)
{
INT8U i;
INT8U Add = CFG_ADD;
//转为外同步模式
AD9852_WriData(0x1f,0x00);
//写寄存器
for(i=0;i<4;i++)
	{
		AD9852_WriData(Add+i,SIN_Cfg[i]);
	}
AD9852_UpData();
}

⌨️ 快捷键说明

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