完善资料让更多小伙伴认识你,还能领取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; } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
528 浏览 1 评论
1222 浏览 6 评论
1245 浏览 2 评论
2098 浏览 1 评论
LM358发热,焊接好后无法准确输出比例缩放的电压,但是又仿真没问题,请问该怎么解决?
2016 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-9 19:32 , Processed in 0.926340 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号