找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4261|回复: 3
打印 上一主题 下一主题
收起左侧

AD9854单片机驱动程序设计

[复制链接]
跳转到指定楼层
楼主
ad9854


单片机源程序如下:
  1. //=====================================================================
  2. //                    AD9854 驱动程序设计
  3. //硬件连接: P0    ——Data;          
  4. //          P2    ——Adr;   
  5. //          RESET ——P3^7;     
  6. //          UDCLK ——P3^6;   
  7. //          WR    ——P3.5;          
  8. //          RD    ——p3.4;   
  9. //          FDATA ——P3^3;     
  10. //          OSK   ——P3^2;  
  11. //          VDD--逻辑电源(3.3V)
  12. //          VSS--GND(0V)  
  13. //AD9854.c
  14. //writer:谷雨 2008年8月22日~24日于EDA实验室
  15. //说明:本程序基于硬件的外接晶振为20MHZ
  16. //=====================================================================
  17. #include "ad9854.h"

  18. u8 FreqWord[6] ;                                 //6个字节频率控制字


  19. //===================================================================================
  20. //函数名称:void AD9854_WR_Byte(u8 addr,u8 dat)
  21. //函数功能:AD9854并行口写入数据
  22. //入口参数:addr     6位地址
  23. //         dat      写入的数据
  24. //出口参数:无
  25. //====================================================================================
  26. void AD9854_WR_Byte(u8 addr,u8 dat)
  27. {
  28.         AD9854_AdrBus |= addr<<8;
  29.         AD9854_AdrBus &= ((addr<<8)+0x00FF);
  30.         AD9854_DataBus |= dat;
  31.         AD9854_AdrBus &= (dat+0xFF00);
  32.         AD9854_WR  = 0;
  33.         AD9854_WR  = 1;       
  34. }

  35. //====================================================================================
  36. //函数名称:void AD9854_Init(void)
  37. //函数功能:AD9854初始化
  38. //入口参数:无
  39. //出口参数:无
  40. //====================================================================================

  41. void Port_Init(void)
  42. {
  43.         RCC->APB2ENR|=1<<3;    //使能PORTB时钟                    
  44.         RCC->APB2ENR|=1<<5;    //使能PORTD时钟                    
  45.         GPIOB->CRL&=0X000000FF;
  46.         GPIOB->CRL|=0X33333300;//PB7~2 推挽输出
  47.   GPIOD->CRL&=0X00000000;
  48.         GPIOD->CRL|=0X33333333;//PD7~0 推挽输出
  49.         GPIOD->CRH&=0XFF000000;
  50.         GPIOD->CRH|=0X00333333;//PD13~8 推挽输出        
  51. }
  52. void AD9854_Init(void)
  53. {
  54.         Port_Init();
  55.         AD9854_WR=1;//将读、写控制端口设为无效
  56.     AD9854_RD=1;
  57.     AD9854_UDCLK=0;
  58.     AD9854_RST=1;                 //复位AD9854
  59.     AD9854_RST=0;

  60.         AD9854_WR_Byte(0x1d,0x10);                   //关闭比较器
  61.         AD9854_WR_Byte(0x1e,CLK_Set);           //设置系统时钟倍频            
  62.         AD9854_WR_Byte(0x1f,0x00);           //设置系统为模式0,由外部更新
  63.         AD9854_WR_Byte(0x20,0x60);           //设置为可调节幅度,取消插值补偿

  64.         AD9854_UDCLK=1;               //更新AD9854输出
  65.     AD9854_UDCLK=0;
  66. }

  67. //====================================================================================
  68. //函数名称:void Freq_convert(long Freq)
  69. //函数功能:正弦信号频率数据转换
  70. //入口参数:Freq   需要转换的频率,取值从0~SYSCLK/2
  71. //出口参数:无   但是影响全局变量FreqWord[6]的值
  72. //说明:   该算法位多字节相乘算法,有公式FTW = (Desired Output Frequency × 2N)/SYSCLK
  73. //         得到该算法,其中N=48,Desired Output Frequency 为所需要的频率,即Freq,SYSCLK
  74. //         为可编程的系统时钟,FTW为48Bit的频率控制字,即FreqWord[6]
  75. //====================================================================================
  76. void Freq_convert(long Freq)   
  77. {
  78.     u32 FreqBuf;
  79.     u32 Temp=Freq_mult_ulong;                  

  80.         u8 Array_Freq[4];                             //将输入频率因子分为四个字节
  81.         Array_Freq[0]=(u8)Freq;
  82.         Array_Freq[1]=(u8)(Freq>>8);
  83.         Array_Freq[2]=(u8)(Freq>>16);
  84.         Array_Freq[3]=(u8)(Freq>>24);

  85.         FreqBuf=Temp*Array_Freq[0];                  
  86.     FreqWord[0]=FreqBuf;   
  87.     FreqBuf>>=8;

  88.     FreqBuf+=(Temp*Array_Freq[1]);
  89.     FreqWord[1]=FreqBuf;
  90.     FreqBuf>>=8;

  91.     FreqBuf+=(Temp*Array_Freq[2]);
  92.     FreqWord[2]=FreqBuf;
  93.     FreqBuf>>=8;

  94.         FreqBuf+=(Temp*Array_Freq[3]);
  95.     FreqWord[3]=FreqBuf;
  96.     FreqBuf>>=8;

  97.     FreqWord[4]=FreqBuf;
  98.     FreqWord[5]=FreqBuf>>8;                       
  99. }  

  100. //====================================================================================
  101. //函数名称:void AD9854_SetSine(u32 Freq,u16 Shape)
  102. //函数功能:AD9854正弦波产生程序
  103. //入口参数:Freq   频率设置,取值范围为0~(1/2)*SYSCLK
  104. //         Shape  幅度设置. 为12 Bit,取值范围为(0~4095) ,取值越大,幅度越大
  105. //出口参数:无
  106. //====================================================================================
  107. void AD9854_SetSine(u32 Freq,u16 Shape)
  108. {
  109.         u8 count;
  110.         u8 Adress;

  111.         Adress = 0x04;                        //选择频率控制字地址的初值

  112.         Freq_convert(Freq);                           //频率转换

  113.         for(count=6;count>0;)                  //写入6字节的频率控制字  
  114.     {
  115.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  116.     }
  117.        
  118.         AD9854_WR_Byte(0x21,Shape>>8);          //设置I通道幅度
  119.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  120.        
  121.         AD9854_WR_Byte(0x23,Shape>>8);          //设置Q通道幅度
  122.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

  123.         AD9854_UDCLK=1;                    //更新AD9854输出
  124.     AD9854_UDCLK=0;
  125. }

  126. //====================================================================================
  127. //函数名称:void Freq_doublt_convert(double Freq)
  128. //函数功能:正弦信号频率数据转换
  129. //入口参数:Freq   需要转换的频率,取值从0~SYSCLK/2
  130. //出口参数:无   但是影响全局变量FreqWord[6]的值
  131. //说明:   有公式FTW = (Desired Output Frequency × 2N)/SYSCLK得到该函数,
  132. //         其中N=48,Desired Output Frequency 为所需要的频率,即Freq,SYSCLK
  133. //         为可编程的系统时钟,FTW为48Bit的频率控制字,即FreqWord[6]
  134. //注意:   该函数与上面函数的区别为该函数的入口参数为double,可使信号的频率更精确
  135. //         谷雨建议在100HZ以下用本函数,在高于100HZ的情况下用函数void Freq_convert(long Freq)
  136. //====================================================================================
  137. void Freq_double_convert(double Freq)   
  138. {
  139.         u32 Low32;
  140.         u16  High16;
  141.     double Temp=Freq_mult_doulle;                       //23ca99为2的48次方除以120M
  142.         Freq*=(double)(Temp);
  143. //        1 0000 0000 0000 0000 0000 0000 0000 0000 = 4294967295
  144.         High16 = (int)(Freq/4294967295);                  //2^32 = 4294967295
  145.         Freq -= (double)High16*4294967295;
  146.         Low32 = (u32)Freq;

  147.     FreqWord[0]=Low32;             
  148.     FreqWord[1]=Low32>>8;
  149.     FreqWord[2]=Low32>>16;
  150.     FreqWord[3]=Low32>>24;
  151.     FreqWord[4]=High16;
  152.     FreqWord[5]=High16>>8;                       
  153. }

  154. //====================================================================================
  155. //函数名称:void AD9854_SetSine_double(double Freq,u16 Shape)
  156. //函数功能:AD9854正弦波产生程序
  157. //入口参数:Freq   频率设置,取值范围为0~1/2*SYSCLK
  158. //         Shape  幅度设置. 为12 Bit,取值范围为(0~4095)
  159. //出口参数:无
  160. //====================================================================================
  161. void AD9854_SetSine_double(double Freq,u16 Shape)
  162. {
  163.         u8 count=0;
  164.         u8 Adress;

  165.         Adress=0x04;                                                     //选择频率控制字1地址的初值

  166.         Freq_double_convert(Freq);                           //频率转换
  167.          
  168.         for(count=6;count>0;)                            //写入6字节的频率控制字  
  169.     {
  170.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  171.     }
  172.        
  173.         AD9854_WR_Byte(0x21,Shape>>8);          //设置I通道幅度
  174.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  175.        
  176.         AD9854_WR_Byte(0x23,Shape>>8);          //设置Q通道幅度
  177.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

  178.         AD9854_UDCLK=1;                    //更新AD9854输出
  179.     AD9854_UDCLK=0;
  180. }

  181. //====================================================================================
  182. //函数名称:void AD9854_InitFSK(void)
  183. //函数功能:AD9854的FSK初始化
  184. //入口参数:无
  185. //出口参数:无
  186. //====================================================================================
  187. void AD9854_InitFSK(void)
  188. {
  189.         AD9854_WR=1;                        //将读、写控制端口设为无效
  190.     AD9854_RD=1;
  191.     AD9854_UDCLK=0;
  192.     AD9854_RST=1;                        //复位AD9854
  193.     AD9854_RST=0;       

  194.         AD9854_WR_Byte(0x1d,0x10);               //关闭比较器
  195.         AD9854_WR_Byte(0x1e,CLK_Set);           //设置系统时钟倍频
  196.         AD9854_WR_Byte(0x1f,0x02);               //设置系统为模式1,由外部更新
  197.         AD9854_WR_Byte(0x20,0x60);              //设置为可调节幅度,取消插值补偿

  198.         AD9854_UDCLK=1;                  //更新AD9854输出
  199.     AD9854_UDCLK=0;
  200. }

  201. //====================================================================================
  202. //函数名称:void AD9854_SetFSK(u32 Freq1,u32 Freq2)
  203. //函数功能:AD9854的FSK设置
  204. //入口参数:Freq1   FSK频率1   
  205. //         Freq2   FSK频率2
  206. //出口参数:无
  207. //====================================================================================
  208. void AD9854_SetFSK(u32 Freq1,u32 Freq2)
  209. {
  210.     u8 count=6;
  211.         u8 Adress1,Adress2;

  212.         const u16 Shape=4000;              //幅度设置. 为12 Bit,取值范围为(0~4095)
  213.        
  214.         Adress1=0x04;                                 //选择频率控制字1地址的初值
  215.         Adress2=0x0a;                                 //选择频率控制字2地址的初值
  216.        
  217.         Freq_convert(Freq1);               //频率转换1
  218.        
  219.         for(count=6;count>0;)                  //写入6字节的频率控制字  
  220.     {
  221.                 AD9854_WR_Byte(Adress1++,FreqWord[--count]);
  222.     }
  223.        
  224.         Freq_convert(Freq2);               //频率转换2

  225.         for(count=6;count>0;)                  //写入6字节的频率控制字  
  226.     {
  227.                 AD9854_WR_Byte(Adress2++,FreqWord[--count]);
  228.     }

  229.         AD9854_WR_Byte(0x21,Shape>>8);              //设置I通道幅度
  230.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  231.        
  232.         AD9854_WR_Byte(0x23,Shape>>8);             //设置Q通道幅度
  233.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

  234.         AD9854_UDCLK=1;                    //更新AD9854输出
  235.     AD9854_UDCLK=0;               
  236. }

  237. //====================================================================================
  238. //函数名称:void AD9854_InitBPSK(void)
  239. //函数功能:AD9854的BPSK初始化
  240. //入口参数:无
  241. //出口参数:无
  242. //====================================================================================
  243. void AD9854_InitBPSK(void)
  244. {
  245.         AD9854_WR=1;                    //将读、写控制端口设为无效
  246.     AD9854_RD=1;
  247.     AD9854_UDCLK=0;
  248.     AD9854_RST=1;                   //复位AD9854
  249.     AD9854_RST=0;

  250.         AD9854_WR_Byte(0x1d,0x10);               //关闭比较器
  251.         AD9854_WR_Byte(0x1e,CLK_Set);           //设置系统时钟倍频
  252.         AD9854_WR_Byte(0x1f,0x08);              //设置系统为模式4,由外部更新
  253.         AD9854_WR_Byte(0x20,0x60);              //设置为可调节幅度,取消插值补偿

  254.         AD9854_UDCLK=1;                //更新AD9854输出
  255.     AD9854_UDCLK=0;
  256. }

  257. //====================================================================================
  258. //函数名称:void AD9854_SetBPSK(u16 Phase1,u16 Phase2)
  259. //函数功能:AD9854的BPSK设置
  260. //入口参数:Phase1   调制相位1
  261. //         Phase2        调制相位2
  262. //出口参数:无
  263. //说明:   相位为14Bit,取值从0~16383,谷雨建议在用本函数的时候将Phase1设置为0,
  264. //         将Phase1设置为8192,180°相位
  265. //====================================================================================
  266. void AD9854_SetBPSK(u16 Phase1,u16 Phase2)
  267. {
  268.         u8 count;

  269.         const u32 Freq=60000;
  270.     const u16 Shape=4000;

  271.         u8 Adress;
  272.         Adress=0x04;                           //选择频率控制字1地址的初值

  273.         AD9854_WR_Byte(0x00,Phase1>>8);                   //设置相位1
  274.         AD9854_WR_Byte(0x01,(u8)(Phase1&0xff));
  275.        
  276.         AD9854_WR_Byte(0x02,Phase2>>8);                  //设置相位2
  277.         AD9854_WR_Byte(0x03,(u8)(Phase2&0xff));

  278.         Freq_convert(Freq);                            //频率转换

  279.         for(count=6;count>0;)                                 //写入6字节的频率控制字  
  280.     {
  281.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  282.     }

  283.         AD9854_WR_Byte(0x21,Shape>>8);                          //设置I通道幅度
  284.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  285.        
  286.         AD9854_WR_Byte(0x23,Shape>>8);                       //设置Q通道幅度
  287.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

  288.         AD9854_UDCLK=1;                                //更新AD9854输出
  289.     AD9854_UDCLK=0;       
  290. }

  291. //====================================================================================
  292. //函数名称:void AD9854_InitOSK(void)
  293. //函数功能:AD9854的OSK初始化
  294. //入口参数:无
  295. //出口参数:无
  296. //====================================================================================
  297. void AD9854_InitOSK(void)
  298. {
  299.         AD9854_WR=1;                           //将读、写控制端口设为无效
  300.         AD9854_RD=1;
  301.         AD9854_UDCLK=0;
  302.         AD9854_RST=1;                          //复位AD9854
  303.         AD9854_RST=0;

  304.     AD9854_WR_Byte(0x1d,0x10);                   //关闭比较器
  305.         AD9854_WR_Byte(0x1e,CLK_Set);               //设置系统时钟倍频
  306.         AD9854_WR_Byte(0x1f,0x00);                   //设置系统为模式0,由外部更新
  307.         AD9854_WR_Byte(0x20,0x70);                   //设置为可调节幅度,取消插值补偿,通断整形内部控制

  308.         AD9854_UDCLK=1;                        //更新AD9854输出
  309.         AD9854_UDCLK=0;
  310. }

  311. //====================================================================================
  312. //函数名称:void AD9854_SetOSK(u8 RateShape)
  313. //函数功能:AD9854的OSK设置
  314. //入口参数: RateShape    OSK斜率,取值为4~255,小于4则无效
  315. //出口参数:无
  316. //====================================================================================
  317. void AD9854_SetOSK(u8 RateShape)
  318. {
  319.         u8 count;

  320.         const u32 Freq=60000;                         //设置载频
  321.     const u16  Shape=4000;                        //幅度设置. 为12 Bit,取值范围为(0~4095)

  322.         u8 Adress;
  323.         Adress=0x04;               //选择频率控制字地址的初值

  324.         Freq_convert(Freq);                       //频率转换

  325.         for(count=6;count>0;)                                 //写入6字节的频率控制字  
  326.     {
  327.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  328.     }

  329.         AD9854_WR_Byte(0x21,Shape>>8);                          //设置I通道幅度
  330.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  331.        
  332.         AD9854_WR_Byte(0x23,Shape>>8);                          //设置Q通道幅度
  333.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));           


  334.     AD9854_WR_Byte(0x25,RateShape);                                       //设置OSK斜率

  335.         AD9854_UDCLK=1;                                //更新AD9854输出
  336.     AD9854_UDCLK=0;       
  337. }

  338. //====================================================================================
  339. //函数名称:void AD9854_InitAM(void)
  340. //函数功能:AD9854的AM初始化
  341. //入口参数:无
  342. //出口参数:无
  343. //====================================================================================
  344. void AD9854_InitAM(void)
  345. {
  346.         u8 count;

  347.         const u32 Freq=60000;                         //设置载频

  348.         u8  Adress;
  349.         Adress=0x04;      //选择频率控制字地址的初值
  350.        
  351.     AD9854_WR=1;    //将读、写控制端口设为无效
  352.     AD9854_RD=1;
  353.     AD9854_UDCLK=0;
  354.     AD9854_RST=1;     //复位AD9854
  355.     AD9854_RST=0;

  356.         AD9854_WR_Byte(0x1d,0x10);                          //关闭比较器
  357.         AD9854_WR_Byte(0x1e,CLK_Set);                     //设置系统时钟倍频
  358.         AD9854_WR_Byte(0x1f,0x00);                         //设置系统为模式0,由外部更新
  359.         AD9854_WR_Byte(0x20,0x60);                          //设置为可调节幅度,取消插值补偿

  360.         Freq_convert(Freq);                            //频率转换

  361.         for(count=6;count>0;)                                 //写入6字节的频率控制字  
  362.     {
  363.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  364.     }

  365.         AD9854_UDCLK=1;                             //更新AD9854输出
  366.     AD9854_UDCLK=0;
  367. }

  368. //====================================================================================
  369. //函数名称:void AD9854_SetAM(u8 Shape)
  370. //函数功能:AD9854的AM设置
  371. //入口参数:Shape   12Bit幅度,取值从0~4095   
  372. //出口参数:无
  373. //====================================================================================
  374. void AD9854_SetAM(u16 Shape)
  375. {
  376.         AD9854_WR_Byte(0x21,Shape>>8);                          //设置I通道幅度
  377.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  378.        
  379.         AD9854_WR_Byte(0x23,Shape>>8);                          //设置Q通道幅度
  380.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

  381.         AD9854_UDCLK=1;                                   //更新AD9854输出
  382.     AD9854_UDCLK=0;                       
  383. }

  384. //====================================================================================
  385. //函数名称:void AD9854_InitRFSK(void)
  386. //函数功能:AD9854的RFSK初始化
  387. //入口参数:无
  388. //出口参数:无
  389. //====================================================================================
  390. void AD9854_InitRFSK(void)
  391. {
  392.         AD9854_WR=1;                      //将读、写控制端口设为无效
  393.     AD9854_RD=1;
  394.     AD9854_UDCLK=0;
  395.     AD9854_RST=1;                     //复位AD9854
  396.     AD9854_RST=0;
  397.        
  398.         AD9854_WR_Byte(0x1d,0x10);               //关闭比较器
  399.         AD9854_WR_Byte(0x1e,CLK_Set);           //设置系统时钟倍频
  400.         AD9854_WR_Byte(0x1f,0x24);                //设置系统为模式2,由外部更新,使能三角波扫频功能
  401.         AD9854_WR_Byte(0x20,0x60);                //设置为可调节幅度,取消插值补偿       

  402.         AD9854_UDCLK=1;                   //更新AD9854输出
  403.     AD9854_UDCLK=0;
  404. }

  405. //====================================================================================
  406. //函数名称:void AD9854_SetRFSK(void)
  407. //函数功能:AD9854的RFSK设置
  408. //入口参数:Freq_Low          RFSK低频率           48Bit
  409. //         Freq_High         RFSK高频率           48Bit
  410. //         Freq_Up_Down                 步进频率           48Bit
  411. //                   FreRate           斜率时钟控制  20Bit
  412. //出口参数:无
  413. //注:     每两个脉冲之间的时间周期用下式表示(FreRate +1)*(System Clock ),一个脉冲,
  414. //         频率 上升或者下降 一个步进频率
  415. //====================================================================================
  416. void AD9854_SetRFSK(u32 Freq_Low,u32 Freq_High,u32 Freq_Up_Down,u32 FreRate)
  417. {
  418.         u8 count=6;
  419.         u8 Adress1,Adress2,Adress3;
  420.     const u16  Shape=4000;                           //幅度设置. 为12 Bit,取值范围为(0~4095)

  421.         Adress1=0x04;                     //选择频率控制字地址的初值
  422.         Adress2=0x0a;
  423.         Adress3=0x10;

  424.         Freq_convert(Freq_Low);                             //频率1转换

  425.         for(count=6;count>0;)                                 //写入6字节的频率控制字  
  426.     {
  427.                 AD9854_WR_Byte(Adress1++,FreqWord[--count]);
  428.     }

  429.         Freq_convert(Freq_High);                             //频率2转换

  430.         for(count=6;count>0;)                                 //写入6字节的频率控制字  
  431.     {
  432.                 AD9854_WR_Byte(Adress2++,FreqWord[--count]);
  433.     }

  434.         Freq_convert(Freq_Up_Down);                             //步进频率转换

  435.         for(count=6;count>0;)                                       //写入6字节的频率控制字  
  436.     {
  437.                 AD9854_WR_Byte(Adress3++,FreqWord[--count]);
  438.     }

  439.         AD9854_WR_Byte(0x1a,(u8)((FreRate>>16)&0x0f));                                   //设置斜升速率
  440.         AD9854_WR_Byte(0x1b,(u8)(FreRate>>8));
  441.         AD9854_WR_Byte(0x1c,(u8)FreRate);                                    

  442.         AD9854_WR_Byte(0x21,Shape>>8);                          //设置I通道幅度
  443.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  444.        
  445.         AD9854_WR_Byte(0x23,Shape>>8);                          //设置Q通道幅度
  446.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

  447.         AD9854_UDCLK=1;                                //更新AD9854输出
  448.     AD9854_UDCLK=0;       
  449. }

  450. //=================================================================
  451. // 函数名称 :void delay_us (u16 us)
  452. // 函数功能 :us级延时,大概2~4 us
  453. // 入口参数 :us  延时时间的长短
  454. // 出口参数 :无
  455. //=================================================================

  456. //测试正弦波,采用120MHZ SYSCLK时,出来10MHZ波形,波形很好,测试成功
  457. //当采用300MHZ SYSCLK时,测试50MHZ波形时,DDS发热厉害,且波形衰减严重,幅度在35mV左右


  458. /*int main()
  459. {
  460.         AD9854_Init();
  461.         AD9854_SetSine(10000000,4000);
  462.         while(1);                       
  463. }
  464. */

  465. //测试正弦波,采用120MHZ SYSCLK时,出来87.697HZ波形,波形很好,测试成功
  466. /*
  467. int main()
  468. {
  469.         AD9854_Init();
  470.         AD9854_SetSine_double(87.697,4000);
  471.         while(1);                       
  472. }
  473. */

  474. //测试FSK,采用120MHZ SYSCLK,1K和6K,测试成功,结果对应"FSK波形.bmp"

  475. /*int main()
  476. {
  477.         AD9854_InitFSK();
  478.         AD9854_SetFSK(1000,6000);
  479.         while(1)
  480.         {
  481.                 AD9854_FDATA = 1;
  482.                 delay_us_us(30000);              //延时时间长,便于观察
  483.                 AD9854_FDATA = 0;
  484.                 delay_us_us(30000);
  485.         }                       
  486. ……………………

  487. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
AD9854.zip (5.11 KB, 下载次数: 68)




评分

参与人数 2黑币 +55 收起 理由
TWM + 5
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:268627 发表于 2018-9-14 13:23 | 只看该作者
谢谢楼主分享的资料
回复

使用道具 举报

板凳
ID:480731 发表于 2019-3-5 08:39 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

地板
ID:530600 发表于 2023-5-17 17:33 | 只看该作者
这不是51单片机吗  为什么里面我看着像是32呢  还有sys.h   还有ODR寄存器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表