您的位置 首页 传感器

STM32的AD9854 DDS模块调试总结

STM32的AD9854 DDS模块调试总结-本文首先介绍了DDS的基本原理和特点,其次介绍了DDS芯片AD9854的概念,最后详细介绍了STM32的AD9854 DDS模块调试经验总结。

  DDS基本原理和特色

  1、DDS基本原理

  直接频率组成技能实践上是经过将存储的波形数据,经过特定算法,经过高速D/A转化器转化成所需求模拟信号的数字组成技能。其基本原理框图如图1所示。

STM32的AD9854 DDS模块调试总结

  由图1可见,其主要由规范参阅频率源、相位累加器、波形存储器、数/模转化器等部分组成。其间,参阅频率源一般是一个高安稳的晶体振荡器,其输出信号用于DDS中各部件同步作业。当频率组成器正常作业时,在规范频率参阅源的操控下(频率操控字K决议了其相位增量),相位累加器则不断地对该相位增量进行线性累加,当相位累加器积满量时就会产生一次溢出,然后完结一个周期性的动作,即组成信号的一个频率周期。累加器的输出地址对波形ROM进行寻址,然后把存储在相位累加器中的抽样值转化成对应的正弦波起伏序列。经过高速D/A改换把数字量变成模拟量,经过低通滤波器进一步滑润并滤掉带外杂散,得到所需的波形。

  2、DDS完成的正弦信号剖析

  抱负DDS的输出频谱就是指不存在相位舍入差错、起伏量化差错和DAC差错时,体系输出的频谱。这时,整个DDS体系就相当于抱负的采样坚持电路。其输出信号的频谱结构是以Sa(·)函数为包络的一组离散谱线,如图2(所选fc=200 MHz,fo=40 MHz)所示,只在f=nfc±fO=(n±K/2N)fc处存在离散谱线。

