标题:
AD9850模块STM32程序 输出频率可调的正弦波
[打印本页]
作者:
qxqy080602
时间:
2019-8-17 09:18
标题:
AD9850模块STM32程序 输出频率可调的正弦波
前些天由于某种原因,收集了点AD9850的资料
附上自己写的AD9850的程序,供大家参考,输出的是频率可调的正弦波
单片机源程序如下:
/********************************************
*********************************************/
#include "DA9850.h"
/******************************************
@函数:void GPIO_Configuration(void)
@功能:AD9850对应管脚的初始化
@返回值:无
@参数:无
@备注: 这里不需要更改
*******************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DA9850_GPIO_PeriphClkCmd( DA9850_GPIO_CLK ,ENABLE);
GPIO_InitStructure.GPIO_Pin =FQUD_GPIO_Pin |Data_GPIO_Pin |WCLK_GPIO_Pin |RESET_GPIO_Pin ;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP ;
GPIO_Init(DA9850_GPIO_PORT ,&GPIO_InitStructure);
}
/********************************************
@函数:void RCC_Configuration(void)
@功能:RCC初始化
@返回值:无
@参数:无
@备注:这个函数可以注释掉,频率震荡会增加
*********************************************/
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus=RCC_WaitForHSEStartUp();
if(HSEStartUpStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource()!=0x08)
{}
}
}
/*********************************************
@函数:void AD9850_Reset( void )
@功能: AD9850复位
@返回值:无
@备注:无
@参数:无
*********************************************/
void AD9850_Reset( void )
{
AD9850_WCLK_L;
AD9850_FQUD_L;
//rest 信号
AD9850_RESET_L;
AD9850_RESET_H;
AD9850_RESET_L;
//WCLK信号
AD9850_WCLK_L;
AD9850_WCLK_H;
AD9850_WCLK_L;
//FQUD信号
AD9850_FQUD_L;
AD9850_FQUD_H;
AD9850_FQUD_L;
}
/*********************************************************
@函数:void ad9850_wr_serial(unsigned char w0,float freq)
@功能:AD9850输出正弦波
@返回值:无
@参数:w0:w0为 一变量,不用管。
frep:跟输出频率直接挂钩,单位为Khz
@备注:无
**********************************************************/
void AD9850_wr_serial(unsigned char w0,float frep)
{
unsigned char i,w;
long int y = frep *(0x20C49BA)/1000;
//写W4数据
w=(y>>=0);
for(i=0;i<8;i++)
{
if(((w>>i)&0x01))
{
AD9850_Data_H;
}
else
{
AD9850_Data_L;
}
AD9850_WCLK_H;
AD9850_WCLK_L;
}
//写W3数据
w=(y>>8);
for(i=0;i<8;i++)
{
if(((w>>i)&0x01))
{
AD9850_Data_H;
}
else
{
AD9850_Data_L;
}
AD9850_WCLK_H;
AD9850_WCLK_L;
}
//写W2数据
w=(y>>16);
for(i=0;i<8;i++)
{
if(((w>>i)&0x01))
{
AD9850_Data_H;
}
else
{
AD9850_Data_L;
}
AD9850_WCLK_H;
AD9850_WCLK_L;
}
//写W1数据
w=(y>>24);
for(i=0;i<8;i++)
{
if(((w>>i)&0x01))
{
AD9850_Data_H;
}
else
{
AD9850_Data_L;
}
AD9850_WCLK_H;
AD9850_WCLK_L;
}
//写W0数据
w=w0;
for(i=0;i<8;i++)
{
if(((w>>i)&0x01))
{
AD9850_Data_H;
}
else
{
AD9850_Data_L;
}
AD9850_WCLK_H;
AD9850_WCLK_L;
}
//移入使能
AD9850_FQUD_H;
AD9850_FQUD_H;
}
复制代码
所有资料51hei提供下载:
AD9850.7z
(175.5 KB, 下载次数: 86)
2019-8-18 00:54 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-8-18 00:55
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
鹏博士PBs
时间:
2019-8-18 09:06
资源不全 不太完整哦
作者:
aaaaaa。
时间:
2019-10-26 20:52
楼主程序挺好的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1