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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 11360|回復(fù): 2
收起左側(cè)

基于STM32F407的AD9834驅(qū)動(dòng)程序源碼

[復(fù)制鏈接]
ID:370382 發(fā)表于 2018-7-12 17:26 | 顯示全部樓層 |閱讀模式
寫(xiě)得不是很好,拿出來(lái)分享一下,希望大家能夠提點(diǎn)建議!
/* 注:使用時(shí)先調(diào)用初始化函數(shù)初始化IO配置,然后調(diào)用AD9834_Select_Wave()選擇波形,最后選擇頻率值即可輸出。 */

stm32源碼如下:
  1. //================AD9834.h======================//
  2. /*-----------------------------------------------------
  3.                     AD9834驅(qū)動(dòng)程序
  4.                     STM32固件函數(shù)庫(kù)V2.0
  5.                     2011.3.29
  6. -------------------------------------------------------*/
  7. #ifndef __AD9834_H
  8. #define __AD9834_H
  9. #include "stm32f10x_lib.h"
  10. #define Triangle_Wave    0x2002
  11. #define Sine_Wave  0x2028
  12. /* AD9834晶振頻率 */
  13. #define AD9834_SYSTEM_COLCK     50000000UL
  14. /* AD9834 控制引腳 */
  15. #define AD9834_Control_Port     GPIOC
  16. #define AD9834_FSYNC            GPIO_Pin_6
  17. #define AD9834_SCLK             GPIO_Pin_7
  18. #define AD9834_SDATA            GPIO_Pin_8
  19. #define AD9834_RESET            GPIO_Pin_9
  20. #define AD9834_FSYNC_SET   GPIO_SetBits(AD9834_Control_Port ,AD9834_FSYNC)
  21. #define AD9834_FSYNC_CLR   GPIO_ResetBits(AD9834_Control_Port ,AD9834_FSYNC)
  22. #define AD9834_SCLK_SET   GPIO_SetBits(AD9834_Control_Port ,AD9834_SCLK)
  23. #define AD9834_SCLK_CLR   GPIO_ResetBits(AD9834_Control_Port ,AD9834_SCLK)
  24. #define AD9834_SDATA_SET   GPIO_SetBits(AD9834_Control_Port ,AD9834_SDATA)
  25. #define AD9834_SDATA_CLR   GPIO_ResetBits(AD9834_Control_Port ,AD9834_SDATA)
  26. #define AD9834_RESET_SET   GPIO_SetBits(AD9834_Control_Port ,AD9834_RESET)
  27. #define AD9834_RESET_CLR   GPIO_ResetBits(AD9834_Control_Port ,AD9834_RESET)

  28. #define FREQ_0      0
  29. #define FREQ_1      1

  30. #define DB15        0
  31. #define DB14        0
  32. #define DB13        B28
  33. #define DB12        HLB
  34. #define DB11        FSEL
  35. #define DB10        PSEL
  36. #define DB9         PIN_SW
  37. #define DB8         RESET
  38. #define DB7         SLEEP1
  39. #define DB6         SLEEP12
  40. #define DB5         OPBITEN
  41. #define DB4         SIGN_PIB
  42. #define DB3         DIV2
  43. #define DB2         0
  44. #define DB1         MODE
  45. #define DB0         0
  46. #define CONTROL_REGISTER    (DB15<<15)|(DB14<<14)|(DB13<<13)|(DB12<<12)|(DB11<<11)|(DB10<<10)\
  47.     |(DB9<<9)|(DB8<<8)|(DB7<<7)|(DB6<<6)|(DB5<<5)|(DB4<<4)|(DB3<<3)|(DB2<<2)|(DB1<<1)|(DB0<<0)
  48. /* AD9834函數(shù)聲明 */
  49. extern void AD9834_Write_16Bits(unsigned int data) ;  //寫(xiě)一個(gè)字到AD9834
  50. extern void AD9834_Select_Wave(unsigned int initdata) ; //選擇輸出波形
  51. extern void Init_AD9834() ;//初始化配置
  52. extern void AD9834_Set_Freq(unsigned char freq_number, unsigned long freq) ;//選擇輸出寄存器和輸出頻率值
  53. #endif /* AD9834_H */
  54. //================================================================//
  55. //====================AD9834.c====================================//
  56. #include "stm32f10x_lib.h"
  57. #include "AD9834.h"

  58. /****************************************************************
  59. 函數(shù)名稱(chēng): AD9834_Write_16Bits
  60. 功    能: 向AD9834寫(xiě)入16為數(shù)據(jù)
  61. 參    數(shù): data --  要寫(xiě)入的16位數(shù)據(jù)
  62. 返回值  : 無(wú)
  63. *****************************************************************/
  64. void AD9834_Write_16Bits(unsigned int data)
  65. {
  66.     unsigned char i = 0 ;
  67.    
  68.     AD9834_SCLK_SET ;
  69.     AD9834_FSYNC_CLR ;
  70.     for(i=0 ;i<16 ;i++)
  71.     {
  72.         if(data & 0x8000)
  73.           AD9834_SDATA_SET ;
  74.         else
  75.           AD9834_SDATA_CLR ;
  76.         
  77.         AD9834_SCLK_CLR ;
  78.         data <<= 1 ;
  79.         AD9834_SCLK_SET ;
  80.     }
  81.    
  82.     AD9834_FSYNC_SET ;
  83. }
  84. /***********************************************************************************
  85. 函數(shù)名稱(chēng):AD9834_Select_Wave
  86. 功    能:軟件為控制,
  87.     --------------------------------------------------
  88.     IOUT正弦波 ,SIGNBITOUT方波 ,寫(xiě)FREQREG0 ,寫(xiě)PHASE0
  89.     ad9834_write_16bit(0x2028)   一次性寫(xiě)FREQREG0
  90.     ad9834_write_16bit(0x0038)   單獨(dú)改寫(xiě)FREQREG0的LSB
  91.     ad9834_write_16bit(0x1038)   單獨(dú)改寫(xiě)FREQREG0的MSB
  92.     --------------------------------------------------
  93.     IOUT三角波 ,寫(xiě)PHASE0
  94.     ad9834_write_16bit(0x2002)   一次性寫(xiě)FREQREG0
  95.     ad9834_write_16bit(0x0002)   單獨(dú)改寫(xiě)FREQREG0的LSB
  96.     ad9834_write_16bit(0x1008)   單獨(dú)改寫(xiě)FREQREG0的MSB
  97. 參    數(shù):initdata -- 要輸入的命令
  98. 返回值  :無(wú)
  99. ************************************************************************************/
  100. void AD9834_Select_Wave(unsigned int initdata)
  101. {
  102.     AD9834_FSYNC_SET;
  103.     AD9834_SCLK_SET;
  104.    
  105.     AD9834_RESET_SET;
  106.     AD9834_RESET_SET;
  107.     AD9834_RESET_CLR;
  108.      
  109.     AD9834_Write_16Bits(initdata);
  110. }
  111. /****************************************************************
  112. 函數(shù)名稱(chēng): Init_AD9834
  113. 功    能: 初始化AD9834控制引腳
  114. 參    數(shù): 無(wú)
  115. 返回值  : 無(wú)
  116. *****************************************************************/
  117. void Init_AD9834()
  118. {
  119.     GPIO_InitTypeDef GPIO_InitStructure ;
  120.     GPIO_InitStructure.GPIO_Pin = AD9834_FSYNC | AD9834_SCLK | AD9834_SDATA | AD9834_RESET ;
  121.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
  122.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
  123.     GPIO_Init(AD9834_Control_Port ,&GPIO_InitStructure) ;
  124. }
  125. /****************************************************************
  126. 函數(shù)名稱(chēng): AD9834_Set_Freq
  127. 功    能: 設(shè)置頻率值
  128. 參    數(shù): freq_number -- 要寫(xiě)入的平率寄存器(FREQ_0或FREQ_1)
  129.           freq -- 頻率值 (Freq_value(value)=Freq_data(data)*FCLK/2^28)
  130. 返回值  : 無(wú)
  131. *****************************************************************/
  132. void AD9834_Set_Freq(unsigned char freq_number, unsigned long freq)
  133. {
  134.     unsigned long FREQREG = (unsigned long)(268435456.0/AD9834_SYSTEM_COLCK*freq);
  135.    
  136.     unsigned int FREQREG_LSB_14BIT = (unsigned int)FREQREG;
  137.     unsigned int FREQREG_MSB_14BIT = (unsigned int)(FREQREG>>14);
  138.    
  139.     if(freq_number == FREQ_0)
  140.     {
  141.         FREQREG_LSB_14BIT &= ~(1U<<15);
  142.         FREQREG_LSB_14BIT |= 1<<14;
  143.         FREQREG_MSB_14BIT &= ~(1U<<15);
  144.         FREQREG_MSB_14BIT |= 1<<14;
  145.     }
  146.     else
  147.     {
  148.         FREQREG_LSB_14BIT &= ~(1<<14);
  149.         FREQREG_LSB_14BIT |= 1U<<15;
  150.         FREQREG_MSB_14BIT &= ~(1<<14);
  151.         FREQREG_MSB_14BIT |= 1U<<15;
  152.     }
  153.    
  154.     AD9834_Write_16Bits(FREQREG_LSB_14BIT);
  155.     AD9834_Write_16Bits(FREQREG_MSB_14BIT);
  156.    
  157. }
  158. //============================================================//

