AnsweredAssumed Answered

AD5930 does not work !!!

Question asked by uraian on Feb 12, 2017
Latest reply on Feb 22, 2017 by musach


I made a circuit with uP in communication via SPI interface with AD5930 to have a single frequency continous and then I would even a sweep mode, but to IoutA and IoutB output with  load of 200 ohms no signal comes out, but only 0 Volts.


My synthetic code:


Control Reg AD5930 setting routine  is:


controll_reg | = AD5930_B24 | AD5930_DAC_ENABLE | AD5930_SINE_TRI;
controll_reg | = (AD5930_MSBOUTEN) | AD5930_CW_BRST | AD5930_INT_EXT_BRST;
control| = (AD5930_INT_EXT_INCR & 0) | AD5930_MODE | AD5930_SYNCSEL,
controll_reg | = (AD5930_SYNCOUTEN & 0) | AD5930_D1 | AD5930_D0;

ad5930_write(AD5930_CONTROL | controll_reg);


And the other registesent to ADS5930 with AD5930_write routine:

main (void)


ad5930_inizial() //control reg set.

ad5930_set_frequency (frequency, ck_ratio);
ad5930_set_delta_f (0x0000, ck_ratio); // Increment delta_f = 0. Fout constant.
ad5930_set_n_inc (0x0002); // Minimum number of increments for constant Fout.
Delay10KTCYx (10); // 10ms
ad5930_start (); CTRL pulse: low-high-low.



ad5930_start () is:

void ad5930_start(void)
        Delay10KTCYx(10);//10 ms
         Delay10KTCYx(10);//10 ms
        CTRL_LOW;  }


SPI code is:

void ad5930_write(unsigned int valore)
    FSYNC_LOW;  // AD5930 --> SPI attivato
    Delay10KTCYx(10);//10 ms
    SSPBUF = (unsigned char)((valore>>8);  //send high byte
    while (!DataRdySPI()); // Wait completed by transmission
    SSPBUF = (unsigned char)(valore& 0x00FF); // send low byte
     while (!DataRdySPI()); // Wait completed by transmission
    FSYNC_HIGH ;    // AD5930 --> SPI disabled


I think that perhaps the AD5930 is defective or burned for electrostatic discharge? If it is the second case, Ad5930 should have an internal protective circuitry?


thank you.
Best regards