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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3640|回復: 1
打印 上一主題 下一主題
收起左側

AD9833+STM32單片機驅動程序 電路原理圖 引腳圖PDF資料

[復制鏈接]
跳轉到指定樓層
樓主
AD9833模塊電路原理圖如下:


AD9833引腳圖及pdf資料:


實驗操作:
1、使用排線連接驅動板與AD9833模塊,驅動板上排線方向唯一,驅動板以及DDS模塊上,板子背面雙排針,方形焊盤為雙排針1腳,對應連接即可
2、使用5V電源連接AD9833模塊,使用5V電源連接DDS驅動板,
3、AD9833模塊側面輸出高頻頭,使用SMA屏蔽線,連接示波器
3、編譯該代碼,使用jlink下載器下載代碼到驅動板
4、確保AD9833模塊已上電。按下驅動板復位鍵(或驅動板重新上電),調整示波器時間檔位到合適位置,即可觀察到輸出波形

5、如使用自己的STM32開發板,請按下方描述接線,如使用其他引腳請自行移植更改程序。
/*********************************************************************************************/

【*】 引腳分配
   
STM32控制板        模塊絲印    芯片引腳名    功能
PA3        ----->    SYKC        FSYNC        低電平有效控制輸入
PA4        <----->    CLK        SCLK        串行時鐘輸入
PA5        ----->    DATA        SDATA        串行數據輸入
(3.3V,5V均可)    ----->    V+            控制板3.3V或5V與AD9833模塊V+連接。
GND        <---->    GND            控制板與AD9833模塊需共地。
浮空        ------    其他            所有未說明但模塊有留出管腳,未使用可直接浮空,功能請參考數據手冊   

單片機源程序如下:
  1. 作者:康威電子,大家可以找他獲得模塊
  2. /**********************************************************
  3. 功能:參考時鐘25MHz,stm32f103rct6控制AD9833點頻調相位輸出,正弦波范圍0-10M,
  4.                         方波:0-500K,三角波:0-1M 。
  5. 接口:控制引腳接口請參照AD9833.h
  6. 時間:2023/06/08
  7. 版本:2.1
  8. 作者:康威電子
  9. 其他:本程序只供學習使用

  10.                                         AD9833        單片機
  11. 硬件連接:        SYKC——PA3;     
  12.                                         CLK ——PA4;   
  13.           DATA——PA5;              
  14.           V+——(3.3V,5V均可)
  15.           GND--GND(0V)  

  16. **********************************************************/

  17. #include "stm32_config.h"
  18. #include "stdio.h"
  19. #include "AD9833.h"

  20. int main(void)
  21. {
  22.         MY_NVIC_PriorityGroup_Config(NVIC_PriorityGroup_2);        //設置中斷分組
  23.         delay_init(72);        //初始化延時函數
  24.         delay_ms(500);//延時一會兒,等待上電穩定,確保AD9833比控制板先上電。
  25.         
  26.         //代碼移植建議
  27.         //1.修改頭文件AD9833.h中,自己控制板實際需要使用哪些控制引腳。如AD9833_FSYNC腳改成PA1控制,則定義"#define AD9833_FSYNC        PAout(1)"
  28.         //2.修改C文件AD9833.c中,AD983_GPIO_Init函數,所有用到管腳的GPIO輸出功能初始化
  29.         //3.完成
  30.         
  31.         AD9833_Init();//IO口及AD9833寄存器初始化
  32.         
  33.         //頻率入口參數為float,可使信號的頻率更精確
  34.         AD9833_SetFrequencyQuick(1000.0,AD9833_OUT_SINUS);//寫輸出頻率1000.0Hz,輸出正弦波
  35. //        AD9833_SetFrequencyQuick(1000.0,AD9833_OUT_TRIANGLE);//寫輸出頻率1000.0Hz,輸出三角波
  36. //        AD9833_SetFrequencyQuick(1000.0,AD9833_OUT_MSB);//寫輸出頻率1000.0Hz,輸出方波


  37.         while(1)
  38.         {
  39.                 AD9833_SetPhase(AD9833_REG_PHASE0,0);        //設置0°相位,范圍:0-4095(0-360°)
  40.                 delay_ms(2);
  41.                 AD9833_SetPhase(AD9833_REG_PHASE0,2048);//設置180°相位,范圍:0-4095(0-360°)
  42.                 delay_ms(2);
  43.         
  44.         }
  45. }


