This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DAC7750: 10 out of 25 DACs output 20 times less the current that they are supposed to output

Part Number: DAC7750

Hi,

We currently have 25 PCBs with the DAC7750, which were assembled by a professional assembly company.
When testing the first batch we noticed that 9 out of the 25 failed to output correctly. Later 3 PCBs that outputted
the current correct the first time, failed to output correctly the second time. Not all PCBs were retested.

The output current is between 17 and 22 times less the programmed current. Example: The DAC is configured
to output 8 mA, it will output 0,04 mA.

I tried to change every register to all possible values and modes, the registers seem to be correct and do what they
should do, but the output current is still ~20 times less than what it should be.

Configuration:

The schematic used is the reference design from the datasheet. AVDD = 24v, DVDD = 3.3V.

  • Slewrate enabled
    • SRCLK 258065 Hz
    • SRSTEP 8
  • Range 0 - 20 mA
  • User calibration enabled
    • Gain 0x8000
    • Zero 0x0000

Code:

    //Reset chip
    m_ClearPin.ResetBit();
    WriteRegister(DAC_WRITE_RESET_REG); //Perform a software reset
    
    //Send NOP
    WriteRegister(DAC_NO_OP_REG);

    //Setup output to 0 mA
    WriteRegister(DAC_WRITE_DATA_REG);
    //Setup DAC (no RSET, SRCLK 258065 Hz, SRSTEP 8, slewrate control enabled, no daisychain, range 0-20 mA)
    WriteRegister(DAC_WRITE_CONTROL_REG | 0x00F6);
    //Setup DAC (user calibration enabled, no Hart communication, no CRC, no watchdog)
    WriteRegister(DAC_WRITE_CONFIGURATION_REG | 0x0000);
    //Setup DAC (gain to full range 0x000 - 0xFFF)
    WriteRegister(DAC_WRITE_GAIN_CALIB_REG | 0x8000);
    //Setup DAC (zero to 0x0000)
    WriteRegister(DAC_WRITE_ZERO_CALIB_REG);

    //Enable output
    WriteRegister(DAC_WRITE_CONTROL_REG | 0x10F6);

    //Verify settings in DAC
    m_Initialized = (0x0000 == ReadRegister(DAC_READ_DATA_REG));
    m_Initialized &= (0x10F6 == (ReadRegister(DAC_READ_CONTROL_REG) & 0x3FFF));
    m_Initialized &= (0x0000 == (ReadRegister(DAC_READ_CONFIGURATION_REG) & 0x003F));
    m_Initialized &= (0x8000 == ReadRegister(DAC_READ_GAIN_CALIB_REG));
    m_Initialized &= (0x0000 == ReadRegister(DAC_READ_ZERO_CALIB_REG));
    //Setup output to 4 mA
    WriteRegister(DAC_WRITE_DATA_REG | 0x3330);
  • Howdy Benjamin,

    Thank you for your inquiry and welcome to the e2e forums! The issue you presented is very interesting and hopefully we can resolve the issue in a prompt manner.  Before diving into code, let's first begin with a simple hardware evaluation and then move onto SPI communication.

    • You've mentioned that the schematic employed is that of the one included in Figure 62 of the datasheet?  Is this correct?  If not, please provide the correct illustrations.
    • Can you compare a working and non-working board, and provide the voltages read at the AVDD/DVDD/ALARM/CLR/REFIN/REFOUT?
    • Additionally, an oscilloscope capture of a non-working vs working board will also help in our efforts to understand the issue.  Please provide the SPI SCLK, SDI, and CS signals on your capture, and please verify that they are readable.

    Thank you again, and once you've provided the information above I'm sure we'll make good progress in providing you with an answer.

    Best Regards,

    Matt

  • Hi Matt,

    Thanks for your quick reply. I will start taking measurements today. As for the communication, is it possible to continue in a private chat? Then I can share schematics etcetera.

    Kind regards,

    Benjamin
  • Hi,

    I took the measurements today between a board with a working DAC and a non working DAC.

    Here are the requested voltages:

    Working DAC                                   Non working DAC

     AVDD                  24.05V                  AVDD                    24.00V

     DVDD                  3.34V                    DVDD                     3.29V

     ALARM                 3.30V                   ALARM                   3.29V

     CLR                       2mV                    CLR                             0V

     REFIN                  4.998V                 REFIN                   4.999V

     REFOUT              4.998V                 REFOUT               4.999V

    The current consumption of the DAC at AVDD is about 2,5 mA @ 24V + the current of IOUT. As you can see there are no real differences. 

    For the SPI communication, I don't have access to proper measurement equipment but I have some single channel scope and logic analyzer captures.

    Working DAC

    SPI Write

    SPI Read

    Non working DAC

    Write

    Read

    The images below are oscilloscope captures of a write/read cycle measured on the MOSI line. As you can see there are no real differences, the same goes for the other SPI lines.

    Working DAC                                                                                                 

    Non Working DAC

    You did not ask but maybe good to know is the load at IOUT. I tested with different loads varying from 25R to 600R.

  • Hi Benjamin,

    I've sent you a private message with my email. I'll go ahead and take this thread offline.

    Best Regards,
    Matt