Post Go back to editing

Problem with internal calibration in AD7124-8

Category: Datasheet/Specs
Product Number: AD7124-8

Hi

I'm currently setting up a EVAL AD7124-8 and have some problems with calibration.

Im following the instructions given in the datasheet and from here.

  1. Reset the ADC, wait 1 ms
  2. Configure Channel_0 to use Setup0
  3. Configure Setup0
    1. CONFIG0_REG with unipolar mode, no buffers, internal reference, gain 1
    2. FILTER_0_REG with FS=384, sinc4 filter
    3. GAIN and OFFSET unchanged
  4. Output the registers (see below)
  5. Calibrate
    1. Set AD7124_ADC_CONTROL_REG to Idle
    2. Set AD7124_OFFSET_0_REG to 0x800000
    3. Set AD7124_ADC_CONTROL_REG to INternal full-scale calibration (mode 0b0110)
    4. wait 500 ms
    5. Set AD7124_ADC_CONTROL_REG to zero-scale calibration (mode 0b0101)
    6. wait 500 ms
  6. Output Offset and Gain register (see below)

I get this output:

Point 4:

CONFIG_0_REG: 0x0010
FILTER_0_REG: 0x010180
OFFSET_0_REG: 0x800000
GAIN_0_REG: 0x5554d1
CHANNEL_0_REG: 0x0001

Point 6:
OFFSET_0_REG: 0x7fffDA
GAIN_0_REG: 0x000000

And subsequently the measurement in continuous read mode does not make sense. Why does my Gain get cleared to 0?

(Also I noticed then when reading the ID_REG with 0x45 i receive 0x14 as an answer and not 0x17 as specified in the datasheet. Is this because it is the Evaluation board?)

Thanks for any help in advance!

Edit Notes

added AD specification to title
[edited by: epdg at 3:45 PM (GMT -5) on 27 Nov 2024]
Parents
  • Hi  ,

    Can you confirm if you are calibrating on a single channel only? 

    Please also note that the AD7124-8 is factory calibrated at a gain of 1, and the resulting gain coefficient is the default gain coefficient on the device. The device does not support further internal full-scale calibrations at a gain of 1.

    Can you also please expound this statement?

    And subsequently the measurement in continuous read mode does not make sense. Why does my Gain get cleared to 0?

    The AD7124-8 installed on the evaluation board is a re-designed silicon.

    There is a silicon revision on the AD7124. Changes on the device include the difference on ID register. The AD7124-8 standard part has an ID of 0x14 and the AD7124-8 B-grade and W-grade have an ID value of 0x16. The re-designed die for the standard part, B-grade or W-grade has an ID of 0x17. You may refer to this FAQ to determine the differences: (+) AD7124-4/8 Standard Silicon, B-grade, and W-grade - Documents - Precision ADCs - EngineerZone

    When a product is re-designed or production flow (fabrication site, assembly site) is changed, a Product/Process Change Notice (PCN) is issued which documents the changes done to the product. PCN links are also available on the FAQ link above. 

    Thanks and regards,

    Rod

Reply
  • Hi  ,

    Can you confirm if you are calibrating on a single channel only? 

    Please also note that the AD7124-8 is factory calibrated at a gain of 1, and the resulting gain coefficient is the default gain coefficient on the device. The device does not support further internal full-scale calibrations at a gain of 1.

    Can you also please expound this statement?

    And subsequently the measurement in continuous read mode does not make sense. Why does my Gain get cleared to 0?

    The AD7124-8 installed on the evaluation board is a re-designed silicon.

    There is a silicon revision on the AD7124. Changes on the device include the difference on ID register. The AD7124-8 standard part has an ID of 0x14 and the AD7124-8 B-grade and W-grade have an ID value of 0x16. The re-designed die for the standard part, B-grade or W-grade has an ID of 0x17. You may refer to this FAQ to determine the differences: (+) AD7124-4/8 Standard Silicon, B-grade, and W-grade - Documents - Precision ADCs - EngineerZone

    When a product is re-designed or production flow (fabrication site, assembly site) is changed, a Product/Process Change Notice (PCN) is issued which documents the changes done to the product. PCN links are also available on the FAQ link above. 

    Thanks and regards,

    Rod