復制代碼
  1. #include "AD9833.h"               
  2. #include "delay.h"        

  3. //時鐘速率為25 MHz時, 可以實現0.1 Hz的分辨率;而時鐘速率為1 MHz時,則可以實現0.004 Hz的分辨率。
  4. //調整參考時鐘修改此處即可。
  5. #define FCLK 25000000        //設置參考時鐘25MHz,板默認板載晶振頻率25Mhz。

  6. #define RealFreDat    268435456.0/FCLK//總的公式為 Fout=(Fclk/2的28次方)*28位寄存器的值

  7. /************************************************************
  8. ** 函數名稱 :void AD983_GPIO_Init(void)  
  9. ** 函數功能 :初始化控制AD9833需要用到的IO口
  10. ** 入口參數 :無
  11. ** 出口參數 :無
  12. ** 函數說明 :無
  13. **************************************************************/

  14. void AD983_GPIO_Init(void)
  15. {

  16.     GPIO_InitTypeDef GPIO_InitStructure ;
  17.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //使能PA端口時鐘

  18.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5;

  19.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;

  20.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;

  21.     GPIO_Init(GPIOA ,&GPIO_InitStructure) ;
  22. }

  23. /**********************************************************************************************
  24. ** 函數名稱 :unsigned char AD9833_SPI_Write(unsigned char* data,unsigned char bytesNumber)
  25. ** 函數功能 :使用模擬SPI向AD9833寫數據
  26. ** 入口參數 :* data:寫入數據緩沖區,第一個字節是寄存器地址;第二個字節開始要寫入的數據。
  27.                                                 bytesNumber: 要寫入的字節數
  28. ** 出口參數 :無
  29. ** 函數說明 :無
  30. ************************************************************************************************/
  31. unsigned char AD9833_SPI_Write(unsigned char* data,unsigned char bytesNumber)
  32. {
  33.   unsigned char i,j;
  34.         unsigned char writeData[5]        = {0,0, 0, 0, 0};
  35.         
  36.     AD9833_SCLK=1;
  37.     AD9833_FSYNC=0 ;

  38.         for(i = 0;i < bytesNumber;i ++)
  39.         {
  40.                 writeData[i] = data[i + 1];
  41.         }
  42.         
  43.         for(i=0 ;i<bytesNumber ;i++)
  44.         {
  45.     for(j=0 ;j<8 ;j++)      
  46.                 {
  47.         if(writeData[i] & 0x80)
  48.           AD9833_SDATA=1;
  49.         else
  50.           AD9833_SDATA=0;

  51.         AD9833_SCLK=0;
  52.         writeData[i] <<= 1;
  53.         AD9833_SCLK=1;
  54.     }
  55.         }
  56.     AD9833_SDATA=1;
  57.     AD9833_FSYNC=1;
  58.                
  59.                 return i;
  60. }

  61. /************************************************************
  62. ** 函數名稱 :void AD9833_Init(void)  
  63. ** 函數功能 :初始化控制AD9833需要用到的IO口及寄存器
  64. ** 入口參數 :無
  65. ** 出口參數 :無
  66. ** 函數說明 :無
  67. **************************************************************/
  68. void AD9833_Init(void)
  69. {
  70.     AD983_GPIO_Init();
  71.     AD9833_SetRegisterValue(AD9833_REG_CMD | AD9833_RESET);
  72. }

  73. /*****************************************************************************************
  74. ** 函數名稱 :void AD9833_Reset(void)  
  75. ** 函數功能 :設置AD9833的復位位
  76. ** 入口參數 :無
  77. ** 出口參數 :無
  78. ** 函數說明 :無
  79. *******************************************************************************************/
  80. void AD9833_Reset(void)
  81. {
  82.         AD9833_SetRegisterValue(AD9833_REG_CMD | AD9833_RESET);
  83.         delay_ms(10);
  84. }

  85. /*****************************************************************************************
  86. ** 函數名稱 :void AD9833_ClearReset(void)  
  87. ** 函數功能 :清除AD9833的復位位。
  88. ** 入口參數 :無
  89. ** 出口參數 :無
  90. ** 函數說明 :無
  91. *******************************************************************************************/
  92. void AD9833_ClearReset(void)
  93. {
  94.         AD9833_SetRegisterValue(AD9833_REG_CMD);
  95. }

  96. /*****************************************************************************************
  97. ** 函數名稱 :void AD9833_SetRegisterValue(unsigned short regValue)
  98. ** 函數功能 :將值寫入寄存器
  99. ** 入口參數 :regValue:要寫入寄存器的值。
  100. ** 出口參數 :無
  101. ** 函數說明 :無
  102. *******************************************************************************************/
  103. void AD9833_SetRegisterValue(unsigned short regValue)
  104. {
  105.         unsigned char data[5] = {0x03, 0x00, 0x00};        
  106.         
  107.         data[1] = (unsigned char)((regValue & 0xFF00) >> 8);
  108.         data[2] = (unsigned char)((regValue & 0x00FF) >> 0);
  109.         AD9833_SPI_Write(data,2);
  110. }

  111. /*****************************************************************************************
  112. ** 函數名稱 :void AD9833_SetFrequencyQuick(float fout,unsigned short type)
  113. ** 函數功能 :寫入頻率寄存器
  114. ** 入口參數 :val:要寫入的頻率值。
  115. **                                                type:波形類型;AD9833_OUT_SINUS正弦波、AD9833_OUT_TRIANGLE三角波、AD9833_OUT_MSB方波
  116. ** 出口參數 :無
  117. ** 函數說明 :時鐘速率為25 MHz時, 可以實現0.1 Hz的分辨率;而時鐘速率為1 MHz時,則可以實現0.004 Hz的分辨率。
  118. *******************************************************************************************/
  119. void AD9833_SetFrequencyQuick(float fout,unsigned short type)
  120. {
  121.         AD9833_SetFrequency(AD9833_REG_FREQ0, fout,type);
  122. }

  123. /*****************************************************************************************
  124. ** 函數名稱 :void AD9833_SetFrequency(unsigned short reg, float fout,unsigned short type)
  125. ** 函數功能 :寫入頻率寄存器
  126. ** 入口參數 :reg:要寫入的頻率寄存器。
  127. **                                                val:要寫入的值。
  128. **                                                type:波形類型;AD9833_OUT_SINUS正弦波、AD9833_OUT_TRIANGLE三角波、AD9833_OUT_MSB方波
  129. ** 出口參數 :無
  130. ** 函數說明 :無
  131. *******************************************************************************************/
  132. void AD9833_SetFrequency(unsigned short reg, float fout,unsigned short type)
  133. {
  134.         unsigned short freqHi = reg;
  135.         unsigned short freqLo = reg;
  136.         unsigned long val=RealFreDat*fout;
  137.         freqHi |= (val & 0xFFFC000) >> 14 ;
  138.         freqLo |= (val & 0x3FFF);
  139.         AD9833_SetRegisterValue(AD9833_B28|type);
  140.         AD9833_SetRegisterValue(freqLo);
  141.         AD9833_SetRegisterValue(freqHi);
  142. }

  143. /*****************************************************************************************
  144. ** 函數名稱 :void AD9833_SetPhase(unsigned short reg, unsigned short val)
  145. ** 函數功能 :寫入相位寄存器。
  146. ** 入口參數 :reg:要寫入的相位寄存器。
  147. **                                                val:要寫入的值。
  148. ** 出口參數 :無
  149. ** 函數說明 :無
  150. *******************************************************************************************/
  151. void AD9833_SetPhase(unsigned short reg, unsigned short val)
  152. {
  153.         unsigned short phase = reg;
  154.         phase |= val;
  155.         AD9833_SetRegisterValue(phase);
  156. }

  157. /*****************************************************************************************
  158. ** 函數名稱 :void AD9833_Setup(unsigned short freq, unsigned short phase,unsigned short type)
  159. ** 函數功能 :寫入相位寄存器。
  160. ** 入口參數 :freq:使用的頻率寄存器。
  161.                                                         phase:使用的相位寄存器。
  162.                                                         type:要輸出的波形類型。
  163. ** 出口參數 :無
  164. ** 函數說明 :無
  165. *******************************************************************************************/
  166. void AD9833_Setup(unsigned short freq, unsigned short phase,unsigned short type)
  167. {
  168.         unsigned short val = 0;
  169.         
  170.         val = freq | phase | type;
  171.         AD9833_SetRegisterValue(val);
  172. }

  173. /*****************************************************************************************
  174. ** 函數名稱 :void AD9833_SetWave(unsigned short type)
  175. ** 函數功能 :設置要輸出的波形類型。
  176. ** 入口參數 :type:要輸出的波形類型。
  177. ** 出口參數 :無
  178. ** 函數說明 :無
  179. *******************************************************************************************/
  180. void AD9833_SetWave(unsigned short type)
  181. {
  182.         AD9833_SetRegisterValue(type);
  183. }
