国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DDS信號發(fā)生器(stm32+ad9850)

這篇具有很好參考價值的文章主要介紹了DDS信號發(fā)生器(stm32+ad9850)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

硬件

正點原子精英板、ad9850、杜邦線
ad9850連接stm32,STM32,DDS,AD9850,stm32,單片機,嵌入式硬件,ad9850

軟件

/********************************************
函數(shù)名稱:AD9850_Delay
功    能:AD9850延時函數(shù)
參    數(shù):z - 延時長度
返回值  :無
*********************************************/
void AD9850_Delay(unsigned int z)
{
    for(;z>0;z--)
    {;}
}

/*--------------------并行模式-----------------------*/
#ifdef MODE_PARALLEL   
/********************************************
函數(shù)名稱:AD9850_Reset_Parallel
功    能:在并行模式下復(fù)位AD9850
參    數(shù):無
返回值  :無
*********************************************/
void AD9850_Reset_Parallel(void)
{
    AD9850_WCLK_CLR ;
    AD9850_FQUD_CLR ;
    //RST信號
    AD9850_RST_CLR ;
    AD9850_RST_SET ;
    AD9850_Delay(0xFFFF) ;
    AD9850_RST_CLR ;
}

/********************************************
函數(shù)名稱:AD9850_Write_Parallel
功    能:在并行模式下寫AD9850寄存器
參    數(shù):W0 - W0寄存器的值
          freq - 頻率值
返回值  :無
*********************************************/
void AD9850_Write_Parallel(unsigned char W0,unsigned long freq)//W0是用來設(shè)置相位的
{
    unsigned char wdata ;//寫入數(shù)據(jù)(一次8位)
        unsigned long  y ;
			y=4294967296.0/125;//4294967296是2的32次方
			y*=(((float)freq)/1000000); //y(頻率控制字)的計算公式:y = (freq * 4294967296)/125M
	
    wdata=W0 ;  //寫w0
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;   
		AD9850_WCLK_SET ;  
		AD9850_WCLK_CLR ;
		delay_ms(1);
    
    wdata=y>>24 ;  //寫w1(從高位開始寫入)
    GPIO_Write(AD9850_DATA_PORT ,wdata) ; 
		AD9850_WCLK_SET ;  
		AD9850_WCLK_CLR ;
	 
    	delay_ms(1);
    wdata=y>>16 ;  //寫w2
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
		AD9850_WCLK_SET;
    AD9850_WCLK_CLR ;
		
    	delay_ms(1);
    wdata=y>>8 ;  //寫w3
    GPIO_Write(AD9850_DATA_PORT ,wdata) ;
		AD9850_WCLK_SET;
		AD9850_WCLK_CLR ;
		
    	delay_ms(1);
    wdata=y>>0 ;  //寫w4
		GPIO_Write(AD9850_DATA_PORT ,wdata) ;  
		AD9850_WCLK_SET;		
    AD9850_WCLK_CLR ;
	
    	delay_ms(1);
		 AD9850_FQUD_SET ;   //移入使能
    AD9850_Delay(0xFFFF) ;
		AD9850_FQUD_CLR ;  
   
}
#endif /* MODE_PARALLEL */
/*------------------------并行模式-------------------------*/
/*---------------------------------------------------------*/

/*------------------------串行模式-------------------------*/
#ifdef MODE_SEIAL
/********************************************
函數(shù)名稱:AD9850_Reset_Sreial
功    能:在串行模式下復(fù)位AD9850
參    數(shù):無
返回值  :無
*********************************************/
/********************************************
函數(shù)名稱:AD9850_Write_Serial
功    能:在串行模式下寫AD9850寄存器
參    數(shù):W0 - W0寄存器的值
          freq - 頻率值
返回值  :無
*********************************************/
void AD9850_Write_Serial(unsigned char W0,unsigned long freq)
{
    unsigned char i,wdata ;
     unsigned long  y ;
	y=4294967296.0/125;
	y*=(((float)freq)/1000000);
	    
    wdata = y>>0 ;   //寫w4
	    AD9850_WCLK_CLR ;
    AD9850_FQUD_CLR ;
    //RST信號
    AD9850_RST_CLR ;
    AD9850_RST_SET ;
//    AD9850_Delay(0xFFFF) ;
	delay_ms(3);
    AD9850_RST_CLR ;
    //WCLK信號
    AD9850_WCLK_CLR ;
    AD9850_WCLK_SET ;
//    AD9850_Delay(0xFFFF) ;
	delay_ms(3);
    AD9850_WCLK_CLR ;
    //FQUD信號
    AD9850_FQUD_CLR ;
    AD9850_FQUD_SET ;
//    AD9850_Delay(0xFFFF) ;
	delay_ms(3);
    AD9850_FQUD_CLR ;
    for(i=0 ;i<8 ;i++)
    {
        if(wdata & 0x01)
          AD9850_DATA_Write_1 ;
        else
          AD9850_DATA_Write_0 ;
        AD9850_WCLK_SET ;
        wdata >>= 1 ;
        AD9850_WCLK_CLR ;
    }
    wdata = y>>8 ;  //寫w3
     for(i=0 ;i<8 ;i++)
    {
        if(wdata & 0x01)
          AD9850_DATA_Write_1 ;
        else
          AD9850_DATA_Write_0 ;
        AD9850_WCLK_SET ;
        wdata >>= 1 ;
        AD9850_WCLK_CLR ;
    }
    wdata = y>>16 ;  //寫w2
     for(i=0 ;i<8 ;i++)
    {
        if(wdata & 0x01)
          AD9850_DATA_Write_1 ;
        else
          AD9850_DATA_Write_0 ;
        AD9850_WCLK_SET ;
        wdata >>= 1 ;
        AD9850_WCLK_CLR ;
    }
    wdata = y>>24 ;  //寫w1
     for(i=0 ;i<8 ;i++)
    {
        if(wdata & 0x01)
          AD9850_DATA_Write_1 ;
        else
          AD9850_DATA_Write_0 ;
        AD9850_WCLK_SET ;
        wdata >>= 1 ;
        AD9850_WCLK_CLR ;
    }
    wdata = W0 ;  //寫w0
     for(i=0 ;i<8 ;i++)
    {
        if(wdata & 0x01)
          AD9850_DATA_Write_1 ;
        else
          AD9850_DATA_Write_0 ;
        AD9850_WCLK_SET ;
        wdata >>= 1 ;
        AD9850_WCLK_CLR ;
    }
    
    AD9850_FQUD_SET ;  //移入使能
//    AD9850_Delay(0xFFFF) ;
    AD9850_FQUD_CLR ;
}
#endif /* MODE_SERIAL */

