AnsweredAssumed Answered

AD9789 not initialized reliably

Question asked by plg on Feb 22, 2013
Latest reply on Jun 10, 2013 by danf

Hi,

 

We've designed a board using the AD9789, and the DAC doesn't always start up correctly.

About  1 of 10 initializations the AD9789 suddenly starts to work correctly, the other

9 times it seems to work, the amplitude spectrum seems ok, but the phases (OFDM) are

completely messed.

Also about 9 out of 10 times I get no Framesync (FS=0), while I expect a constant FS=1,

since sample rate = DCO clock = 32 MHz. On top of that FS=1 and DAC giving a correct

output signal seem unrelated.

 

The current workaround is to have a keyboard key that reinitializes the DAC, and I need

to push this key many times until the DAC output signal is correct.

 

Parity checking is enabled - no parity errors in the Parity Counter Register, so I assume

the data side clocking is correct. SPI Clock is 5 kHz. Reading

back the SPI registers shows that it's correctly written, and there is no difference

between a working and a non-working session of the DAC in terms of readback register contents.

 

This is the init-sequence:

----------> snip

reset dac (reset pin)

wait 100ms

release dac reset (reset pin)

wait 100ms

write_dac[0x32] =  0x9e

write_dac[0x30] =  0x80

write_dac[0x24] =  0x00

write_dac[0x24] =  0x80

write_dac[0x2f] =  0xce

write_dac[0x33] =  0x42

write_dac[0x39] =  0x4e

write_dac[0x3a] =  0x6c

write_dac[0x03] =  0x00

write_dac[0x04] =  0xfe

write_dac[0x03] =  0x0c

write_dac[0x33] =  0x43

write_dac[0x06] =  0xc7

write_dac[0x07] =  0x07

write_dac[0x08] =  0x40

write_dac[0x09] =  0x20

write_dac[0x0c] =  0xf7 0xff 0xfe

write_dac[0x0f] =  0x00 0x00 0x00

write_dac[0x12] =  0x00 0x00 0x00

write_dac[0x15] =  0x00 0x00 0x00

write_dac[0x18] =  0x00 0x00 0x0a

write_dac[0x1b] =  0x00 0x00 0x0a

write_dac[0x1d] =  0x1f 0x80

write_dac[0x20] =  0x08

write_dac[0x21] =  0x78

write_dac[0x22] =  0x40

write_dac[0x23] =  0x00

write_dac[0x25] =  0x80

write_dac[0x26] =  0x80

write_dac[0x27] =  0x80

write_dac[0x28] =  0x80

write_dac[0x29] =  0x01

write_dac[0x3c] =  0x14

write_dac[0x3d] =  0x00

read_dac[0x04] = 0x08

write_dac[0x1e] =  0x80

write_dac[0x24] =  0x00

write_dac[0x24] =  0x80

write_dac[0x05] =  0x01

write_dac[0x03] =  0x00

write_dac[0x00] =  0x18

write_dac[0x31] =  0xf0

write_dac[0x36] =  0x00

write_dac[0x38] =  0x02

write_dac[0x3e] =  0x30

<-----

 

Any ideas why the DAC won't start properly at every power-on?

Outcomes