ADF4350编程总结1!【原创】
0赞之前公司有同事做了相关的项目,也是有关于ADF4350的,本想直接用他的驱动代码,但是实验过后觉得不能使用,不知道是什么问题,无法设置频率,会出现我之前提到的现象,有频率输出但是不是自己所设置的。
还是自己写驱动比较好,这样才能完全学会该芯片。查看了一下datasheet,并同时用ADF4350设置软件。在使用该软件的时候,有时候会出现如图所示的情况:
看来参数之间有一定的限制。通过datasheet可以大概清楚,如何设置ADF4350的输出频率。
时序特性如图:

ADF4350只有写操作,没有读操作,请编程的朋友们注意了,之前设置频率出错的时候还想过把寄存器数据读取出来看看,才知道ADF4350的寄存器是只写的。不过4350的寄存器比我想象的要少的很多,6个寄存器,如图:
之前根据ADF4350的中文手册的设置频率例子,书写了一次设置频率的函数,但是效果一样,不能设置频率。


但是可以参考下,总的设置公式如上图的公式(3),在设置频率的过程中,寄存器的写入顺序是从高到小写入。
比如我们要设置一个输出频率为1.4G的频率,使用10M晶振,R为1,通道分辨率为100KHz,其他默认,先按软件得到6个寄存器的值,如图:

再按照公式
MOD=Fosc/(R*DIV*Fresout)=PFD/F=10MHz/200KHz=50(F为VCO Chanel Spacing),从公式可以看出MOD由晶振,R,DIV,Fresout决定,一般的话,晶振是不变的,我在测试的时候,直接将R值设置为1和Fresout设置为100KHz,所以MOD的值随DIV变化而变化。当我们在建立设置频率函数的时候,经常出现计算来的MOD值C与软件设置出来的MOD值S呈倍数的关系:
C=n*S,由于FRAC与MOD的关系,FRAC计算和软件算出来的值呈现同样的关系,而且同一个设置频率的话,2关系的n值是一样的。
比如我们再设置频率为1402M,直接软件输入1402,如图:

如果你按公式算出来的MOD应该是50,怎么会是5呢,我们接着改下通道分辨率,就知道了,将100KHz删除后再写入100KHz,你就发现不一样了,设置后的界面如下图。(这个也是我一直不明白为什么要这样做的,而且这是偶然间发现的)

MOD的值是50,跟计算的值一样的。在想想计算值与软件值的关系。
ps:本来周末要与大家分享的,但有事出去。感觉有点长,多写一篇。
