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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AD9833信號發生器的STM32源程序與原理圖等資料下載

  [復制鏈接]
跳轉到指定樓層
樓主
AD9833+STM32 信號發生器源程序


電路原理圖如下:


AD9833的stm32單片機源程序如下:
  1. /*
  2. ******************************************************************************
  3.                         程序參考ADI,僅供參考交流和學習
  4. ******************************************************************************
  5. */

  6. #include "ad9833.h"
  7. #include "common.h"



  8. //***************************
  9. //                Pin assign                  
  10. //                STM32                        AD9833
  11. //                GPIOB_Pin_15                 ---> FSYNC
  12. //                GPIOB_Pin_14                 ---> SCK
  13. //                GPIOB_Pin_13                 ---> DAT
  14. //***************************       

  15.         /*端口定義 */
  16.         #define PORT_FSYNC        GPIOB
  17.         #define PIN_FSYNC        GPIO_Pin_15

  18.         #define PORT_SCK        GPIOB
  19.         #define PIN_SCK                GPIO_Pin_14

  20.         #define PORT_DAT        GPIOB
  21.         #define PIN_DAT                GPIO_Pin_13

  22. //****************************************************************

  23.         #define FSYNC_0()                GPIO_ResetBits(PORT_FSYNC, PIN_FSYNC)
  24.         #define FSYNC_1()                GPIO_SetBits(PORT_FSYNC, PIN_FSYNC)

  25.         #define SCK_0()                GPIO_ResetBits(PORT_SCK, PIN_SCK)
  26.         #define SCK_1()                GPIO_SetBits(PORT_SCK, PIN_SCK)

  27.         #define DAT_0()                GPIO_ResetBits(PORT_DAT, PIN_DAT)
  28.         #define DAT_1()                GPIO_SetBits(PORT_DAT, PIN_DAT)       


  29. //初始化AD9833 GPIO

  30. void AD9833_Init_GPIO()
  31. {
  32.     GPIO_InitTypeDef GPIO_InitStructure;
  33.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  34.     GPIO_InitStructure.GPIO_Pin = PIN_FSYNC|PIN_SCK|PIN_DAT;
  35.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  36.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  37.     GPIO_Init(PORT_SCK, &GPIO_InitStructure);
  38. }



  39. /*
  40. *********************************************************************************************************
  41. *        函 數 名: AD9833_Delay
  42. *        功能說明: 時鐘延時
  43. *        形    參: 無
  44. *        返 回 值: 無
  45. *********************************************************************************************************
  46. */
  47. static void AD9833_Delay(void)
  48. {
  49.         uint16_t i;
  50.         for (i = 0; i < 1; i++);
  51. }



  52. /*
  53. *********************************************************************************************************
  54. *        函 數 名: AD9833_Write
  55. *        功能說明: 向SPI總線發送16個bit數據
  56. *        形    參: TxData : 數據
  57. *        返 回 值: 無
  58. *********************************************************************************************************
  59. */
  60. void AD9833_Write(unsigned int TxData)
  61. {
  62.         unsigned char i;

  63.         SCK_1();
  64.         //AD9833_Delay();
  65.         FSYNC_1();
  66.         //AD9833_Delay();
  67.         FSYNC_0();
  68.         //AD9833_Delay();
  69.         for(i = 0; i < 16; i++)
  70.         {
  71.                 if (TxData & 0x8000)
  72.                         DAT_1();
  73.                 else
  74.                         DAT_0();
  75.                
  76.                 AD9833_Delay();
  77.                 SCK_0();
  78.                 AD9833_Delay();               
  79.                 SCK_1();
  80.                
  81.                 TxData <<= 1;
  82.         }
  83.         FSYNC_1();
  84.        
  85. }

  86. /*
  87. *********************************************************************************************************
  88. *        函 數 名: AD9833_WaveSeting
  89. *        功能說明: 向SPI總線發送16個bit數據
  90. *        形    參: 1.Freq: 頻率值, 0.1 hz - 12Mhz
  91.                           2.Freq_SFR: 0 或 1
  92.                           3.WaveMode: TRI_WAVE(三角波),SIN_WAVE(正弦波),SQU_WAVE(方波)
  93.                           4.Phase : 波形的初相位
  94. *        返 回 值: 無
  95. *********************************************************************************************************
  96. */
  97. void AD9833_WaveSeting(double Freq,unsigned int Freq_SFR,unsigned int WaveMode,unsigned int Phase )
  98. {

  99.                 int frequence_LSB,frequence_MSB,Phs_data;
  100.                 double   frequence_mid,frequence_DATA;
  101.                 long int frequence_hex;

  102.                 /*********************************計算頻率的16進制值***********************************/
  103.                 frequence_mid=268435456/25;//適合25M晶振
  104.                 //如果時鐘頻率不為25MHZ,修改該處的頻率值,單位MHz ,AD9833最大支持25MHz
  105.                 frequence_DATA=Freq;
  106.                 frequence_DATA=frequence_DATA/1000000;
  107.                 frequence_DATA=frequence_DATA*frequence_mid;
  108.                 frequence_hex=frequence_DATA;  //這個frequence_hex的值是32位的一個很大的數字,需要拆分成兩個14位進行處理;
  109.                 frequence_LSB=frequence_hex; //frequence_hex低16位送給frequence_LSB
  110.                 frequence_LSB=frequence_LSB&0x3fff;//去除最高兩位,16位數換去掉高位后變成了14位
  111.                 frequence_MSB=frequence_hex>>14; //frequence_hex高16位送給frequence_HSB
  112.                 frequence_MSB=frequence_MSB&0x3fff;//去除最高兩位,16位數換去掉高位后變成了14位

  113.                 Phs_data=Phase|0xC000;        //相位值
  114.                 AD9833_Write(0x0100); //復位AD9833,即RESET位為1
  115.                 AD9833_Write(0x2100); //選擇數據一次寫入,B28位和RESET位為1

  116.                 if(Freq_SFR==0)                                  //把數據設置到設置頻率寄存器0
  117.                 {
  118.                          frequence_LSB=frequence_LSB|0x4000;
  119.                          frequence_MSB=frequence_MSB|0x4000;
  120.                          //使用頻率寄存器0輸出波形
  121.                         AD9833_Write(frequence_LSB); //L14,選擇頻率寄存器0的低14位數據輸入
  122.                         AD9833_Write(frequence_MSB); //H14 頻率寄存器的高14位數據輸入
  123.                         AD9833_Write(Phs_data);        //設置相位
  124.                         //AD9833_Write(0x2000); /**設置FSELECT位為0,芯片進入工作狀態,頻率寄存器0輸出波形**/
  125.             }
  126.                 if(Freq_SFR==1)                                //把數據設置到設置頻率寄存器1
  127.                 {
  128.                          frequence_LSB=frequence_LSB|0x8000;
  129.                          frequence_MSB=frequence_MSB|0x8000;
  130.                         //使用頻率寄存器1輸出波形
  131.                         AD9833_Write(frequence_LSB); //L14,選擇頻率寄存器1的低14位輸入
  132.                         AD9833_Write(frequence_MSB); //H14 頻率寄存器1為
  133.                         AD9833_Write(Phs_data);        //設置相位
  134.                         //AD9833_Write(0x2800); /**設置FSELECT位為0,設置FSELECT位為1,即使用頻率寄存器1的值,芯片進入工作狀態,頻率寄存器1輸出波形**/
  135.                 }

  136.                 if(WaveMode==TRI_WAVE) //輸出三角波波形
  137.                          AD9833_Write(0x2002);
  138.                 if(WaveMode==SQU_WAVE)        //輸出方波波形
  139.                         AD9833_Write(0x2028);
  140.                 if(WaveMode==SIN_WAVE)        //輸出正弦波形
  141.                         AD9833_Write(0x2000);

  142. }
