AnsweredAssumed Answered

Problem with AD5932

Question asked by Nikola on Mar 11, 2011
Latest reply on Apr 5, 2011 by Nikola

Hi,

 

I can't get output from my AD5932. I did the procedure from AN-1044 and there was no sinewave on the output. I checked the power supply pins as well as clock, and they were fine. Next, I deployed a logic(timing) analyzer to verify the transfer over spi bus, and everything was correct:

 

1) the chip was reset by INTERRUPT low to high transition after the power up

2) SCLK was idle high

3) FSYNC was high when there were no transfer, and FSYNC to SCLK falling edge setup and hold time was satisfied, as well as other timings

4) STANDBY was inactive....

 

All in all, the procedure from AN-1044 was fully applied, and the result was 480mV DC on the output. I read everything about AD5932 that I could find, but still no solution. Any idea, please.

 

You can find my schematic attached and here is my code also:

 

#include "mbed.h"
DigitalOut FSYNC(p8);
DigitalOut CTRL(p30);
DigitalOut STANDBY(p9);
DigitalOut INTERRUPT(p29);
SPI device(p5, NC, p7); // mosi, miso-NC, sclk
int main() {
    INTERRUPT = 0;
    STANDBY = 0;
    FSYNC = 1;
    CTRL = 0;
    device.format(16,2);                     // required by device, 16 bits transmission, POL=1, PHA=0, the base value of the clock is one,
                                                     // and data is captured on clock's falling edge and propagated on a rising edge
    device.frequency(1000000);          //SCLK 1MHz
    wait_ms(1);                                 // end of initialization
   
   
    INTERRUPT = 1;                         // 0 to 1 transition resets the chip and set the output to midscale (320mV)
   
   
   wait_ms(1); // idle period after reseting the chip
   
   // FRAME 1
   FSYNC = 0;
    wait_us(1);
    device.write(0x0FFF); // sets the control register
    wait_us(1);
    FSYNC = 1;
   
    wait_ms(0.1);
   
   
    // FRAME 2
    FSYNC = 0;
    wait_us(1);
    device.write(0xCEB8); //sets the start frequency LSB (1MHz)
    wait_us(1);
    FSYNC = 1;
   
    wait_ms(0.1);
   
   
    //FRAME 3
    FSYNC = 0;
    wait_us(1);
    device.write(0xC051); //sets the start frequency MSB
    wait_us(1);
    FSYNC = 1;
   
    wait_ms(0.1);
   
   
    //FRAME 4
    FSYNC = 0;
    wait_us(1);
    device.write(0x2312); //sets the frequency increment LSB (0.1MHz)
    wait_us(1);
    FSYNC = 1;
   
    wait_ms(0.1);
   
   
    //FRAME 5
    FSYNC = 0;
    wait_us(1);
    device.write(0x3008); //sets the frequency increment MSB
    wait_us(1);
    FSYNC = 1;
   
    wait_ms(0.1);
   
   
    //FRAME 6
    FSYNC = 0;
    wait_us(1);
    device.write(0x105A); // sets the number of increments (90 increments)
    wait_us(1);
    FSYNC = 1;
   
    wait_ms(0.1);
   
    CTRL=1;  //sets the output of AD5932
}
   
   

Attachments

Outcomes