/*------------------------串行模式-------------------------*/
/*---------------------------------------------------------*/

/********************************************
函數(shù)名稱:Init_AD9834(主要是初始化GPIO)
功    能:初始化AD9834
參    數(shù):無
返回值  :無
*********************************************/
void Init_AD9850(void)
{
#ifdef MODE_SEIAL   //串行模式
    GPIO_InitTypeDef GPIO_InitStructure ;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
    GPIO_InitStructure.GPIO_Pin = AD9850_WCLK | AD9850_FQUD | AD9850_RST | AD9850_DATA ;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(AD9850_CONTROL_PORT ,&GPIO_InitStructure) ;
    
#endif
    
#ifdef MODE_PARALLEL //并行模式
	
    GPIO_InitTypeDef GPIO_InitStructure ;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO , ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//?
    GPIO_InitStructure.GPIO_Pin = AD9850_WCLK | AD9850_FQUD | AD9850_RST ;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
    GPIO_Init(AD9850_CONTROL_PORT ,&GPIO_InitStructure) ;
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All ;//可以
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(AD9850_DATA_PORT ,&GPIO_InitStructure);
    
    AD9850_Reset_Parallel() ;//并行模式下復(fù)位AD9850
#endif
    
}

效果

ad9850連接stm32,STM32,DDS,AD9850,stm32,單片機,嵌入式硬件,ad9850
ad9850連接stm32,STM32,DDS,AD9850,stm32,單片機,嵌入式硬件,ad9850

程序鏈接

https://download.csdn.net/download/qq_45974939/87672298文章來源地址http://www.zghlxwxcb.cn/news/detail-590910.html