復制代碼

所有資料51hei提供下載:
F07--AD9833.rar (1.3 MB, 下載次數: 678)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:435064 發表于 2019-1-16 15:10 | 只看該作者
老哥那個30M的是不是有源晶振啊
回復

使用道具 舉報

板凳
ID:379114 發表于 2019-3-14 15:50 | 只看該作者
叫啥名字好呢979 發表于 2019-1-16 15:10
老哥那個30M的是不是有源晶振啊

是的,我之前用過
回復

使用道具 舉報

地板
ID:113501 發表于 2019-3-16 16:13 | 只看該作者
謝謝分享!!
回復

使用道具 舉報

5#
ID:499295 發表于 2019-3-27 17:08 | 只看該作者
我想要 哈哈哈         
回復

使用道具 舉報

6#
ID:492089 發表于 2019-5-8 19:48 | 只看該作者
樓主大大,這個有完整和stm32連接的電路圖嗎?剛剛接觸,謝謝了
回復

使用道具 舉報

7#
ID:514604 發表于 2019-5-27 17:11 | 只看該作者
樓主,請問stm32f103系列可以直接使用嗎?
回復

使用道具 舉報

8#
ID:558625 發表于 2019-6-10 08:36 | 只看該作者
謝謝分享!!
回復

使用道具 舉報

