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.

DAC8760: Design of DAC8760

Part Number: DAC8760

Hi,

      I am new to the design of DAC8760 while designing there i a short between AVSS, Thermal Pad and analog ground. Due to this error can't use bipolar. And need to know when the Iout Loading or Compliance voltage violation bit is set, how can the issue be solved. I have checked in Avdd that I'm providing 12V and Avss to Ground (due to the above reason we have done connection like that). Moreover I am using multi-meter to measure the curremt so my load will be 250 ohms. Will the current be driven for that load normally or I have to add more resistance like 1kohm to it? Because the ALARM pin is Set Low and while reading the Status bit getting the data as 4 which means "Iout loading or Compliance voltage Violation bit is set".

Please can anyone tell me the solution to identify the erros

Thanks,

Gokul.

  • Hi Gokul,

    It is fine to connect AVSS and the thermal pad to ground if you are not using the device in bipolar mode. The I-FLT indicates either that the circuit is open or the compliance voltage maximum has been exceeded. The output stage transistor requires some voltage headroom to remain in the correct operating region. The alarm condition in this case occurs when the voltage at IOUT exceeds AVDD - 2V. The voltage required to drive the load will depend on the load resistance and maximum current. With a 12V supply the maximum voltage at IOUT will be 10V (before alarm condition) which can drive a maximum load of 500 ohms at 20mA. The alarm will occur if IOUT exceeds about 10V.

    Adding more resistance like a 1kOhm load will cause an alarm condition without increasing AVDD. What current value do you measure in the loop with the multimeter? A 250ohm load in series with the multimeter should not cause a compliance voltage alarm condition.

    Thanks,

    Garrett

  • Hi Garrett Satterfied,

    Please check my Schematic of DAC8760 above, its anything could be connected wrongly, and then for what reason the Compliance voltage exceeds from its level.

    Iplace 1k before 15E resistor to acts as load to measure current at mA or shall place 1k between IOUT and Analog GND.
  • Hi Gokul,

    I looked over your schematic and didn't see anything that would necessarily cause a problem. I notice that you are using the external transistor with the BOOST pin but you did not include the emitter resistance or capacitor as shown in Fig. 87. I would recommend following the application diagrams included in the datasheet. I also noticed that you are using a very large capacitor of 1uF between CMP and VOUT. Is this the intended value? This will increase settling time and reduce the bandwidth. The data sheet shows a compensation capacitor on the order of 1nF typically.

    To solve the alarm problem I would recommend disconnecting the external transistor and connecting only a 250ohm resistor from IOUT to GND. Too much resistance between IOUT and GND could cause the compliance headroom alarm. If you use only a 250ohm resistor in series with  a current meter what current do you measure in the loop? Does the alarm still trigger?

    Thanks,

    Garrett

  • Hi Garrett Satterfield,

    I remove external transistor and place 250E from IOUT to GND, but no more current on meter.

    After I check my PCB, i find out boost and AVDD are short. I completely check out PCB tracks, no short on PCB. There's any possibility to short on internal circuit.

    In AVDD pin measure 4V, without  any exteranl supply for AVDD.

    Anything need to check on software at register level , to solve BOOST and AVDD short.  

    Please help  me to solve the problem.

  • Hi Gokul,

    Were you able to measure current through the load before removing the external transistor?

    It appears that there is an issue with your schematic. The net you call VADD which is the input to your +/-15V regulator (pin 2) is connected directly to DVDD of the DAC8760. I assume the voltage of AVDD is around 24V. Can you confirm if this is how it is physically connected? This will cause device damage as the absolute maximum voltage between DVDD and GND is 6V. 

    If this is a lower voltage intended to power DVDD, then DVDD-EN should be tied to ground so that DVDD is externally supplied.

    Thanks,
    Garrett

  • Hi Garrett Satterfield,

    I my measure current through meter in two points, 

    1. In schematic I place 1k and 15E on IOUT pin to GND. I remove 1k and then measure current directly from IOUT pin.

    2. After that I place 0E and 15E on IOUT pin to GND, then connect 250E to IOUT connector to GND. 

    DVDD-EN -- NC

    DVDD -- External 5V

    AVDD and AVSS -- External +/-15V

    Please Help me to come out from this problem. Already, I Completed VOUT part, IOUT part only remaining.

    Please give me some notes to follow on Hardware and Software to check and complete work

  • Hi Gokul,

    What is the current value you measure in each case? What is the voltage at IOUT? If you are using external DVDD you should connect DVDD-EN to ground to disable the internal DVDD regulator.

    Since you have the voltage output working it seems like a hardware issue. I noticed in your schematic that you are using a 15ohm external gain setting resistor. This should be a 15kohm precision resistor. If it is actually 15ohm this will cause an issue with the current output. Can you confirm the value you are using for this resistor. You can also use the internal gain setting resistor and see if the problem is solved.

    Thanks,
    Garrett
  • Hi Gokul,

    Do you have any update on this? Were you able to get Iout working?

    Thanks,
    Garrett
  • Hi Garrett Satterfield,

    Sorry for Replay. I Planned to work with DAC8670 in QFN package. I attached Schematic for QFN package as followed in Development Board. 

    Please Check the Schematic to get IOUT output.

    From last Baord, 

    DVDD-EN not connect to ground, its open. DAC.pdfDAC8760Module.pdf

    I connect 15Kohm resistor across ISET-R pin with respect to ground. When I measure Voltage at ISET-R pin is 4V. But No Voltage at IOUT PIn. 

  • Hi Gokul,

    DVDD-EN should be connected to ground if you are using external DVDD. This looks correct on your schematic but I couldn't tell if you were saying that it was actually open on your board. Do you intend to use AVDD as your reference as is shown on your schematic?

    One issue I noticed on the schematic is R29 is 20 Kohm when it should be 20 ohm based on the datasheet recommendation. The device will not be able to drive the proper current if this resistor is 20 Kohm. Although I would still expect that you would see a voltage on IOUT as it biases the external transistor to try to drive this current.

    When I try this on the EVM with external Rset, I also measure about 4V at ISET-R pin but I measure 15V at Iout when it is open circuit. This is what I would expect when not using the external transistor. Have you been able to successfully write and read registers over SPI? If so, what are the values of the control, configuration, and DAC data registers?

    Thanks,
    Garrett
  • Hi Gokul,

    Do you have any update on this thread? Were you able to get the current output functioning correctly?

    Thanks,
    Garrett
  • DACCode.txt
    #include "project.h"
    
    #include "DAC8760.h"
    
    #include "MAX7219BB.h"
    
    #include "stdio.h"
    
     
    
     
    
     
    
    static int reg_dat;
    
    static int control_reg,config_reg,gain_reg,offset_reg;
    
     
    
     
    
    int main(void)
    
    {
    
        int alarm_status=0;
    
        uint8 checkbit;
    
        char str[24];
    
       
    
        control_reg=RANGE_0to10V | EXT_RES_Enable | OUTPUT_Enable;
    
        config_reg=Alternate_Power_Down | DUALOUTPUT_Enable | IOUT_RANGE_DUAL_Enable_0to20mA ;
    
        gain_reg=0;
    
       
    
        
    
        CyGlobalIntEnable;
    
       
    
        SPI_DAC8760_Initialise(control_reg,config_reg,gain_reg,offset_reg);   
    
        SPI_DAC8760_Write_Data_Register(0);   
    
        
    
        CyDelay(1000);
    
       
    
        UART_1_Start();
    
       
    
        for(;;)
    
        {
    
           
    
    //        alarm_status=SPI_DAC8760_Read_Address(READ_CONTROL);
    
    //        CyDelay(1000);
    
    //       
    
            SPI_DAC8760_Write_Data_Register(0);
    
            CyDelayUs(200);
    
            alarm_status=SPI_DAC8760_Read_Address(READ_STATUS);
    
            switch(alarm_status)
    
            {
    
                case 1:
    
                    UART_1_UartPutString("\r\nTemperature is high...\r\n");
    
                    break;
    
                case 2:
    
                    UART_1_UartPutString("\r\nSlew Rate Error...\r\n");
    
                    break;
    
                case 4:
    
                    UART_1_UartPutString("\r\nIOUT or Compliance Volt Violate...\r\n");
    
                    break;
    
                case 8:
    
                    UART_1_UartPutString("\r\nWatch Dog Timer Error...\r\n");
    
                    break;
    
                case 16:
    
                    UART_1_UartPutString("\r\nCRC Error...\r\n");
    
                    break;
    
                default:
    
                    UART_1_UartPutString("\r\nNo Error.....\r\n");
    
            }
    
            CyDelay(3000);
    
           
    
            
    
            
    
            SPI_DAC8760_Write_Data_Register(16383); /// DAC Data Register
    
            CyDelayUs(200);
    
            alarm_status=SPI_DAC8760_Read_Address(READ_STATUS);
    
            switch(alarm_status)
    
            {
    
                case 1:
    
                    UART_1_UartPutString("\r\nTemperature is high...\r\n");
    
                    break;
    
                case 2:
    
                    UART_1_UartPutString("\r\nSlew Rate Error...\r\n");
    
                    break;
    
                case 4:
    
                    UART_1_UartPutString("\r\nIOUT or Compliance Volt Violate...\r\n");
    
                    break;
    
                case 8:
    
                    UART_1_UartPutString("\r\nWatch Dog Timer Error...\r\n");
    
                    break;
    
                case 16:
    
                    UART_1_UartPutString("\r\nCRC Error...\r\n");
    
                    break;
    
                default:
    
                    UART_1_UartPutString("\r\nNo Error.....\r\n");
    
            }
    
            UART_1_UartPutString("\r\n");
    
            CyDelay(3000);
    
           
    
            SPI_DAC8760_Write_Data_Register(32767);/// DAC Data Register
    
            CyDelayUs(200);
    
            alarm_status=SPI_DAC8760_Read_Address(READ_STATUS);
    
            switch(alarm_status)
    
            {
    
                case 1:
    
                    UART_1_UartPutString("\r\nTemperature is high...\r\n");
    
                    break;
    
                case 2:
    
                    UART_1_UartPutString("\r\nSlew Rate Error...\r\n");
    
                    break;
    
                case 4:
    
                    UART_1_UartPutString("\r\nIOUT or Compliance Volt Violate...\r\n");
    
                    break;
    
                case 8:
    
                    UART_1_UartPutString("\r\nWatch Dog Timer Error...\r\n");
    
                    break;
    
                case 16:
    
                    UART_1_UartPutString("\r\nCRC Error...\r\n");
    
                    break;
    
                default:
    
                    UART_1_UartPutString("\r\nNo Error.....\r\n");
    
            }
    
            UART_1_UartPutString("\r\n");
    
            CyDelay(3000);
    
           
    
            SPI_DAC8760_Write_Data_Register(49150); /// DAC Data Register
    
            CyDelayUs(200);
    
            alarm_status=SPI_DAC8760_Read_Address(READ_STATUS);
    
            switch(alarm_status)
    
            {
    
                case 1:
    
                    UART_1_UartPutString("\r\nTemperature is high...\r\n");
    
                    break;
    
                case 2:
    
                    UART_1_UartPutString("\r\nSlew Rate Error...\r\n");
    
                    break;
    
                case 4:
    
                    UART_1_UartPutString("\r\nIOUT or Compliance Volt Violate...\r\n");
    
                    break;
    
                case 8:
    
                    UART_1_UartPutString("\r\nWatch Dog Timer Error...\r\n");
    
                    break;
    
                case 16:
    
                    UART_1_UartPutString("\r\nCRC Error...\r\n");
    
                    break;
    
                default:
    
                    UART_1_UartPutString("\r\nNo Error.....\r\n");
    
            }
    
            UART_1_UartPutString("\r\n");
    
            CyDelay(3000);
    
     
    
           
    
            SPI_DAC8760_Write_Data_Register(65535); /// DAC Data Register
    
            CyDelayUs(200);
    
            alarm_status=SPI_DAC8760_Read_Address(READ_STATUS);
    
            switch(alarm_status)
    
            {
    
                case 1:
    
                    UART_1_UartPutString("\r\nTemperature is high...\r\n");
    
                    break;
    
                case 2:
    
                    UART_1_UartPutString("\r\nSlew Rate Error...\r\n");
    
                    break;
    
                case 4:
    
                    UART_1_UartPutString("\r\nIOUT or Compliance Volt Violate...\r\n");
    
                    break;
    
                case 8:
    
                    UART_1_UartPutString("\r\nWatch Dog Timer Error...\r\n");
    
                    break;
    
                case 16:
    
                    UART_1_UartPutString("\r\nCRC Error...\r\n");
    
                    break;
    
                default:
    
                    UART_1_UartPutString("\r\nNo Error.....\r\n");
    
            }
    
            UART_1_UartPutString("\r\n");
    
            CyDelay(3000);
    
           
    
        }
    
    }
    
     
    
     
    Hi Garrett,

    Sorry Sir for late reply, i busy with other issuses, my software Eng not here to reply to you.

    My IOUT issue still hold on.

    I m not using external transistor across boost pin. I Using External ISET-R Resistor (15K) and then i measure 4V across ISET-R Pin, but no voltage drop on IOUT pin even open or closed Circuit.

    You ask me to Check SPI functionality, So that i attached my Code ( we using cypress micro-controller).

    Please Help me, My Whole product is hold on because of IOUT issue.

  • Hi Gokul,

    I reviewed your attached code but of course I do not know how your functions are implemented and if they correctly write to the device. Since you have gotten the voltage output to work I assume your SPI interface is correct.

    Can you read back the configuration register and ensure that DB10:DB9 are set correctly to enable the current output?

    Are you still seeing the IOUT fault alarm?

    If you measure 4V at Rset then it seems like the DAC is set correctly and you should see 15V on Iout open circuit. If Iout is disabled then you shouldn't see 4V at Rset. Is it possible that there is a connection problem between the device pin and where you are measuring?

    Have you tested across multiple boards?

    Thanks,

    Garrett

  • Hi Gokul,

    Any update on this?

    Thanks,
    Garrett
  • Hi Garett,

             I have an update while working with one board I am getting an error message of High Temperature and while using with the other board I am getting no error but even the Voltage on the Current Output Pin remains low i.e. 0V. I need to know whether the Loop Voltage Has to be given externally or it will be internally generated. In One Board there is short between Avddd and Boost Pin will this affect the IC I need to know How it will affect ?

    Thanks.

    Regards,

    Gokul

  • Hi Gokul,

    Can you provide the SPI transaction when you read the status register during the alarm condition. It seem unlikely for the temperature alarm bit to be high at room temp.

    I'm not sure I understand your question about the loop voltage. The loop voltage will be generated from AVDD and AVSS with an internal amplifier. What resistance value do you measure between AVDD and boost? One of the gain resistors for the current output stage is between these nodes and is about 40 ohms (fig. 93 datasheet) which may appear as a short with some continuity testers.

    Thanks,
    Garrett
  • Hi Garrett,

    I test across BOOST and AVDD Pin, it shows 40 Ohm resistance with some continuity (In my working board (HTSOP Package) . But i measure in separate QFN

    Package across BOOST and AVDD Pin,  it shows 40 Ohm resistance without continuity.

    In my working board, due to short of BOOST and AVDD Pin, its may affect the internal OP-AMP and MOSFET operation  (fig. 93 datasheet) . 

  • Hi Gokul,

    Are you saying BOOST and AVDD are shorted on some of your boards but not others? If these are shorted then the current output will not function correctly. R3 and R2 in figure 93 set a specific gain for the current output so if R3 is not the correct resistance it will affect the current output. Does the voltage output work in this case?

    Thanks,
    Garrett
  • Hi Garrett,

    Yes Voltage Output work properly, upto +10V. We not work on -10V because of PCB design problem.

    No voltage on IOUT Pin, but some voltage drop across (15K) on ISET pin (4V).

    So, We plan to develop other sample PCB for DAC using QFN package.

    I ll send schematic for QFN package, please verify it. Help Us.

  • Hi Gokul,

    Yes, I will review your new schematic. Can you post it as a new thread when complete and I will close this one? Use the ask a related question button. This one has been open for a long time and is quite long now.

    Thanks,
    Garrett