Children
  • Hi Rod,

    Thanks a lot for your reply.

    Regarding your questions:

    1. I only activate one channel, yes (see below)
    2. The measurements after calibration are 0x000000 for any measurement (GND, V_Ref, 1.6 V), which I guess makes sense with a gain of 0

    See here my complete interaction with the board that leads to the behaviour:

         Write Register 0x00: ff ff ff ff ff ff ff ff // reset
         Read Register 0x45: 14
         Write Register 0x09: 80 01
         Write Register 0x19: 00 10
         Write Register 0x21: 01 01 80

    // read registers to verify state
         Read Register 0x59: 00 10
         Read Register 0x61: 01 01 80
         Read Register 0x69: 80 00 00
         Read Register 0x71: 55 54 d1  // factory gain
         Read Register 0x49: 80 01
         Read Register 0x4a: 00 01
    -----
         Write Register 0x09: 80 01  // activate Channel0
         Write Register 0x01: 05 50 // idle mode
         Write Register 0x29: 80 00 00  // set offset to 0x800000
         Write Register 0x01: 05 58 // internal fullscale claibration, followed by 500 ms delay
         Write Register 0x01: 05 54 // internal zero calibration, followed by 500 ms delay
    // End of calibration, read results
         Read Register 0x69: 7f ff d9
         Read Register 0x71: 00 00 00  // gain 0 0 0  (?)
         Write Register 0x01: 05 c0
         Write Register 0x09: 80 01
         Write Register 0x01: 0d c0 // start continuous read mode

    What am I doing wrong?

  • I made an even more minimal example which shows the same problem. This uses all default configurations and then starts an internal calibration which returns a gain of 0. Here are the registers I write and read:

    Write Register 0x00: ff ff ff ff ff ff ff ff // reset

    // read out default values after reset
    Read Register 0x69: 80 00 00  //OFFSET_0_REG
    GAIN_0_REG:     Read Register 0x71: 55 52 89  // GAIN_0_REG

    Write Register 0x01: 05 58 // internal full-scale calibration
    // waiting 500 ms
    Write Register 0x01: 05 54 // internal zero-scale calibration
    // waiting 500 ms
    // read values after calibration:
    Read Register 0x69: 7f ff c7 // OFFSET_0_REG
    Read Register 0x71: 00 00 00  // GAIN_0_REG


    I don't understand why this sets the gain to 0.

  • Hi  ,

    You are trying to perform internal full scale calibrations at gain = 1 and the device does not support further internal full-scale calibrations at a gain of 1.

    The channel being calibrated has a Gain = 1 and full-scale calibrations cannot be performed at a gain of 1. This is why your gain_0 register reads 0x0. Please ensure that the Gain > 1 when performing internal full-scale calibration.

    Thanks and regards,

    Rod

  • Hi Charles,

    Thanks for the clarification!

    Is there any benefit in

    - doing a full-scale calibration at higher gains for measurements at gain 1 or are calibrations only valid for one gain?

    - doing a zero-scale calibration without the full-scale calibration? (I remember the datasheet saying that a fullscale should be done before zero-scale)

  • Hi,

    Apologies for missing the thread. 

    - doing a full-scale calibration at higher gains for measurements at gain 1 or are calibrations only valid for one gain?
    • Each time that the gain is changed, an internal FS calibration should be performed to calibrate the gain error due to the PGA.
    - doing a zero-scale calibration without the full-scale calibration? (I remember the datasheet saying that a fullscale should be done before zero-scale)
    • Performing a zero-scale calibration without doing a full-scale calibration will only remove zero-scale errors of the device.
    • It is still recommended to perform both internal full-scale then zero-scale calibrations for better device accuracy. 

    Thanks and regards,

    Rod

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.