微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 多功能调试测试助手-DDS直接频率合成AD9834

多功能调试测试助手-DDS直接频率合成AD9834

时间:10-02 整理:3721RD 点击:

环境说明:CubeSuites+
由于该环境不支持中文,所以对程序可读性带来很多麻烦,乘有空闲时间可以把使用到的外设程序好好列列
多功能调试测试助手-DDS直接频率合成AD9834

  1. 文件:
  2. AD9834.c   AD9834.h
  3. 函数:
  4. Init_dds();
  5. void send_F(unsigned long val);
  6. 细列:
  7. //AD9834初始化
  8. void Init_dds(void)
  9. {
  10.         AD9834_SCLK_H; //为下降沿移入数据做准备
  11.         AD9834_CS_H;    //帧同步无效
  12.         SPI16_Write(0x2100);//复位AD9834,同时频率寄存器分2次写入
  13.         SPI16_Write(0x2038);//输出正弦波,SIGN BIT OUT有效

  14. }
  15. //同步串行写字
  16. void SPI16_Write(unsigned short  data )
  17. {
  18.         unsigned char i ;
  19.         
  20.         AD9834_CS_L;  //帧同步有效
  21.               
  22.                 for(i=0;i<16;i++)
  23.                 {         
  24.                         if ((data&0x8000)==0x8000)// 数据是否为1
  25.                            {AD9834_DATA_H;}
  26.                              else
  27.                         {AD9834_DATA_L;}
  28.                         AD9834_SCLK_L; //下降沿有效
  29.                         NOP();        NOP();        NOP();        NOP();        NOP();NOP();        NOP();        NOP();        NOP();        NOP();
  30.                             AD9834_SCLK_H;
  31.                         NOP();        NOP();        NOP();        NOP();        NOP();NOP();        NOP();        NOP();        NOP();        NOP();
  32.                         
  33.                         
  34.                         data<<=1;  //移位,待下位输出
  35.                 }
  36.          
  37.         AD9834_CS_H; 帧同步数据无效
  38. }

  39. //发送频率值
  40. //AD9834中文数据手册 P21,表11
  41. void send_F(unsigned long val)
  42. {
  43.         unsigned short freqHi;
  44.         unsigned short freqLo;
  45.          
  46.         //频率值28BIT分2次送入频率寄存器REG0
  47.         freqHi = 0x4000|(val & 0xFFFC000) >> 14 ;//B28 (DB13)=1;数据先移位高14BIT
  48.         freqLo = 0x4000|(val & 0x3FFF);                 //B28 (DB13)=1;数据再移位低14BIT
  49.          
  50.         SPI16_Write(freqLo);
  51.         SPI16_Write(freqHi);  
  52. }

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top