9#
ID:576116 發表于 2019-7-2 09:27 | 只看該作者
謝謝分享!!!!!
回復

使用道具 舉報

10#
ID:597396 發表于 2019-8-8 09:11 來自觸屏版 | 只看該作者
請問怎么設置正弦波的幅值啊
回復

使用道具 舉報

11#
ID:248572 發表于 2019-12-10 13:35 | 只看該作者
謝謝分享
回復

使用道具 舉報

12#
ID:678408 發表于 2020-1-1 11:18 | 只看該作者
謝謝分享
回復

使用道具 舉報

13#
ID:614754 發表于 2020-1-11 23:18 | 只看該作者
我也想要
回復

使用道具 舉報

14#
ID:135635 發表于 2020-3-12 09:18 | 只看該作者

謝謝分享!!
回復

使用道具 舉報

15#
ID:255705 發表于 2020-4-2 15:14 | 只看該作者
謝謝分享
回復

使用道具 舉報

16#
ID:718765 發表于 2020-4-9 18:07 | 只看該作者
謝謝分享
回復

使用道具 舉報

17#
ID:807883 發表于 2020-7-25 14:24 | 只看該作者
請問接口mini的IO口怎么接
回復

使用道具 舉報

18#
ID:807883 發表于 2020-7-25 15:12 | 只看該作者
請問stm32的IO扣是上面的PB13到15嗎?
回復

使用道具 舉報

19#
ID:809182 發表于 2020-7-31 15:55 | 只看該作者
用KE5來寫.29個錯誤.30警告。樓主這要改得有點多
回復

使用道具 舉報

20#
ID:812920 發表于 2020-8-12 10:22 | 只看該作者
晶振是本來就有的還是要自己外加啊
回復

使用道具 舉報

21#
ID:318541 發表于 2020-10-24 10:42 | 只看該作者
參考一下,謝謝樓主
回復

使用道具 舉報

22#
ID:570093 發表于 2021-4-6 09:56 | 只看該作者
quinn1994 發表于 2019-3-14 15:50
是的,我之前用過

四個腳這是有源晶振吧
回復

使用道具 舉報

23#
ID:553615 發表于 2021-5-4 18:03 | 只看該作者
樓主請問下你這個輸出幅度是怎么控制的啊?
回復

使用道具 舉報

24#
ID:553615 發表于 2021-5-4 18:08 | 只看該作者
YSWQ 發表于 2019-8-8 09:11
請問怎么設置正弦波的幅值啊

同問,請問你現在知道了嗎?可以指導下嗎?
回復

使用道具 舉報

25#
ID:958022 發表于 2021-8-1 17:25 | 只看該作者
剛運行了代碼,stm32f103 可以運行,文件里面有AD9833和stm32連線圖,感謝樓主!
回復

使用道具 舉報

26#
ID:882054 發表于 2022-1-9 11:41 | 只看該作者
請問怎么設置正弦波的幅值啊
回復

使用道具 舉報

27#
ID:1022630 發表于 2023-6-26 00:10 | 只看該作者
現在還有人和我一樣開始學嗎
回復

使用道具 舉報

28#
ID:606120 發表于 2025-3-5 21:20 | 只看該作者
感謝樓主,學習一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品国产一区二区4080 | 草草网 | 久久伊人在 | 欧美free性| 国产a区 | 99re在线视频 | 黄色一级免费看 | 亚洲免费大片 | 亚洲精品视频免费观看 | 精品视频一区二区三区四区 | 精品无码久久久久久久动漫 | 日韩伦理一区二区 | 91在线一区| 男女爱爱福利视频 | 久久青草av | 成人久久 | 中文字幕av一区二区三区 | 国产精品夜间视频香蕉 | 久久一级 | 91小视频在线 | 久久久久久久97 | 国产精品毛片一区二区在线看 | 久久精品无码一区二区三区 | 中文字幕一级毛片视频 | 男人天堂网址 | 在线观看涩涩视频 | 亚洲视频免费在线观看 | 欧美一区二区三区在线 | 国产精品亚洲精品久久 | 一区二区免费 | 亚洲一区二区精品 | 色婷婷av一区二区三区软件 | 黄色在线观看网址 | 视频1区| 欧美二区三区 | 欧美日韩在线一区二区 | 中文字幕一区二区三区乱码在线 | av片在线播放 | 欧美成人一区二区三区 | 国精日本亚洲欧州国产中文久久 | 欧美一区二区三区精品 |