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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AD9833中文資料寄存器解析與51單片機STM32源程序

[復制鏈接]
跳轉到指定樓層
樓主
ad9833部分資料


單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "systemconfig.h"
  3. #include "common.h"
  4. #include "ad9833.h"

  5. #define LED1        BIT_ADDR(GPIOB_ODR_Addr,0)         
  6. #define LED2        BIT_ADDR(GPIOB_ODR_Addr,1)
  7. #define KEY                BIT_ADDR(GPIOB_IDR_Addr,2)

  8. #define CLK                         BIT_ADDR(GPIOB_ODR_Addr,14)         
  9. int main(void)
  10. {        

  11.          u8 i;

  12.    SystemConfiguration();                    //系統初始化

  13.         LED1=0; //滅
  14.         LED2=1;        //亮

  15.         AD9833_Init_GPIO(); //AD9833 GPIO 初始化

  16. //        AD9833_WaveSeting(8000000.5,0,TRI_WAVE,0 );//1.0005KHz,頻率寄存器0,三角波輸出 ,初相位0
  17. /*        AD9833_WaveSeting(5000,0,SQU_WAVE,90);        //5KHz,                頻率寄存器0,方波輸出         ,初相位90 */
  18. /*        AD9833_WaveSeting(100000,0,SIN_WAVE,0 );//100KHz,        頻率寄存器0,正弦波輸出 ,初相位0 */
  19.         

  20.            AD9833_WaveSeting(1000.1,0,TRI_WAVE,0);


  21.         AD9833_AmpSet(200); //設置幅值,幅值最大 255


  22.         while(1)
  23.         {
  24.                 LED1 = !LED1_READ; //LED1 取反
  25.                 Delay_ms(300);           //延時 300ms
  26.         }
  27. }
