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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

兩AD9833如何實(shí)現(xiàn)示波器同步輸出,并且相位可調(diào)

[復(fù)制鏈接]
ID:743654 發(fā)表于 2020-12-1 11:15 | 顯示全部樓層 |閱讀模式
200黑幣
     SPI模式寫AD9833 50364-SPI.png

     實(shí)現(xiàn)功能:兩個AD9833,其中一個為基準(zhǔn)輸出頻率為60KHZ,0初始相位正弦波,另一AD9833輸出同頻率60KHZ,(相位需可調(diào))正弦波。兩波形用示波器顯示,通過調(diào)整另一波形的相位并用示波器觀察兩波形的相位差。
    遇到問題:示波器如何同步顯示兩波形。若能同步,可否其中一個波形固定,另一波形相位可調(diào)?


硬件圖:
AD9833.jpg



程序如下:
sbit f_sync = P2^2;
sbit s_clk         = P2^1;
sbit s_data = P2^0;


#define DDS_SCLK_UP         s_clk=1
#define DDS_SCLK_DOWN         s_clk=0

#define DDS_SDATA_UP         s_data=1
#define DDS_SDATA_DOWN         s_data=0

#define DDS_FSYNC_UP         f_sync=1
#define DDS_FSYNC_DOWN         f_sync=0

//#define BITB 0x0800


//AD9833輸入時鐘值
unsigned long int MCLK=25000000;       
double p=3.141592653589793;
//寄存器配置數(shù)組
unsigned int Config_Data[8];

//頻率
unsigned long int code freq[5]={30000,60000,120000,480000,960000};

//函數(shù)聲明
static void delay2us(unsigned char i);
static void changeFreq(unsigned char key);
static unsigned char getKeyValue();
void writeDDS2Byte(unsigned int config);
void waveGenerate(unsigned long int frequency,double phase,unsigned char signal_type);


//void main(void)
//{
//        waveGenerate(freq[4],2*p,0); //
//}


