久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5011|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

AD9854單片機(jī)驅(qū)動程序設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ad9854


單片機(jī)源程序如下:
  1. //=====================================================================
  2. //                    AD9854 驅(qū)動程序設(shè)計(jì)
  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實(shí)驗(yàn)室
  15. //說明:本程序基于硬件的外接晶振為20MHZ
  16. //=====================================================================
  17. #include "ad9854.h"

  18. u8 FreqWord[6] ;                                 //6個(gè)字節(jié)頻率控制字


  19. //===================================================================================
  20. //函數(shù)名稱:void AD9854_WR_Byte(u8 addr,u8 dat)
  21. //函數(shù)功能:AD9854并行口寫入數(shù)據(jù)
  22. //入口參數(shù):addr     6位地址
  23. //         dat      寫入的數(shù)據(jù)
  24. //出口參數(shù):無
  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. //函數(shù)名稱:void AD9854_Init(void)
  37. //函數(shù)功能:AD9854初始化
  38. //入口參數(shù):無
  39. //出口參數(shù):無
  40. //====================================================================================

  41. void Port_Init(void)
  42. {
  43.         RCC->APB2ENR|=1<<3;    //使能PORTB時(shí)鐘                    
  44.         RCC->APB2ENR|=1<<5;    //使能PORTD時(shí)鐘                    
  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;//將讀、寫控制端口設(shè)為無效
  56.     AD9854_RD=1;
  57.     AD9854_UDCLK=0;
  58.     AD9854_RST=1;                 //復(fù)位AD9854
  59.     AD9854_RST=0;

  60.         AD9854_WR_Byte(0x1d,0x10);                   //關(guān)閉比較器
  61.         AD9854_WR_Byte(0x1e,CLK_Set);           //設(shè)置系統(tǒng)時(shí)鐘倍頻            
  62.         AD9854_WR_Byte(0x1f,0x00);           //設(shè)置系統(tǒng)為模式0,由外部更新
  63.         AD9854_WR_Byte(0x20,0x60);           //設(shè)置為可調(diào)節(jié)幅度,取消插值補(bǔ)償

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

  67. //====================================================================================
  68. //函數(shù)名稱:void Freq_convert(long Freq)
  69. //函數(shù)功能:正弦信號頻率數(shù)據(jù)轉(zhuǎn)換
  70. //入口參數(shù):Freq   需要轉(zhuǎn)換的頻率,取值從0~SYSCLK/2
  71. //出口參數(shù):無   但是影響全局變量FreqWord[6]的值
  72. //說明:   該算法位多字節(jié)相乘算法,有公式FTW = (Desired Output Frequency × 2N)/SYSCLK
  73. //         得到該算法,其中N=48,Desired Output Frequency 為所需要的頻率,即Freq,SYSCLK
  74. //         為可編程的系統(tǒng)時(shí)鐘,F(xiàn)TW為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];                             //將輸入頻率因子分為四個(gè)字節(jié)
  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. //函數(shù)名稱:void AD9854_SetSine(u32 Freq,u16 Shape)
  102. //函數(shù)功能:AD9854正弦波產(chǎn)生程序
  103. //入口參數(shù):Freq   頻率設(shè)置,取值范圍為0~(1/2)*SYSCLK
  104. //         Shape  幅度設(shè)置. 為12 Bit,取值范圍為(0~4095) ,取值越大,幅度越大
  105. //出口參數(shù):無
  106. //====================================================================================
  107. void AD9854_SetSine(u32 Freq,u16 Shape)
  108. {
  109.         u8 count;
  110.         u8 Adress;

  111.         Adress = 0x04;                        //選擇頻率控制字地址的初值

  112.         Freq_convert(Freq);                           //頻率轉(zhuǎn)換

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

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

  126. //====================================================================================
  127. //函數(shù)名稱:void Freq_doublt_convert(double Freq)
  128. //函數(shù)功能:正弦信號頻率數(shù)據(jù)轉(zhuǎn)換
  129. //入口參數(shù):Freq   需要轉(zhuǎn)換的頻率,取值從0~SYSCLK/2
  130. //出口參數(shù):無   但是影響全局變量FreqWord[6]的值
  131. //說明:   有公式FTW = (Desired Output Frequency × 2N)/SYSCLK得到該函數(shù),
  132. //         其中N=48,Desired Output Frequency 為所需要的頻率,即Freq,SYSCLK
  133. //         為可編程的系統(tǒng)時(shí)鐘,F(xiàn)TW為48Bit的頻率控制字,即FreqWord[6]
  134. //注意:   該函數(shù)與上面函數(shù)的區(qū)別為該函數(shù)的入口參數(shù)為double,可使信號的頻率更精確
  135. //         谷雨建議在100HZ以下用本函數(shù),在高于100HZ的情況下用函數(shù)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. //函數(shù)名稱:void AD9854_SetSine_double(double Freq,u16 Shape)
  156. //函數(shù)功能:AD9854正弦波產(chǎn)生程序
  157. //入口參數(shù):Freq   頻率設(shè)置,取值范圍為0~1/2*SYSCLK
  158. //         Shape  幅度設(shè)置. 為12 Bit,取值范圍為(0~4095)
  159. //出口參數(shù):無
  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);                           //頻率轉(zhuǎn)換
  167.          
  168.         for(count=6;count>0;)                            //寫入6字節(jié)的頻率控制字  
  169.     {
  170.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  171.     }
  172.        
  173.         AD9854_WR_Byte(0x21,Shape>>8);          //設(shè)置I通道幅度
  174.         AD9854_WR_Byte(0x22,(u8)(Shape&0xff));
  175.        
  176.         AD9854_WR_Byte(0x23,Shape>>8);          //設(shè)置Q通道幅度
  177.         AD9854_WR_Byte(0x24,(u8)(Shape&0xff));

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

  181. //====================================================================================
  182. //函數(shù)名稱:void AD9854_InitFSK(void)
  183. //函數(shù)功能:AD9854的FSK初始化
  184. //入口參數(shù):無
  185. //出口參數(shù):無
  186. //====================================================================================
  187. void AD9854_InitFSK(void)
  188. {
  189.         AD9854_WR=1;                        //將讀、寫控制端口設(shè)為無效
  190.     AD9854_RD=1;
  191.     AD9854_UDCLK=0;
  192.     AD9854_RST=1;                        //復(fù)位AD9854
  193.     AD9854_RST=0;       

  194.         AD9854_WR_Byte(0x1d,0x10);               //關(guān)閉比較器
  195.         AD9854_WR_Byte(0x1e,CLK_Set);           //設(shè)置系統(tǒng)時(shí)鐘倍頻
  196.         AD9854_WR_Byte(0x1f,0x02);               //設(shè)置系統(tǒng)為模式1,由外部更新
  197.         AD9854_WR_Byte(0x20,0x60);              //設(shè)置為可調(diào)節(jié)幅度,取消插值補(bǔ)償

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

  201. //====================================================================================
  202. //函數(shù)名稱:void AD9854_SetFSK(u32 Freq1,u32 Freq2)
  203. //函數(shù)功能:AD9854的FSK設(shè)置
  204. //入口參數(shù):Freq1   FSK頻率1   
  205. //         Freq2   FSK頻率2
  206. //出口參數(shù):無
  207. //====================================================================================
  208. void AD9854_SetFSK(u32 Freq1,u32 Freq2)
  209. {
  210.     u8 count=6;
  211.         u8 Adress1,Adress2;

  212.         const u16 Shape=4000;              //幅度設(shè)置. 為12 Bit,取值范圍為(0~4095)
  213.        
  214.         Adress1=0x04;                                 //選擇頻率控制字1地址的初值
  215.         Adress2=0x0a;                                 //選擇頻率控制字2地址的初值
  216.        
  217.         Freq_convert(Freq1);               //頻率轉(zhuǎn)換1
  218.        
  219.         for(count=6;count>0;)                  //寫入6字節(jié)的頻率控制字  
  220.     {
  221.                 AD9854_WR_Byte(Adress1++,FreqWord[--count]);
  222.     }
  223.        
  224.         Freq_convert(Freq2);               //頻率轉(zhuǎn)換2

  225.         for(count=6;count>0;)                  //寫入6字節(jié)的頻率控制字  
  226.     {
  227.                 AD9854_WR_Byte(Adress2++,FreqWord[--count]);
  228.     }

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

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

  237. //====================================================================================
  238. //函數(shù)名稱:void AD9854_InitBPSK(void)
  239. //函數(shù)功能:AD9854的BPSK初始化
  240. //入口參數(shù):無
  241. //出口參數(shù):無
  242. //====================================================================================
  243. void AD9854_InitBPSK(void)
  244. {
  245.         AD9854_WR=1;                    //將讀、寫控制端口設(shè)為無效
  246.     AD9854_RD=1;
  247.     AD9854_UDCLK=0;
  248.     AD9854_RST=1;                   //復(fù)位AD9854
  249.     AD9854_RST=0;

  250.         AD9854_WR_Byte(0x1d,0x10);               //關(guān)閉比較器
  251.         AD9854_WR_Byte(0x1e,CLK_Set);           //設(shè)置系統(tǒng)時(shí)鐘倍頻
  252.         AD9854_WR_Byte(0x1f,0x08);              //設(shè)置系統(tǒng)為模式4,由外部更新
  253.         AD9854_WR_Byte(0x20,0x60);              //設(shè)置為可調(diào)節(jié)幅度,取消插值補(bǔ)償

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

  257. //====================================================================================
  258. //函數(shù)名稱:void AD9854_SetBPSK(u16 Phase1,u16 Phase2)
  259. //函數(shù)功能:AD9854的BPSK設(shè)置
  260. //入口參數(shù):Phase1   調(diào)制相位1
  261. //         Phase2        調(diào)制相位2
  262. //出口參數(shù):無
  263. //說明:   相位為14Bit,取值從0~16383,谷雨建議在用本函數(shù)的時(shí)候?qū)hase1設(shè)置為0,
  264. //         將Phase1設(shè)置為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);                   //設(shè)置相位1
  274.         AD9854_WR_Byte(0x01,(u8)(Phase1&0xff));
  275.        
  276.         AD9854_WR_Byte(0x02,Phase2>>8);                  //設(shè)置相位2
  277.         AD9854_WR_Byte(0x03,(u8)(Phase2&0xff));

  278.         Freq_convert(Freq);                            //頻率轉(zhuǎn)換

  279.         for(count=6;count>0;)                                 //寫入6字節(jié)的頻率控制字  
  280.     {
  281.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  282.     }

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

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

  291. //====================================================================================
  292. //函數(shù)名稱:void AD9854_InitOSK(void)
  293. //函數(shù)功能:AD9854的OSK初始化
  294. //入口參數(shù):無
  295. //出口參數(shù):無
  296. //====================================================================================
  297. void AD9854_InitOSK(void)
  298. {
  299.         AD9854_WR=1;                           //將讀、寫控制端口設(shè)為無效
  300.         AD9854_RD=1;
  301.         AD9854_UDCLK=0;
  302.         AD9854_RST=1;                          //復(fù)位AD9854
  303.         AD9854_RST=0;

  304.     AD9854_WR_Byte(0x1d,0x10);                   //關(guān)閉比較器
  305.         AD9854_WR_Byte(0x1e,CLK_Set);               //設(shè)置系統(tǒng)時(shí)鐘倍頻
  306.         AD9854_WR_Byte(0x1f,0x00);                   //設(shè)置系統(tǒng)為模式0,由外部更新
  307.         AD9854_WR_Byte(0x20,0x70);                   //設(shè)置為可調(diào)節(jié)幅度,取消插值補(bǔ)償,通斷整形內(nèi)部控制

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

  311. //====================================================================================
  312. //函數(shù)名稱:void AD9854_SetOSK(u8 RateShape)
  313. //函數(shù)功能:AD9854的OSK設(shè)置
  314. //入口參數(shù): RateShape    OSK斜率,取值為4~255,小于4則無效
  315. //出口參數(shù):無
  316. //====================================================================================
  317. void AD9854_SetOSK(u8 RateShape)
  318. {
  319.         u8 count;

  320.         const u32 Freq=60000;                         //設(shè)置載頻
  321.     const u16  Shape=4000;                        //幅度設(shè)置. 為12 Bit,取值范圍為(0~4095)

  322.         u8 Adress;
  323.         Adress=0x04;               //選擇頻率控制字地址的初值

  324.         Freq_convert(Freq);                       //頻率轉(zhuǎn)換

  325.         for(count=6;count>0;)                                 //寫入6字節(jié)的頻率控制字  
  326.     {
  327.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  328.     }

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


  334.     AD9854_WR_Byte(0x25,RateShape);                                       //設(shè)置OSK斜率

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

  338. //====================================================================================
  339. //函數(shù)名稱:void AD9854_InitAM(void)
  340. //函數(shù)功能:AD9854的AM初始化
  341. //入口參數(shù):無
  342. //出口參數(shù):無
  343. //====================================================================================
  344. void AD9854_InitAM(void)
  345. {
  346.         u8 count;

  347.         const u32 Freq=60000;                         //設(shè)置載頻

  348.         u8  Adress;
  349.         Adress=0x04;      //選擇頻率控制字地址的初值
  350.        
  351.     AD9854_WR=1;    //將讀、寫控制端口設(shè)為無效
  352.     AD9854_RD=1;
  353.     AD9854_UDCLK=0;
  354.     AD9854_RST=1;     //復(fù)位AD9854
  355.     AD9854_RST=0;

  356.         AD9854_WR_Byte(0x1d,0x10);                          //關(guān)閉比較器
  357.         AD9854_WR_Byte(0x1e,CLK_Set);                     //設(shè)置系統(tǒng)時(shí)鐘倍頻
  358.         AD9854_WR_Byte(0x1f,0x00);                         //設(shè)置系統(tǒng)為模式0,由外部更新
  359.         AD9854_WR_Byte(0x20,0x60);                          //設(shè)置為可調(diào)節(jié)幅度,取消插值補(bǔ)償

  360.         Freq_convert(Freq);                            //頻率轉(zhuǎn)換

  361.         for(count=6;count>0;)                                 //寫入6字節(jié)的頻率控制字  
  362.     {
  363.                 AD9854_WR_Byte(Adress++,FreqWord[--count]);
  364.     }

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

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

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

  384. //====================================================================================
  385. //函數(shù)名稱:void AD9854_InitRFSK(void)
  386. //函數(shù)功能:AD9854的RFSK初始化
  387. //入口參數(shù):無
  388. //出口參數(shù):無
  389. //====================================================================================
  390. void AD9854_InitRFSK(void)
  391. {
  392.         AD9854_WR=1;                      //將讀、寫控制端口設(shè)為無效
  393.     AD9854_RD=1;
  394.     AD9854_UDCLK=0;
  395.     AD9854_RST=1;                     //復(fù)位AD9854
  396.     AD9854_RST=0;
  397.        
  398.         AD9854_WR_Byte(0x1d,0x10);               //關(guān)閉比較器
  399.         AD9854_WR_Byte(0x1e,CLK_Set);           //設(shè)置系統(tǒng)時(shí)鐘倍頻
  400.         AD9854_WR_Byte(0x1f,0x24);                //設(shè)置系統(tǒng)為模式2,由外部更新,使能三角波掃頻功能
  401.         AD9854_WR_Byte(0x20,0x60);                //設(shè)置為可調(diào)節(jié)幅度,取消插值補(bǔ)償       

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

  405. //====================================================================================
  406. //函數(shù)名稱:void AD9854_SetRFSK(void)
  407. //函數(shù)功能:AD9854的RFSK設(shè)置
  408. //入口參數(shù):Freq_Low          RFSK低頻率           48Bit
  409. //         Freq_High         RFSK高頻率           48Bit
  410. //         Freq_Up_Down                 步進(jìn)頻率           48Bit
  411. //                   FreRate           斜率時(shí)鐘控制  20Bit
  412. //出口參數(shù):無
  413. //注:     每兩個(gè)脈沖之間的時(shí)間周期用下式表示(FreRate +1)*(System Clock ),一個(gè)脈沖,
  414. //         頻率 上升或者下降 一個(gè)步進(jìn)頻率
  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;                           //幅度設(shè)置. 為12 Bit,取值范圍為(0~4095)

  421.         Adress1=0x04;                     //選擇頻率控制字地址的初值
  422.         Adress2=0x0a;
  423.         Adress3=0x10;

  424.         Freq_convert(Freq_Low);                             //頻率1轉(zhuǎn)換

  425.         for(count=6;count>0;)                                 //寫入6字節(jié)的頻率控制字  
  426.     {
  427.                 AD9854_WR_Byte(Adress1++,FreqWord[--count]);
  428.     }

  429.         Freq_convert(Freq_High);                             //頻率2轉(zhuǎn)換

  430.         for(count=6;count>0;)                                 //寫入6字節(jié)的頻率控制字  
  431.     {
  432.                 AD9854_WR_Byte(Adress2++,FreqWord[--count]);
  433.     }

  434.         Freq_convert(Freq_Up_Down);                             //步進(jìn)頻率轉(zhuǎn)換

  435.         for(count=6;count>0;)                                       //寫入6字節(jié)的頻率控制字  
  436.     {
  437.                 AD9854_WR_Byte(Adress3++,FreqWord[--count]);
  438.     }

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

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

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

  450. //=================================================================
  451. // 函數(shù)名稱 :void delay_us (u16 us)
  452. // 函數(shù)功能 :us級延時(shí),大概2~4 us
  453. // 入口參數(shù) :us  延時(shí)時(shí)間的長短
  454. // 出口參數(shù) :無
  455. //=================================================================

  456. //測試正弦波,采用120MHZ SYSCLK時(shí),出來10MHZ波形,波形很好,測試成功
  457. //當(dāng)采用300MHZ SYSCLK時(shí),測試50MHZ波形時(shí),DDS發(fā)熱厲害,且波形衰減嚴(yán)重,幅度在35mV左右


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

  465. //測試正弦波,采用120MHZ SYSCLK時(shí),出來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,測試成功,結(jié)果對應(yīng)"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);              //延時(shí)時(shí)間長,便于觀察
  483.                 AD9854_FDATA = 0;
  484.                 delay_us_us(30000);
  485.         }                       
  486. ……………………

  487. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
AD9854.zip (5.11 KB, 下載次數(shù): 69)




評分

參與人數(shù) 2黑幣 +55 收起 理由
TWM + 5
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:268627 發(fā)表于 2018-9-14 13:23 | 只看該作者
謝謝樓主分享的資料
回復(fù)

使用道具 舉報(bào)

板凳
ID:480731 發(fā)表于 2019-3-5 08:39 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

地板
ID:530600 發(fā)表于 2023-5-17 17:33 | 只看該作者
這不是51單片機(jī)嗎  為什么里面我看著像是32呢  還有sys.h   還有ODR寄存器
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产午夜精品久久久 | 天天综合久久 | 天堂一区在线观看 | 日本天天操 | 国产日韩精品在线 | 国产专区在线 | 成人福利网 | 亚洲欧美在线视频 | 伊人精品一区二区三区 | 色精品视频 | 黑人精品xxx一区一二区 | 天堂色区| 综合网在线 | 久艹网站 | av一区二区在线观看 | 欧美日韩一区精品 | 欧美二区在线 | 成人免费在线电影 | 久久亚洲一区二区 | 我想看一级黄色毛片 | 成人亚洲在线 | 看片wwwwwwwwwww| 夜夜久久 | 欧美jizzhd精品欧美巨大免费 | 中文字幕一区二区三区在线观看 | 国产成人免费视频网站高清观看视频 | 中文字幕一区二区三区四区五区 | 国产精品久久久久久久免费观看 | a a毛片 | 国产成人综合亚洲欧美94在线 | 国产综合精品一区二区三区 | 一道本在线 | www日日日| 欧美爱爱视频 | 欧美日韩大片 | 国产99久久精品一区二区永久免费 | 三级av在线| 久久久涩 | 91观看| 在线一区 | 91在线资源|