STM32的AD9854 DDS模块调试总结

  DDS芯片——AD9854

  AD9854数字组成器是AD公司的一款高度集成的DDS器材,其内部集成了双48位频率累加器,双48位相位累加器,正余弦波形表,双12位正交数模转化器,双12位数字倍增器,可编程的基准时钟倍增器以及调制和操控电路,能够在单片机上完成频率调制、相位调制,可编程的起伏调制以及I,Q两路正交调制等多种功用。当AD9854作为一个准确的时钟源时,它能产生高安稳度,频率一相位一起伏均可编程的正弦和余弦输出。其主要特色有:

  作业频率高 其作业频率高达300 MHz,其电路结构答应产生频率到达150 MHz的一起正交输出信号。相位切断到17位确保了优秀的无杂散信号动态规模(SFDR)。

  频率分辨率高 其立异的高速DDS核供给了48位的频率分辨率(当SYSCLK为300 MHz时有1μHz的调理分辨率)。

  可编程的基准时钟倍增器 AD9854的可编程的4×~20×的REFCLK倍增器电路在内部从一个低频的外部参阅时钟产生300 MHz的体系时钟,节约了用户的花费,减小体系时钟源的难度。

  内部集成高性能DAC 两个12 b/300 MHz的DAC使输出信号的信噪比(SNR)满足要求。

  简略的高速串、并行数据接口 并行口的数据传输速率到达100 MHz,串行口也有10 MHz的速度,频率转化时刻最低能到达10 ns。

  多种作业形式 有五种可编程的作业形式:单腔调形式、非斜升FSK、斜升FSK、线性调频和BPSK,在运用中能够依据不同的需求进行转化。

  STM32的AD9854 DDS模块调试

  最近一段时刻由于竞赛需求自己制造信号源,所以在某宝上选用了AD9854 DDS模块,内部结构就不介绍了,手册上都有。该模块能够产生I、Q两路正交输出信号,即一路正弦一路余弦信号,还有一路比较器的输出信号,即方波信号。假如对输出信号起伏没要求的话也能够挑选AD9851 这个模块仍是比较经典的。调试办法与9854相似。我选用的是串行通讯形式,比较节约IO口。 首要,对AD9854进行初始化,依据手册中时序图进行代码编写,串行形式下S/P有必要接低电平,其他功用IO口设置的输出输入分别为推挽输出形式和上拉输入形式。初始化程序:

  [html] view plain copy《span style=“font-size:18px;”》void AD9854_Init_S(void)

  {

  AD9854_M_Reset_H();

  AD9854_SP_L();

  AD9854_SCLK_L();

  AD9854_SDIO_L();

  AD9854_IO_UD_CLK_L();

  AD9854_CS_H();

  AD9854_IO_Reset_H();

  delay_int(10);

  AD9854_M_Reset_L();

  delay_int(10);

  DATA[3]=0X00;

  DATA[2]=0X4a; //10倍频

  DATA[1]=0X00;

  DATA[0]=0X60;

  AD9854_Send_Data(0x07,DATA);

  }《/span》

  其次,开端给寄存器对应地址写值,串行通讯地址对应0x00~0x0B,并行通讯写地址方法与串行有所差异,详细参阅手册。简略的频率起伏操控的话,关怀的地址只需0x02(I通道频率操控地址) 0x03(Q通道频率操控地址) 0x07(倍频地址) 0x08(I通道起伏操控地址) 0x09(Q通道起伏操控地址)。

  寄存器写值先写低位,在写高位。

  0X07地址总共4个字节,写值为DATA[3]=0X00;DATA[2]=0X4a;DATA[1]=0X00;DATA[0]=0X60;假如只修正倍频系数的话只需求修正DATA[2]的值(规模4-20倍,实践最大10倍频),若要其他功用对照手册修正对应地址的值即可。 0x02地址总共6个字节,100M对应频率字为DATA[0]=55;DATA[4]=55;DATA[3]=55;DATA[2]=55;DATA[1]=55;DATA[0]=55;换算为16进制数后1M=940000000000;写值后只需进行移位送入对应地址,便利今后频率步进,扫频功用。0x03同。有人就会问了:这儿频率设置了为什么还要设置倍频系数呢?关于倍频系数,假如输出频率比较高,而倍频系数比较小的话,输出波形会失真,因而倍频系数依据你输出的频率要进行相应的设置。频率设置函数代码如下:

  [html] view plain copy《span style=“font-size:18px;”》void AD9854_SetFre(long long fre) //最高输入为2^48

  {

  DATA[5]=(u8)(fre》》40);

  DATA[4]=(u8)(fre》》32);

  DATA[3]=(u8)(fre》》24);

  DATA[2]=(u8)(fre》》16);

  DATA[1]=(u8)(fre》》8);

  DATA[0]=(u8)fre;

  AD9854_Send_Data(0x02,DATA);

  AD9854_Send_Data(0x03,DATA);

  }//若要I、Q输出不同频率,0X03输入值从头界说个数组即可。《/span》

  0x08地址总共2个字节,经实测10mV=450;起伏设置函数代码如下:

  [html] view plain copyvoid AD9854_SetSine(u16 Shape)//最高输入2^16

  {

  unsigned char A[2]={0};

  A[1]=Shape》》8;

  A[0]=Shape&0XFF;

  AD9854_Send_Data(0x08,A);

  AD9854_Send_Data(0x09,A);

  }//若需两路不同起伏输出,参照上面频率操控。

  这些过程完结后,连线应该会输出你想要的信号,可是可能会呈现稳定输出某个频率,而且波形很不润滑有许多台阶,无论如何修正倍频系数,输出不会产生改动,修正频率字输出波形也不会依照你想得那样改变。这个问题我整了好几天,真的很是无法,要求外部5V供电,刚开端用电脑USB供电认为输入电流小而导致,后来改用稳压电源5V供电,电流2A,仍是没有任何改进,9854模块上的GND与单片机的GND是接着的,后来才发现,两个GND之间存在电压差,并没有完成真实的共地,导致芯片作业不正常。

  解决办法:外部5V供电的一起将9854模块上的3.3V供电也接到单片机上3.3V电压处,这样应该是构成了回路,GND才完成了真实的共地,问题解决。 9854这个模块仍是很好用的,初始化时序没问题的话,只需在对应地址写值就能够完成你想要的输出了。并行通讯的话,时序对了,跟串行地址写值略微有点差异,也不难,参照手册即可。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/347708.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部