/*******************************************************************
*        功能:波形發(fā)生器
*
*        入口參數(shù):         frequency: 期望得到的信號頻率 (frequency<MCLK)
*
*                          phase:期望得到的相位
*
*             signal_type:0正弦波1(三角波),2(方波)   
*
*        默認(rèn)配置:         0相移,方波不分頻
*******************************************************************/
void waveGenerate(unsigned long int frequency,double phase,unsigned char signal_type)
{
        unsigned char k;
        unsigned long int freq_temp;
        unsigned int phase_temp;
        if(frequency>MCLK)
        frequency=MCLK;
        switch(signal_type)
        {
                case 0://正弦波
                        Config_Data[0]=0x2108;//控制寄存器配置值,復(fù)位片內(nèi)其他寄存器,AD9833上電時,期間應(yīng)復(fù)位,要使AD9833復(fù)位應(yīng)將reset位置1,即bit8置1,要通過Vout引腳提供正弦波輸出,應(yīng)將mode(D1)bit清0并將OPBITEN(D5)bit清0,當(dāng)DIV2=1時即bit3=1,DAC的MSB被直接送至Vout引腳
                        Config_Data[7]=0x2008;//控制寄存器配置值,不復(fù)位片內(nèi)其他寄存器,要使AD9833退出復(fù)位,應(yīng)將該位清零,即bit8位清零,要通過Vout引腳提供正弦波輸出,應(yīng)將mode(D1)bit清0并將OPBITEN(D5)bit清0,當(dāng)DIV2=1時即bit3=1,DAC的MSB被直接送至Vout引腳
                break;
                case 1://三角波
                        Config_Data[0]=0x210A;//控制寄存器配置值,復(fù)位片內(nèi)其他寄存器,AD9833上電時,期間應(yīng)復(fù)位,要使AD9833復(fù)位應(yīng)將reset位置1,即bit8置1,要通過Vout引腳提供三角波輸出,應(yīng)將mode(D1)1,DIV2=1時即bit3=1,DAC的MSB被直接送至Vout引腳
                        Config_Data[7]=0x200A;//控制寄存器配置值,不復(fù)位片內(nèi)其他寄存器,要使AD9833退出復(fù)位,應(yīng)將該位清零,即bit8位清零,要通過Vout引腳提供三角波輸出,應(yīng)將mode(D1)置1,DIV2=1時即bit3=1,DAC的MSB被直接送至Vout引腳
                break;
                case 2://方波,不分頻
                        Config_Data[0]=0x2128;//控制寄存器配置值,復(fù)位片內(nèi)其他寄存器,AD9833上電時,期間應(yīng)復(fù)位,要使AD9833復(fù)位應(yīng)將reset位置1,即bit8置1,當(dāng)OPBITEN(D5)置1,mode(D1)清0,DIV2=1時即bit3=1,Vout輸出DAC數(shù)據(jù)MSB
                        Config_Data[7]=0x2028;//控制寄存器配置值,不復(fù)位片內(nèi)其他寄存器,要使AD9833退出復(fù)位,應(yīng)將該位清零,即bit8位清零,當(dāng)OPBITEN(D5)置1,mode(D1)清0,DIV2=1時即bit3=1,Vout輸出DAC數(shù)據(jù)MSB
                        break;
                default://正弦波
                        Config_Data[0]=0x2108;
                        Config_Data[7]=0x2008;
                break;
        }
        //freq_temp=frequency*(2^28/MCLK),MCLK=6Mhz?,2^28/MCLK約等于44.739242666666669
        //phase_temp=phase*(4096/2p),p=3.141592653589793
        freq_temp=frequency*10.73741824; //載入所選頻率寄存器的值,此信號會經(jīng)過如下相位偏移處理,2?/4096*PHASEREG,PHASEREG是所選相位輸出頻率和參考時鐘頻率之間的關(guān)系,必須考慮所選輸出頻率和參考時鐘頻率之間的關(guān)系,以免產(chǎn)生不良的輸出異常
        phase_temp=phase*(4096/2*p);//651.898646904403295309
        Config_Data[1]=freq_temp&0x3fff;//先將bit15,bit14位清0,控制字寫入
        Config_Data[3]=Config_Data[1];//先將bit15,bit14位清0,控制字寫入
        Config_Data[2]=(freq_temp&0x0fffc000)>>14;//先將bit15,bit14位清0,控制字寫入
        Config_Data[4]=Config_Data[2];//先將bit15,bit14位清0,控制字寫入
        Config_Data[5]=phase_temp&0x1fff;
        Config_Data[5]=Config_Data[6];


        Config_Data[1]=Config_Data[1]|0x4000;//(頻率寄存器)FREQ0 14 LSBs,bit15=0,bit14=1,F(xiàn)REQ0寄存器寫入
        Config_Data[2]=Config_Data[2]|0x4000;//(頻率寄存器)FREQ0 14 MSBs,bit15=0,bit14=1,F(xiàn)REQ0寄存器寫入
        Config_Data[3]=Config_Data[3]|0x8000;//(頻率寄存器)FREQ1 14 LSBs,bit15=1,bit14=0,F(xiàn)REQ1寄存器寫入
        Config_Data[4]=Config_Data[4]|0x8000;//(頻率寄存器)FREQ1 14 MSBs,bit15=1,bit14=0,F(xiàn)REQ1寄存器寫入
//        Config_Data[5]=0xC000;//(相位寄存器)PHASE0
//        Config_Data[6]=0xE000;//(相位寄存器)PHASE1
        Config_Data[5]=Config_Data[5]|0xC000;//(相位寄存器)PHASE0,bit15=1,bit14=1,bit13=0,PHASE0寄存器寫入
        Config_Data[6]=Config_Data[6]|0xE000;//(相位寄存器)PHASE1,bit15=1,bit14=1,bit13=1,PHASE1寄存器寫入
        for(k=0;k<8;k++)
        {
                writeDDS2Byte(Config_Data[k]);
        }
}

/***********************************************************************************************
*
*        軟件模擬SPI
*
*        向AD9833寫入數(shù)據(jù)或控制信息時0,F(xiàn)SYNC應(yīng)處于低電平并保持低電平,直到數(shù)據(jù)的16個位均已寫入AD9833為止,F(xiàn)SYNC信號以幀方式傳輸要載入AD9833的16位信息
*
*        向AD9833發(fā)送數(shù)據(jù)時,F(xiàn)SYNC被拉低,單片機(jī)以8位字節(jié)傳輸數(shù)據(jù),因此每個周期中只有8個SCLK下降沿,要向AD9833中載入剩余的8個位,F(xiàn)SYNC應(yīng)在第一批8個位傳輸完成后保持低電平,同時啟動第二次寫操作來傳輸數(shù)
*        據(jù)的第二個字節(jié),第二次寫操作結(jié)束后FSYNC被拉高,SCLK應(yīng)在兩次寫操作之間處于高電平空閑狀態(tài)
*
************************************************************************************************/
void writeDDS2Byte(unsigned int config)
{
        unsigned char i;
        DDS_SCLK_DOWN;//拉低SCLK
        _nop_();//延時
        DDS_FSYNC_UP;//拉高FSYNC
        _nop_();//延時
        DDS_SCLK_UP;//拉高SCLK
        delay2us(1);//延時1us
        DDS_FSYNC_DOWN;//發(fā)送數(shù)據(jù)時,F(xiàn)SYNC拉低
        _nop_();
        for (i=0; i<16; i++)
        {
                if (config & 0x8000)
                DDS_SDATA_UP;//SDATA拉高
                else
                DDS_SDATA_DOWN;//SDATA拉低
                delay2us(1);//延時1us
                DDS_SCLK_DOWN;//SCLK拉低
                delay2us(1);//延時1us
                DDS_SCLK_UP;//SCLK拉高
                config <<= 1;//config循環(huán)左移一位
        }
        DDS_FSYNC_UP;//FSYNC拉高
        _nop_();//延時
        DDS_SCLK_DOWN;//SCLK拉低
        delay2us(100);//延時100us
}


