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