10% less than the programmed value AD5757 output current

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);
        }
    }