復制代碼

Keil代碼和pdf資料下載: AD9833模塊驅動+PDF-V2.1.7z (1.7 MB, 下載次數: 63)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:165291 發表于 2023-8-12 15:25 | 只看該作者
好東西,我之前是用51程序改的,試試這個怎么樣!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 7777奇米影视| a看片 | 四虎海外| 一区二区三区欧美 | 国产在线看片 | 国产91 在线播放 | 欧美日韩一区二区在线播放 | 翔田千里一区二区 | 91资源在线观看 | 91超碰在线 | 久久久婷婷| 国产色网 | 亚洲成人精品在线观看 | 国产精品污www在线观看 | 国产毛片久久久久久久久春天 | 久久精品色视频 | 国产精品视频999 | 亚洲人成人一区二区在线观看 | 国产男女视频 | 我爱操| 97人人澡人人爽91综合色 | 第四色影音先锋 | 日韩网| 日韩一区中文字幕 | 国产福利91精品一区二区三区 | 一级做受毛片免费大片 | 久久精品手机视频 | 久久久综合| a黄视频 | 久久精品aaa| 日日噜噜噜夜夜爽爽狠狠视频97 | 中文字幕一区二区三区不卡 | 免费视频一区二区 | 欧美色欧美亚洲另类七区 | 中文字幕精 | 免费成人高清在线视频 | 国产精品久久久久久久久久妇女 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 日韩一区二区在线观看视频 | yiren22 亚洲综合 | 国产毛片视频 |