AD9833产生三角波的问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 17:51:44
我用AD9833产生正弦波时能实现,但是想让它产生三角波时实现不了。产生三角波时,我通过FPGA向AD9833写入六组数据,分别是:0100H(将所有寄存器复位为0),2000H(将频率寄存器设置成为完整28位使用),5894H(将频率控制字的低14位写入频率寄存器0),4010H(将频率寄存器的高14位写入频率寄存器0),D000H(将相位字写入相位寄存器0),0002H(设置频率寄存器0和相位寄存器有效,禁止复位,使用MCLK,激活DAC输出,直接输出三角波)。但是将这6组数据依次写进AD9833后,AD9833产生的是正弦波,是不是我写入AD9833的控制字不对还是是什么可能的原因呢?希望高人指点!

有可能是你的负载上有电容,你断开其他的电路,直接去测量AD9833的输出脚就可以了,下面是一个例程,工参考
#include "head.h"
#include "cpu.h"
#include "AD9833.h"
//定义延时变量,用于宏AD9833_Delay()()
UNCHAR AD9833_delay_t;
/******************AD9833 延时******************/
/*宏定义:AD9833_Delay() */
#define AD9833_Delay()\
{\
AD9833_delay_t = (AD9833_Delay_Value);\
while ( --AD9833_delay_t!= 0 );\
}
/************延迟N 个SCLK 节拍***************/
void Delay_N_MCLK(UNCHAR N)
{
UNCHAR i,t;
for(i=0;i<=N;i++)
{
AD9833_SCLK = 1;
for(t=0;t<20;t++);
AD9833_SCLK = ~AD9833_SCLK;
for(t=0;t<20;t++);
}
}
/******************向单个AD9833 写入一个16位的信息字节******************/
//AD9833_16 表示写入的信息,Which_AD9833 表示写入哪个AD9833;
void Write_16bit_One(UNCHAR Char_1,UNCHAR Char_2, UNCHAR Which_AD9833_CS)
{
UNCHAR i,t;
AD9833_SCLK = 1;
switch(Which_AD9833_CS) //确定