AD5934 State Machine Issue - No Initialization Frequency

AD5934, 5V Vdd, 4Mhz clock verified to pin 8.  i2c communications verified and working.

(Pins 9, 10, 11 connected to Vdd; Pins 12, 13, 14 connected to GND; 20kOhm from pin 4 to 5, pin 6 to a capacitor 0.1uf)

Order of initialization:

Clock Source set to external (just because the same code is setup for the AD5933) 0x81 = 0x08

Range 2vp-p and PGA Gain x1 Set with No-Operation: Address  0x80 = 0x01

Start Frequency Programmed: Address 0x82 = 0x020c49

Increment Frequency Programmed: Address 0x85 = 0x346d

Increment Number Programmed: Address 0x88 = 0x02

Wait 100mS

Set standby state: Address 0x80 = 0xB1

Send reset: Address 0x81 = 0x18

Reset state is read back and verified (Address 0x80 == 0xB1)

Wait 100mS

Initialize the Sweep: Address 0x80 = 0x11

Monitor Pin 6  (Vout) relative to Pin 12 (DGND) with Oscilloscope, no waveform is captured on oscilloscope.

What did I do wrong in the initialization of this device?

I followed exactly the program flow given here: https://github.com/analogdevicesinc/no-OS/blob/master/drivers/impedance-analyzer/ad5933/ad5933.c

Sincerely,

Dan

  • Not sure if it is going to help, but normally one does not issue both the standby command and reset command at once, only one of those. I would suggest removing both the reset command and reading back the status after the stand by command and from the latter going straight to what you call Initialize the Sweep (datasheet calls it Initialize with Start Frequency command, should precede the Start Frequency Sweep command).

    AD5934 does not have internal oscillator, D3 in control register is supposed to be hardwired to 1, perhaps no point in setting it, but it should not affect the chip operation.

    Should not cause any issues, but there is no need to wait 100mS between the commands from the device perspective, different story when it comes to external circuits.

    Best of luck!

  • Please note that you are telling me that this will work if I do not follow what is being done on lines 341 to 347 of this link:

    https://github.com/analogdevicesinc/no-OS/blob/master/drivers/impedance-analyzer/ad5933/ad5933.c

    I want to be very clear that I am not looking for 'shots in the dark' problem solving here.  I am looking for actual application implementation support for this automotive application.  

    I tried as you instructed, taking out the step where I send the reset.  However, this did not make a voltage, at any frequency, show up on pin 6 relative to pin 12.  

    Please let me know if there are other items to check that I have not yet.

  • Personally, working with the chip I never used the reset command. The standby mode, on the other hand, seems to be necessary for the chip to output excitation voltage. The code you are referring to is the first one I see combining both the standby and reset. The datasheet does not explicitly say what the consequences might be and it is hardly practical trying to experiment with this. I can only give you a reference to the sequence that worked for me: pp. 11 – 16  - just keep adding the appropriate bits for output voltage and PGA gain whenever writing into register 0x80.

    I am afraid whatever suggestions you can get in this forum are those 'shots in the dark' by necessity as participants can only see a limited text description of a problem, but cannot see your setup and poke at it with a scope or hover over your shoulder looking at what you are doing with your code.

    Hopefully somebody from ADI will be able to help you better.

  • Removing the reset command worked, thank you.  Therefore, I would like to inform anyone reading this, that the code provided in the aforementioned comment should not be used.  

  • Glad to hear. Best of luck with the rest of your project!