到了這里,關(guān)于DDS信號發(fā)生器(stm32+ad9850)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于AD9767高速DAC的DDS信號發(fā)生器(Verilog&Vivado)

    基于AD9767高速DAC的DDS信號發(fā)生器(Verilog&Vivado)

    基于AD9767高速DAC的DDS信號發(fā)生器 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 1.做一個雙通道的信號發(fā)生器; 2.簡單調(diào)整每個通道的頻率輸出; 3.能夠調(diào)整每個通道的輸出相位; 4.能夠輸出正弦波,三角波,方波。 代碼如下(示例): 代碼如下(示例): 【附件:】

    2024年02月06日
    瀏覽(56)
  • 基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器

    基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器

    目錄 ?一、功能定義 二、設(shè)計輸入? 1、主模塊 2、DDS模塊 3、 按鍵消抖模塊 三、功能仿真? 四、綜合優(yōu)化 五、布局布線 六、時序仿真 七、板級調(diào)試? 代碼規(guī)范:Verilog 代碼規(guī)范_verilog代碼編寫規(guī)范-CSDN博客 開發(fā)流程:FPGA基礎(chǔ)知識----第二章 FPGA 開發(fā)流程_fpga 一個項目的整個

    2024年03月18日
    瀏覽(55)
  • 基于STC89C52RC芯片 高頻DDS信號發(fā)生器AD9851信號源方波正弦波系統(tǒng)設(shè)計

    基于STC89C52RC芯片 高頻DDS信號發(fā)生器AD9851信號源方波正弦波系統(tǒng)設(shè)計

    一開始是使用按鍵進行頻率輸出數(shù)值的增加或者減少,后改進成使用EC11調(diào)節(jié)輸出數(shù)值,使數(shù)值的輸出更加順滑流暢。 AD9851.c AD9851.h LCD12864.c LCD12864.h EC11.c EC11.h main.c

    2024年02月05日
    瀏覽(26)
  • DDS信號發(fā)生器Verilog波形發(fā)生器FPGA

    DDS信號發(fā)生器Verilog波形發(fā)生器FPGA

    名稱:DDS信號發(fā)生器Verilog波形發(fā)生器 軟件:Quartus 語言:Verilog 要求: ?1.可產(chǎn)生正弦波,鋸齒波,三角波,方波4種波形,頻率可調(diào) ?2.具有波形選擇、起動、停止功能。 代碼下載:DDS信號發(fā)生器Verilog波形發(fā)生器_Verilog/VHDL資源下載 代碼網(wǎng):hdlcode.com 部分代碼展示 設(shè)計文檔

    2024年02月07日
    瀏覽(25)
  • 基于FPGA的DDS信號發(fā)生器

    基于FPGA的DDS信號發(fā)生器

    ? ? 兩個禮拜前就像寫這個文檔了,但是一直鴿到現(xiàn)在,主要是人擺了。還有個技術(shù)上的原因是,我想用串口屏顯示波形,在串口調(diào)試助手上返回的數(shù)據(jù)是對的,但是發(fā)到串口屏上啥反應(yīng)沒有,人就很麻,如果這個弄不出來,前面 HMI 串口屏的工程、人機交互界面就白做了。

    2024年02月06日
    瀏覽(20)
  • FPGA之簡易DDS信號發(fā)生器設(shè)計

    FPGA之簡易DDS信號發(fā)生器設(shè)計

    設(shè)計一個能產(chǎn)生頻率可變、相位可調(diào)的能產(chǎn)生正弦波、三角波、方波、鋸齒波的信號發(fā)生器。 DDS 是直接數(shù)字式頻率合成器(Direct Digital Synthesizer)的英文縮寫,是一項關(guān)鍵的數(shù)字化技術(shù)。與傳統(tǒng)的頻率合成器相比,DDS 具有低成本、低功耗、高分辨率和快速轉(zhuǎn)換時間等優(yōu)點,

    2024年02月02日
    瀏覽(18)
  • 基于vivado DDS ip核的DDS信號發(fā)生器(可調(diào)頻調(diào)相)

    基于vivado DDS ip核的DDS信號發(fā)生器(可調(diào)頻調(diào)相)

    基于Vivado DDS ip核的DDS信號發(fā)生器: 在Vivado軟件中調(diào)出DDS ip核進行設(shè)置,很多參數(shù)可以參考xilinx官方手冊,比較重要的是System Clock系統(tǒng)時鐘和Phase Widh相位寬度的設(shè)置,這是最終得到波形的頻率和相位所需要的基礎(chǔ)參數(shù),在這里我分別設(shè)置為50Mhz和16bit。 在implementation頁面設(shè)置頻

    2024年02月12日
    瀏覽(18)
  • 基于FPGA的簡易 DDS 信號發(fā)生器的設(shè)計

    基于FPGA的簡易 DDS 信號發(fā)生器的設(shè)計

    DDS 是直接數(shù)字式頻率合成器(Direct Digital Synthesizer)的英文縮寫,是一項關(guān)鍵的數(shù)字化技術(shù)。與傳統(tǒng)的頻率合成器相比, DDS 具有低成本、低功耗、高分辨率和快速轉(zhuǎn)換時間等優(yōu)點,廣泛使用在電信與電子儀器領(lǐng)域,是實現(xiàn)設(shè)備全數(shù)字化的一個關(guān)鍵技術(shù)。作為設(shè)計人員,我們

    2024年02月07日
    瀏覽(41)
  • 畢設(shè)分享|基于51單片機DDS信號發(fā)生器設(shè)計

    畢設(shè)分享|基于51單片機DDS信號發(fā)生器設(shè)計

    在電子通信技術(shù)日益發(fā)展的時代潮流下,直接式(DFS)和鎖相式(PLL)已經(jīng)不能滿足生活和科研方面對于頻率技術(shù)的需求。經(jīng)過科研人員的不斷攻堅下,直接數(shù)字頻率合成器(DDS)應(yīng)運而生。它現(xiàn)在廣泛運用于移動通信、電子雷達、航天等方面。本次設(shè)計主要通過FPGA模塊+單片機最小

    2024年02月03日
    瀏覽(28)
  • 【畢業(yè)設(shè)計—DDS信號發(fā)生器】Quartus II 軟件新建工程

    【畢業(yè)設(shè)計—DDS信號發(fā)生器】Quartus II 軟件新建工程

    大學(xué)四年的時間轉(zhuǎn)瞬即逝,2023年我將迎來我的本科畢業(yè)。為了記錄自己的研究進展,我將在這兒分享我的畢業(yè)設(shè)計進度~~博客涉及的知識點,如有不對,歡迎大家及時糾正,共同進步! 我安裝的是Quartus II 13.1 版本。 1.在電腦D磁盤下新建一個文件夾【DDS】,然后分別新建4個子

    2024年02月03日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包