完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我在使用DDS芯片AD9959做波形发生器遇到问题。
现在板子上25MHz的晶振工作正常,AD9959四分频输出6.25MHz方波信号也正常,但在运行程序调试中有问题,单片机不能将控制字写入寄存器,例如用下面的程序设定系统时钟倍频,25*8=200,四分频输出应该变为50MHz,但示波器检测仍是6.25MHz,显然控制字没有写进寄存器。 所用单片机为AT89S52,P2口控制DDS,输出电平经电阻分压后在AD9959输入端口电平为3.5V,AD9959外围电路见附件,AVDD、DVDD、DVDD_I/O分别为1.8V、1.8V、3.3V,调试程序如下所示,请大家帮忙看看问题出在哪里?为什么控制字写不进去? 谢谢! 无效主() { 延迟 10 ms () ; ad9958_init (); 写_ FFR1( 0x20, 0x00, 0x00, 0x00; / 8*25) 运行(; ) (一) 时间(1); } 无效的延迟 10 ms () { 未经签字的chari,j; for(i=230;i》0;i--) for(j=20;j》0;j--); } 无效的 AD9959_init( 撤销) { 未签名的一。 i. 主元件_ reset=0; for(i=0;i《10000;i++); //50ms cs=1; Sklk=0; SDio_3=1; 主元件_ reset=1; for(i=0;i《10000;i++); 主元件_ reset=0; for(i=0;i《100;i++); } 无效运行( 撤销) { i_updata=0; i_updata=0; i_updata=0; i_updata=0; i_updata=1; i_updata=1; i_updata=1; i_updata=1; } 无效写入_a_byte( 未签名字符 w_ data) { 未签名字符i; for(i=0;i《8;i++) { SDIO_0=(w_data 0x80); w_data《《=1; SCLK=“0”; SCLK=“0”; SCLK=“1”; SCLK=“1”; } } 无效写入_ FR1( 未签名的char w_ data1, 未签名的char w_ data2, 未签名的char w_ data3) { SDio_3=0; SDio_3=0; cs=0; cs=0; write_a_byte(0x01); //write address 1. FR1‘s address is 0x01 书写_a_byte(w_data1); 书写_a_byte(w_data2); 书写_a_byte(w_data3); cs=1; cs=1; SDio_3=1; SDio_3=1; } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
19 浏览 0 评论
293 浏览 0 评论
为什么在频率为10^3 Hz处,产生的相移就可以确定约为-90度
1385 浏览 1 评论
【高手问答】电路的功能是为了0.6v到40v之间调压,运放发热严重
3650 浏览 8 评论
USB3.0 工业相机的传输速率是否受到电脑主板某些硬件的限制?
1251 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 20:46 , Processed in 0.648192 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号