Post Go back to editing

AD9957 通过FPGA设计SPI程序配置单音模式 无源晶振 不起振

我写的很长很细。希望了解的朋友能帮助我一下。做不出来就毕不了业了。如果能得到大家的帮助,等我调试完成,会在网站上上传相应的文件盒详细调试记录。谢谢大家。

最近调试AD9957+FPGA

打算先调单音模式

结果调试不出来。

先上一张AD9957配置的相关信息:

这是我FPGA内的AD9957的配置方式

SPI的时钟用的是16M的。

PROFILE<0:2>拉低

芯片的ioreset拉低

晶振工作模式选择管脚XTAL_SEL拉高到3.3V)(我要用无源晶振)

芯片复位管脚MASTER_RESET接到外部开关,进行复位操作

EXT_PWR_DWN信号硬件电路上做了拉低,因此只在FPGA内设置为输入,以防影响工作

以上是我对硬件的所有配置了。

目前使用的晶振为官网电路中用的无源晶振:HC49SD_25MHZ,电容也用的官网值39pF

问题1 首先是SPI时序

主要信号对应为

sdclk--sclk

io_updata--io_updata

sdio--sdio

ad9957_CS(DDSCSB)--CSB

上图是我写的SPI时序的开头部分。SCLK初始时是常高的。采用的是默认格式是MSB 优先格式

开头的00是CFR1的写入指令0000-0000,01是CFR1<31-24>0000-0001,写完CFR1全部字节后紧接着是CFR2的地址和全部配置字节,如此从地址0x00写到0x19.

上图是SPI写完自后一个字节的时序。sclk拉高,io_updata拉高。

问题1、我想确认一下这样的时序到底对不对?我现在调试下来感觉没配置进去。

我看芯片手册上说,“I/O_UPDATE 在上升沿有效,脉冲宽度必须大于1 个SYNC_CLK 周期

是不是意味着,要想SPI能将配置信息写进芯片,前提必须是AD9957的内部时钟工作正常?

问题2

无源晶振的问题

首先说一下寄存器配置方面的信息

CFR1 : 0x00010000  只选择了单音工作模式,其他默认值

CFR2 :0x00004020  只将22位设置为1,SYNC_CLK 使能,输出1/4的fsysclk,其他均默认值

CFR3 :0x3A3F8130 

CFR3<7:0>=0x30:因为是25M的外部无源晶振,因此设置为24倍频,这样fsysclk时钟为600MHZ

CFR3<15:8>=0x81:使能PLL,旁路 输入分频器

CFR3<23:16>=0x3F:选取REFCLK PLL 中的电荷泵电流值为111b

CFR3<31:24>=0x3A选取REFCLK PLL VCO 的频段:010 VCO2(468~709)

控制REFCLK_OUT 引脚 :11高电流值输出

Profile0寄存器:0xA0FF000015555555

幅度比例因子:0XFF00

相位偏移字:0,无偏移

频率调谐字:0x15555555,这样换算下来,输出的单音频率为50MHZ

其他寄存器均为默认值。

以上是配置信息

目前调试出来的结果很简单:

晶振不起振

单音无输出

每次AD9957复位后,SYNC_CLK 上会有很乱的波形。,但是一写SPI后,就常为低。

ADT1-1WT也是按照官网电路设计的,每次AD9957复位后,输出端会有约200mv的杂波,但是写SPI后,就消失了。

我想请教

0、我的SPI时序和AD9957的硬件配置是否正确,是否有遗漏?

1、XTAL_SEL拉高,是拉到3.3v吗

2、无源晶振起振,除了使能PLL,设置PLL频率区间和XTAL_SEL拉高外,是不是一定要把“外部PLL环路滤波器元件”的电路配置起来才行?我个人感觉,“外部PLL环路滤波器元件”只是优化PLL性能,不应该会影响无源晶振的起振。目前无源晶振两个管脚上都各有约1.13V的电压。但示波器量,无起振

4、我如果打算接外部有源晶振,那么我应该选择输出电压是多少的晶振。

事实上,我尝试向AD9957送入1.8V,16MHZ的晶振,并将配置信息进行改动,旁路PLL,使能输入分频器,拉低XTAL_SEL,但是依旧无法输出单音。

整个儿就感觉AD9957不想好好干活。(两块板,均如此)

我写的很长很细。希望了解的朋友能帮助我一下。做不出来就毕不了业了。如果能得到大家的帮助,等我调试完成,会在网站上上传相应的文件盒详细调试记录。谢谢大家。

attachments.zip