Post Go back to editing

AD9707 Boot Up / Initialization Issue

Hi, I have the AD9707 DAC designed into my proprietary board as part of an SDR TX circuit and out of about 20 boards, 3 are exhibiting intermittent transmit issues, which turns out to be the DAC outputting nothing every so often. A power cycle usually fixes this and once fixed it stays fixed, until the next bad power up, so I'm trying to determine what it is at startup, which is causing the DAC to not come up correctly sometimes. Any ideas would be greatly appreciated.

I'm running the DAC in SPI mode with a 100k resistor to ground on the PIN/SPI/RESET pin and am using 2's compliment. My code is along these lines:

bool tx_dac_init( void )
{
dac_command.cs = TX_SPI_DAC_CS;
tx_dac_reset();
tx_dac_power(false);

  return true;
}

void tx_dac_reset( void )
{
    tx_dac_load_command(0x00, 0xA0, 1);     //issue sw reset, 3 wire
    tx_dac_load_command(0x00, 0x80, 1);     //clear sw reset
    tx_dac_load_command(0x02, 0x80, 1);     //2's compliment
}


void tx_dac_power(bool on)
{
    if(on)
    {
        tx_dac_load_command(0x00, 0x80, 1);     //power up
   txif_set_control(TX_SET_DAC, TX_SET_DAC_OFFSET, 1); //enable clock and data
    }
    else
    {
    txif_set_control(TX_SET_DAC, TX_SET_DAC_OFFSET, 0); //turn off clock and data
        tx_dac_load_command(0x00, 0x8E, 1);     //power down everything

    }
}

Could it be SPI bus-related I wonder, or related to the sequencing of the power rails? Is it sensitive to this? Or PIN/SPI/RESET? 

Many thanks,

Dave

  • I've just seen this section in the datasheet:

    The internal 1.0 V band gap reference may on occasion power
    up in a state that leaves the DAC output nonfunctional. To clear
    this state, power up again, and check that the voltage on the
    REFIO pin is within the reference output specifications shown
    in Table 1 or Table 4. After the internal reference is powered up
    correctly, it does not fail as long as power is applied.

    This sounds suspiciously like our issue. Does this mean the recommended design involves connecting REFIO to a GPIO to sense if the reference has come up OK and if not to sent a SWRST?!

    Cheers,

    Dave

  • Unfortunately, that looks to be it Dave. Power cycle the device until the reference comes up. If that is unacceptable, either use an external reference or switch to the AD974x device family. Not much else can be done. Good luck!

  • The issue then is knowing the device has come up after a power cycle - is there a register that can be read to sense this? Or do we have to measure the voltage on the REFIO pin itself? If we could do this automatically based on some feedback about the state of the output this would work.

  • Hi, follow up question - if we replace the AD9707 with the AD9744, are the pin mode lines changeable dynamically? i.e. can we toggle MODE/CMODE once the device has powered up to change the functionality? Also, if we leave pin 17 floating (AVDD on the AD9744) is that OK? Are 17 and 18 connected internally?

    Thanks, Dave

  • Hey Dave, can you please start a new Q&A for this using the subject "converting AD9707 design to AD9744" or something like that?  That way, we can close this thread and ge someone else assigned to cover since Jarrah has moved on.