AnsweredAssumed Answered

10% less than the programmed value AD5757 output current

Question asked by yuxiao on Sep 7, 2011
Latest reply on Sep 18, 2011 by yuxiao

Use the AD5757 sample two.Circuit in accordance with the "UG-244.pdf" in the manufacture of circuit PCB. All register reads and writes are correct. Select the OUTEN bit to enabled,Output current measurement results only programmed current value of the 10%, that is, if the programming current 20mA, actual measurements only 2mA.Error in the? register are set as follows:

public class Program
    {
        //Program entry
        public static void Main()
        {
            AD5757 adc = new AD5757();

            // Write first AD5757 DCDC register (only one DCDC per AD5757 register), the value is 0x1C6044,(00011100,01100000,01000100)
            // DC-DC MaxV=23V,DC-DC Freq=410KHZ,DC-DC Phase=all dc-to-dc converters clock on the same edge (default),
            // DC-DC Comp=bypasses the internal compensation resistor for the dc-to-dc converter.
            adc.Cmd_Write(AD5757.ControlREGAddress.Writir_DA0_Control, AD5757.ControlREG.DCtodc_control, AD5757.DCDC_DEFAULT);

            // Read the first AD5757 DCDC register, the value is 0x0044
            adc.Readback(AD5757.ReadAddressDecode.Read_Dev0_dctodc_control_reg);

            // Write DAC control registers for the first AD5757 channel A register, the value is 0x1C4115,(00011100,01000001,00010101)
            // R2, R1, R0=0 mA to 20 mA current range
            // DC_DC = 1, power up the dc-to-dc converter
            // RSET = 0, selects the external resistor (default)
            // OUTEN = 0, disables the channel (default)
            // CLR_EN = 0, channel does not clear when the part is cleared (default)
            // INT_ENABLE=1,Powers up the dc-to-dc converter, DAC, and internal amplifiers for the selected channel.
            // After the line of code is executed, DCDC output from 4.95V up to 7.4V
            adc.Cmd_Write(AD5757.ControlREGAddress.Writir_DA0_Control, AD5757.ControlREG.DAC_control, AD5757.DAC_OUTDISEN);

            // Read the first AD5757 channel A DAC control register, the value is 0x0115
            adc.Readback(AD5757.ReadAddressDecode.Read_DA0_control_reg);

            // Read the first AD5757 channel A gain and offset registers, respectively, the default value 0xFFFF and 0x8000
            adc.Readback(AD5757.ReadAddressDecode.Read_DA0_gain_reg);
            adc.Readback(AD5757.ReadAddressDecode.Read_DA0_offset_reg);

            // Problem: write the first AD5757 channel A data register to 20mA, when the current output at both ends of ammeter,
            // the measured only 2mA
            adc.Data_Write(AD5757.WritirDataReg.Writir_DA0_Data, 0xffff);

            // Read the first AD5757 channel A data register, a value of 0xFFFF,Correct!
            adc.Readback(AD5757.ReadAddressDecode.Read_DA0_data_reg);

            // Again Write DAC control registers for the first AD5757 channel a register, the value is 0x1C4155, select DAC_OUTEN to Enable
            // After you execute the following line of code, current output if no load, DCDC output 22.78V,FAULT LED light;
            // when the current output at both ends of ammeter, FAULT light out, DCDC is a 7.4V
            adc.Cmd_Write(AD5757.ControlREGAddress.Writir_DA0_Control, AD5757.ControlREG.DAC_control, AD5757.DAC_OUTEN);

            // Problem: write read the first AD5757 channel A data register to 10mA, when the current output at both ends of ammeter,
            // the measured only 1mA
            adc.Data_Write(AD5757.WritirDataReg.Writir_DA0_Data, 0x7fff);
        }
    }

Outcomes