Post Go back to editing

AD9082 Full Scale Current Equations

Category: Datasheet/Specs
Product Number: AD9082

Should I trust the DAC output full-scale current equations listed in the AD9081/AD9082 System Development User Guide (UG-1578)?

UG-1578(rev 0) page 150 shows two interdependent equations for calculating the DAC output full-scale current as follows

I_FSC_MIN = FSC_MIN_CTRL(3:0) * 25 / 16

I_OUTFS = IFSC_MIN + FSC_CTRL(9:0) * 25 / 1024

The User Guide, on that same page 150, then gives an example that is supposed to result in a full scale output current of 37.75mA. 

If the example is taken literally and we use a register setting of 0x117 = 0xA and a setting of 0x118 = 0xFF then we get the following

    FSC_MIN_CTRL(3:0) gets the value 0x0 (decimal 0)
    - since it is defined as using the 4 MSBits of the register 0x117

    FSC_CTRL(9:0) gets the value 0x3FE (decimal 1022)
    - since it is defined as using the 0xFF from register 0x118 for FSC_CTRL(9:2) and using the binary 10 (two LSbits) bits from register 0x117 for FSC_CTRL(1:0)

    I_FSC_MIN = 0 * 25 / 16 = 0mA
    I_OUTFS = 0 + 1022 * 25 / 1024 = 24.95.mA

    24.95mA does NOT match the intended 37.75mA

If the example is slightly corrected and sets register 0x117 to 0xA3 and 0x118 to 0xFF then we get the following

    These corrections are based on the assumption that the maximum full-scale current is 37.75mA when FSC_MIN_CTRL and FSC_CTRL are at max.
    The 37.75mA being the assumed maximum, comes from the data sheet (not User Guide) specifications for "Full-Scale Output Current Range"

    FSC_MIN_CTRL(3:0) gets the value 0xA (decimal 10)
    - this assumes that  the example intended to use the maximum value
    - a value of 10 (not 15) being the max is also defined on page 150

    FSC_CTRL(9:0) gets the value 0x3FF (decimal 1023)
    - like above all 8 bits from register 0x118 get concatenated with the 2 LSBits from register 0x117 to form FSC_CTRL(9:0)

    I_FSC_MIN = 10 * 25 / 16 = 15.625mA
    I_OUTFS = 15.625 + 1023 *25 / 1024 = 40.60mA

    like above, 40.60mA doesn't match the intended 37.75mA.

There is another example in the register map section of the User Guide page 243.  This example sets 0x117 to 0x40(advertised default) and 0x118 to 0x88(advertised default) and I am assuming it is targeting the ideal/default setting of 26mA.

    FSC_MIN_CTRL(3:0) = 0x4 (decimal 4)
    FSC_CTRL(9:0) = 0x220 (decimal 544)
    I_FSC_MIN = 4 * 25 / 16 = 6.25
    I_OUTFS = 6.25 + 544 * 25 / 1024 = 19.53mA
    And again 19.53mA doesn't match the intended 26mA.

So here are three examples that don't match what I expect.  Hence i am questioning what i should trust.

I have seen examples (internal to my company) that set 0x117 to 0x43 and 0x118 to 0x8C in order to achieve 26mA, but i can't validate this example either.

In the end, i am looking for what values do I use at 0x117 and 0x118 to get the ideal 26mA setting. 

on Nov 10, 2022 11:52 AM


The equations for setting the I_FSC_MIN and I_OUTFS are correct but the example on page 150 is wrong and should read as follows: 

"For an IOUTFS of 37.75 mA, set Register 0x117 = 0xA2 and  
Register 0x118 = 0xE2. Note that the maximum FSC_MIN_ 
CTRL setting is limited to 0xA (or decimal 10). "

With regard to page 243 showing register description, the default RESET settings for reg 0x117 and 0x118 should be 0x00.

The API used to configure the DAC's full-scale current sets it by default to 26 mA  (eg 0x117=0x041 and 0x118=0xCA).   This value can be modified by user via API or direct SPI write to these registers.

/* set default current */
err = adi_ad9986_dac_fsc_set(device, used_dacs, DEFAULT_DAC_FULLSCALE_CURRENT, 1);

  • FormerMember
    0 FormerMember on Nov 10, 2022 11:54 AM in reply to FormerMember

    Appreciate the feedback and catching the inconsistency in UG-1578.  We will submit a request to make edit change to document.