Post Go back to editing

Need to generate sine wave using AD5941?

Product Number: I want to generate sine wave using the AD5941?
Software Version: STM32 MCU + https://github.com/analogdevicesinc/ad5940-examples/tree/master/examples/AD5940_WG example code

Hi folks,

I want to generate sine wave using AD5941, and need to project that on digital analyzer. 

I am running following code to generate the sine wave: 

void AD5940_Wg_Test(void)
{
	AFERefCfg_Type aferef_cfg;
	HSLoopCfg_Type HsloopCfg;
	CLKCfg_Type clk_cfg;

	clk_cfg.ADCClkDiv = ADCCLKDIV_1;
	clk_cfg.ADCCLkSrc = ADCCLKSRC_HFOSC;
	clk_cfg.SysClkDiv = SYSCLKDIV_1;
	clk_cfg.SysClkSrc = SYSCLKSRC_HFOSC;
	clk_cfg.HfOSC32MHzMode = bFALSE;
	clk_cfg.HFOSCEn = bTRUE;
	clk_cfg.HFXTALEn = bFALSE;
	clk_cfg.LFOSCEn = bTRUE;
	AD5940_CLKCfg(&clk_cfg);

	aferef_cfg.HpBandgapEn = bTRUE;
	aferef_cfg.Hp1V1BuffEn = bTRUE;
	aferef_cfg.Hp1V8BuffEn = bTRUE;
	aferef_cfg.Disc1V1Cap = bFALSE;
	aferef_cfg.Disc1V8Cap = bFALSE;
	aferef_cfg.Hp1V8ThemBuff = bFALSE;
	aferef_cfg.Hp1V8Ilimit = bFALSE;
	aferef_cfg.Lp1V1BuffEn = bFALSE;
	aferef_cfg.Lp1V8BuffEn = bFALSE;
	/* LP reference control */
	aferef_cfg.LpBandgapEn = bTRUE;
	aferef_cfg.LpRefBufEn = bTRUE;
	aferef_cfg.LpRefBoostEn = bFALSE;
	AD5940_REFCfgS(&aferef_cfg);

	HsloopCfg.HsDacCfg.ExcitBufGain = EXCITBUFGAIN_2;
	HsloopCfg.HsDacCfg.HsDacGain = HSDACGAIN_1;
	HsloopCfg.HsDacCfg.HsDacUpdateRate = 7;

	HsloopCfg.HsTiaCfg.DiodeClose = bFALSE;
	HsloopCfg.HsTiaCfg.HstiaBias = HSTIABIAS_1P1;
	HsloopCfg.HsTiaCfg.HstiaCtia = 16; /* 16pF */
	HsloopCfg.HsTiaCfg.HstiaDeRload = HSTIADERLOAD_OPEN;
	HsloopCfg.HsTiaCfg.HstiaDeRtia = HSTIADERTIA_TODE;
	HsloopCfg.HsTiaCfg.HstiaRtiaSel = HSTIARTIA_160K;

	HsloopCfg.SWMatCfg.Dswitch = SWD_CE0;
	HsloopCfg.SWMatCfg.Pswitch = SWP_CE0;
	HsloopCfg.SWMatCfg.Nswitch = SWN_SE0LOAD;
	HsloopCfg.SWMatCfg.Tswitch = SWT_TRTIA|SWT_SE0LOAD;

	HsloopCfg.WgCfg.WgType = WGTYPE_TRAPZ;
	HsloopCfg.WgCfg.GainCalEn = bFALSE;
	HsloopCfg.WgCfg.OffsetCalEn = bFALSE;
	HsloopCfg.WgCfg.TrapzCfg.WGTrapzDCLevel1 = 0x200;
	HsloopCfg.WgCfg.TrapzCfg.WGTrapzDCLevel2 = 0xa00;
	HsloopCfg.WgCfg.TrapzCfg.WGTrapzDelay1 = 50;
	HsloopCfg.WgCfg.TrapzCfg.WGTrapzDelay2 = 100;
	HsloopCfg.WgCfg.TrapzCfg.WGTrapzSlope1 = 200;
	HsloopCfg.WgCfg.TrapzCfg.WGTrapzSlope2 = 300;
	AD5940_HSLoopCfgS(&HsloopCfg);

	AD5940_AFECtrlS(AFECTRL_DACREFPWR, bTRUE);
	AD5940_AFECtrlS(AFECTRL_EXTBUFPWR|AFECTRL_INAMPPWR|AFECTRL_HSTIAPWR|AFECTRL_HSDACPWR, bTRUE);
	AD5940_AFECtrlS(AFECTRL_WG, bTRUE);

	AD5940_AFEPwrBW(AFEPWR_LP, AFEBW_250KHZ);
}

which pin is the target pin to see the sinewave using this code? I am not able to get sine wave using this code, when I am trying to get output from CE0 pin ? 

Any suggestion or rectification would be helpful. 

which pin to project on digital analyzer, whether the code I am running is correct or not? 

Parents Reply Children