请教各位大虾 :DDS 输出方波的问题
用AD9834输出方波时候遇到一个问题 :能按照我些的 频率出来相应频率的方波.现在有个问题是,我始终让AD9834输出,但是在示波器上观察: 方波 周期性的 出现大概3ms ,然后为低电平持续48ms,然后再出现方波,各位大虾帮忙分析下原因
代码如下
IOSET0|=(7<<4); //RESET=1,FSYNC=1,SCK=1; for(k=0;k<100;k++) {} //说明:延迟一会 write_ad9834_16(0X2228);//初始化 AD9834
//说明:B28=1;表示连续写2个16位; //说明:PIN/SW=1,使用外部引脚控制 //说明:OPBITEN=1,表示使能方波输出 //说明:SIGN/PIB=0;DAC的the MSB 数据直接连接到 // SIGN BIT OUT (方波输出)管脚. //说明:在写子程序中.连续写16位,这是初始化代码,
mid_data_low=fre_data&0x3fff;//取低14位 mid_data_high=(fre_data&0xffffc000)>>14;//取高14位 //说明:fre_data是根据 fMCLK/228 × FREQREG=实际需要输出频率 ; 折算出来的 FREQREG 频率寄存器值
mid_data_low|=0x4000; mid_data_high|=0x4000;
write_ad9834_16(mid_data_low); write_ad9834_16(mid_data_high); IOSET0|=1<<4;//FSYNC=1; IOCLR0|=1<<5;//RESET=0;//说明:正式输出方波 delay_time_accuracy(d2);//延迟 设置好的 "输出时间"
//说明:写寄存器子程序
void write_ad9834_16(INT32U in_data) { static INT8U i; static INT8U j; static INT32U k; static INT32U m; IOCLR0|=1<<4; //说明:FSYNC=0
for(i=16;i>0;i--) { j=i-1; k=IOPIN0; IOPIN0=((k&(~(1<<7)))|(((in_data>>j)&0X01)<<7)); //说明:用ARM7芯片LPC2368 的P0.7连接AD9834 的 SDATA IOCLR0|=1<<6;
//说明:SCLK=0
for (m=0; m<20; m++) {};//大概延时60us IOSET0|=1<<6; //说明:SCLK=1
} IOSET0|=1<<4; //说明:FSYNC=1 表示写完本次16位数据
}
|