static void delay2us(unsigned char i)
{
        while (--i);
}




AD9833_cn.pdf

885.82 KB, 下載次數(shù): 24

最佳答案

查看完整內(nèi)容

試試共用時鐘線,同時操作兩器件。
回復(fù)

使用道具 舉報

ID:868494 發(fā)表于 2020-12-1 11:15 | 顯示全部樓層
試試共用時鐘線,同時操作兩器件。
回復(fù)

使用道具 舉報

ID:743654 發(fā)表于 2020-12-2 08:41 | 顯示全部樓層
沒人用過AD9833么,或者有沒有其他可以同步輸出兩波形的DDS芯片?
回復(fù)

使用道具 舉報

ID:743654 發(fā)表于 2020-12-3 08:39 | 顯示全部樓層
帖子別沉啊,來位大佬幫忙解答!
回復(fù)

使用道具 舉報

ID:743654 發(fā)表于 2020-12-4 08:45 | 顯示全部樓層

帖子別沉啊,來位大佬幫忙解答!
回復(fù)

使用道具 舉報

ID:743654 發(fā)表于 2020-12-5 11:30 | 顯示全部樓層
有沒人用過DDS芯片的,或者有沒別的方案能解決我的問題,急啊,進(jìn)度一直卡在這邊,在此感謝各位了
回復(fù)

使用道具 舉報

ID:790408 發(fā)表于 2020-12-5 12:57 | 顯示全部樓層
可以換STM32芯片試一試,STM32的內(nèi)部ADC就可以實(shí)現(xiàn)多路ADC的采集,定時器也有四路同步輸出PWM波
回復(fù)

使用道具 舉報

ID:743654 發(fā)表于 2020-12-7 08:38 | 顯示全部樓層
1922323908 發(fā)表于 2020-12-5 12:57
可以換STM32芯片試一試,STM32的內(nèi)部ADC就可以實(shí)現(xiàn)多路ADC的采集,定時器也有四路同步輸出PWM波

謝謝,我的MCU用的是51的,況且對STM32也不懂
回復(fù)

使用道具 舉報

ID:420836 發(fā)表于 2020-12-27 00:16 | 顯示全部樓層
也許使用一個AD9833的輸出來觸發(fā)另一個的輸出?
回復(fù)

使用道具 舉報

ID:1129874 發(fā)表于 2024-7-30 15:18 | 顯示全部樓層
請問最后是怎么解決的?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美女视频一区 | 黄免费观看视频 | 久草在线| 国产精品久久久久久久久久妞妞 | 久久精品—区二区三区 | 亚洲人精品 | 奇米影视首页 | 色婷婷一区| 亚洲精品黄色 | 国产黄色大片在线免费观看 | 精品亚洲国产成av人片传媒 | 中文字幕一区二区三区在线观看 | 国产色99精品9i | 日韩欧美国产精品一区二区三区 | 日本一区二区三区在线观看 | 女人一区| 亚洲欧美在线免费观看 | 欧美中文字幕一区二区三区亚洲 | 色片在线观看 | 国产精品久久久久久久免费大片 | 国产精品嫩草影院精东 | 亚洲电影一区二区三区 | 羞羞视频在线观看 | 国产激情一区二区三区 | 亚洲欧美在线一区 | 国产大毛片| 亚洲国产一区二区三区 | www.com久久久 | 国产精品九九九 | 一区二区三区中文字幕 | 久久天天躁狠狠躁夜夜躁2014 | 国产一级片免费视频 | 精品一区二区在线观看 | 精品国产乱码久久久久久久久 | 黄色在线网站 | 亚洲精品小视频在线观看 | 亚洲成网 | 久久国产综合 | 欧美午夜视频 | 福利视频网 | 久久夜色精品国产 |