復(fù)制代碼

完整的Word格式文檔51黑下載地址:
基于STM32的-AD9834-驅(qū)動(dòng)程序.doc (37 KB, 下載次數(shù): 101)



評(píng)分

參與人數(shù) 1黑幣 +4 收起 理由
muyichuan2012 + 4 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:307065 發(fā)表于 2019-7-27 09:37 | 顯示全部樓層
感覺(jué)在選擇波形的寄存器配置好像有點(diǎn)問(wèn)題?
回復(fù)

使用道具 舉報(bào)

ID:263693 發(fā)表于 2020-2-1 14:47 | 顯示全部樓層
下載下來(lái)學(xué)習(xí)一下,用407感覺(jué)有點(diǎn)浪費(fèi)啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频一区二区三区 | 91久久综合亚洲鲁鲁五月天 | 亚洲天天看 | 福利小视频 | 99久热| 国产一区二区三区免费 | 欧洲色综合 | 亚洲黄色在线观看 | www.粉色视频在线观看 | 在线免费看a | 久久久久九九九九 | 国产午夜视频 | 在线视频成人 | 放几个免费的毛片出来看 | 成人黄色录像 | 青青草国产成人av片免费 | 久久性生活视频 | 久操国产 | 久久国产精品视频 | 欧美日韩精品 | 一区二区不卡 | 日韩黄色一级片 | 国产免费黄色片 | 久久国产精品视频 | 中文字幕亚洲一区 | 亚洲精品系列 | 天天爽天天操 | 久久综合久久鬼 | 激情高潮到大叫狂喷水 | 国产又粗又猛又爽又黄 | 成人久久视频 | 国产成人免费 | 可以看的毛片 | 超碰成人免费 | 久久久亚洲一区 | 久久久久久免费 | 亚洲天天操 | 国产aⅴ爽av久久久久成人 | 色婷婷久久 | 一级片aa| 久久av影院 |