復制代碼

  1. #include "ad9833.h"
  2. #include "common.h"



  3. //***************************
  4. //                Pin assign                  
  5. //                        STM32                        AD9833
  6. //                GPIOB_Pin_15                 ---> FSYNC
  7. //                GPIOB_Pin_14                 ---> SCK
  8. //                GPIOB_Pin_13                 ---> DAT
  9. //                GPIOB_Pin_12                ---> CS
  10. //***************************        

  11.         /*端口定義 */
  12.         #define PORT_FSYNC        GPIOB
  13.         #define PIN_FSYNC        GPIO_Pin_15

  14.         #define PORT_SCK        GPIOB
  15.         #define PIN_SCK                GPIO_Pin_14

  16.         #define PORT_DAT        GPIOB
  17.         #define PIN_DAT                GPIO_Pin_13

  18.         #define PORT_CS                GPIOB
  19.         #define PIN_CS                GPIO_Pin_12  //數字電位器片選

  20. //****************************************************************

  21.         #define FSYNC_0()                GPIO_ResetBits(PORT_FSYNC, PIN_FSYNC)
  22.         #define FSYNC_1()                GPIO_SetBits(PORT_FSYNC, PIN_FSYNC)

  23.         #define SCK_0()                GPIO_ResetBits(PORT_SCK, PIN_SCK)
  24.         #define SCK_1()                GPIO_SetBits(PORT_SCK, PIN_SCK)

  25.         #define DAT_0()                GPIO_ResetBits(PORT_DAT, PIN_DAT)
  26.         #define DAT_1()                GPIO_SetBits(PORT_DAT, PIN_DAT)        

  27.         #define CS_0()                GPIO_ResetBits(PORT_DAT, PIN_CS)        
  28.         #define CS_1()                GPIO_SetBits(PORT_DAT, PIN_CS)        

  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|PIN_CS;
  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_AmpSet
  89. *        功能說明: 改變輸出信號幅度值
  90. *        形    參: 1.amp :幅度值  0- 255
  91. *        返 回 值: 無
  92. *********************************************************************************************************
  93. */


  94. void AD9833_AmpSet(unsigned char amp)
  95. {
  96.         unsigned char i;
  97.         unsigned int temp;
  98.            
  99.         CS_0();
  100.         temp =0x1100|amp;
  101.         for(i=0;i<16;i++)
  102.         {
  103.             SCK_0();        
  104.            if(temp&0x8000)
  105.                    DAT_1();
  106.            else
  107.                 DAT_0();
  108.                 temp<<=1;
  109.             SCK_1();
  110.             AD9833_Delay();
  111.         }
  112.         
  113.            CS_1();
  114. }


  115. /*
  116. *********************************************************************************************************
  117. *        函 數 名: AD9833_WaveSeting
  118. *        功能說明: 向SPI總線發送16個bit數據
  119. *        形    參: 1.Freq: 頻率值, 0.1 hz - 12Mhz
  120.                           2.Freq_SFR: 0 或 1
  121.                           3.WaveMode: TRI_WAVE(三角波),SIN_WAVE(正弦波),SQU_WAVE(方波)
  122.                           4.Phase : 波形的初相位
  123. *        返 回 值: 無
  124. *********************************************************************************************************
  125. */
  126. void AD9833_WaveSeting(double Freq,unsigned int Freq_SFR,unsigned int WaveMode,unsigned int Phase )
  127. {

  128.                 int frequence_LSB,frequence_MSB,Phs_data;
  129.                 double   frequence_mid,frequence_DATA;
  130.                 long int frequence_hex;

  131.                 /*********************************計算頻率的16進制值***********************************/
  132.                 frequence_mid=268435456/25;//適合25M晶振
  133.                 //如果時鐘頻率不為25MHZ,修改該處的頻率值,單位MHz ,AD9833最大支持25MHz
  134.                 frequence_DATA=Freq;
  135.                 frequence_DATA=frequence_DATA/1000000;
  136.                 frequence_DATA=frequence_DATA*frequence_mid;
  137.                 frequence_hex=frequence_DATA;  //這個frequence_hex的值是32位的一個很大的數字,需要拆分成兩個14位進行處理;
  138.                 frequence_LSB=frequence_hex; //frequence_hex低16位送給frequence_LSB
  139.                 frequence_LSB=frequence_LSB&0x3fff;//去除最高兩位,16位數換去掉高位后變成了14位
  140.                 frequence_MSB=frequence_hex>>14; //frequence_hex高16位送給frequence_HSB
  141.                 frequence_MSB=frequence_MSB&0x3fff;//去除最高兩位,16位數換去掉高位后變成了14位

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

  145.                 if(Freq_SFR==0)                                  //把數據設置到設置頻率寄存器0
  146.                 {
  147.                          frequence_LSB=frequence_LSB|0x4000;
  148.                          frequence_MSB=frequence_MSB|0x4000;
  149.                          //使用頻率寄存器0輸出波形
  150.                         AD9833_Write(frequence_LSB); //L14,選擇頻率寄存器0的低14位數據輸入
  151.                         AD9833_Write(frequence_MSB); //H14 頻率寄存器的高14位數據輸入
  152.                         AD9833_Write(Phs_data);        //設置相位
  153.                         //AD9833_Write(0x2000); /**設置FSELECT位為0,芯片進入工作狀態,頻率寄存器0輸出波形**/
  154.             }
  155.                 if(Freq_SFR==1)                                //把數據設置到設置頻率寄存器1
  156.                 {
  157.                          frequence_LSB=frequence_LSB|0x8000;
  158.                          frequence_MSB=frequence_MSB|0x8000;
  159.                         //使用頻率寄存器1輸出波形
  160.                         AD9833_Write(frequence_LSB); //L14,選擇頻率寄存器1的低14位輸入
  161.                         AD9833_Write(frequence_MSB); //H14 頻率寄存器1為
  162.                         AD9833_Write(Phs_data);        //設置相位
  163.                         //AD9833_Write(0x2800); /**設置FSELECT位為0,設置FSELECT位為1,即使用頻率寄存器1的值,芯片進入工作狀態,頻率寄存器1輸出波形**/
  164.                 }

  165.                 if(WaveMode==TRI_WAVE) //輸出三角波波形
  166.                          AD9833_Write(0x2002);
  167.                 if(WaveMode==SQU_WAVE)        //輸出方波波形
  168.                         AD9833_Write(0x2028);
  169.                 if(WaveMode==SIN_WAVE)        //輸出正弦波形
  170.                         AD9833_Write(0x2000);

  171. }




復制代碼

所有資料51hei提供下載:
AD9833_資料.7z (4.43 MB, 下載次數: 51)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费看片又大又黄 | 91社影院在线观看 | 视频在线观看亚洲 | 天天干天天玩天天操 | 国产亚洲欧美日韩精品一区二区三区 | 黄视频网站在线 | 欧美一区| 国产精品日日做人人爱 | 精品1区2区| 成人av观看 | 亚洲天堂一区 | 成人免费视频网站在线观看 | 国产一区二区高清在线 | 国产成人精品一区二三区在线观看 | 久久免费视频在线 | 久久99精品国产自在现线小黄鸭 | 国产视频二区在线观看 | 日韩爱爱网 | 久久久天堂 | 99久久免费精品国产免费高清 | 成人av网站在线观看 | 影音先锋中文字幕在线观看 | 在线播放国产一区二区三区 | 亚洲免费在线观看 | 久久久久久毛片免费观看 | av中文字幕在线 | 久草视| 一区二区福利视频 | 欧美精品一二三 | 国产成人精品久久二区二区 | 亚洲 欧美 激情 另类 校园 | 国产精品爱久久久久久久 | 日本黄色不卡视频 | 99精品电影| 黑人粗黑大躁护士 | 高清视频一区二区三区 | 欧美精品一区二区在线观看 | 久久综合久久综合久久综合 | 999热精品视频 | 国产一级影片 | 亚洲国产精品一区二区第一页 |