Post Go back to editing

AD7175-8 reverse behavior observed for reference voltage configuration

Category: Datasheet/Specs
Product Number: AD7175-8

We are using the AD7175-8 and have it mounted on a custom board, and we also on a EVAL board purchased from AD. We are using a 5V external reference voltage on our custom board, and the EVAL board also has an external 5V reference.

The data sheet states that the REF_SEL0 bits in SETUPCON0 can be written with '00' for use with an external reference and '10' for the internal reference of 2.5 V. The latter also requires the REF_EN bit in ADCMODE to be set to 1.

We are using an external power supply directly as a known input to AIN5 with no other inputs. On the eval board, we have removed LK8 and LK21 jumpers such that all inputs are shorted to one another but to no other source. We are configured for unipolar mode.

  • When we supply 2.5 V as input and configure for external reference, we expect to see half counts, but are instead seeing full counts, on all inputs.
  • When we configure for internal reference, we see half counts on all inputs, as expected for the external reference.

This is leading us to believe that the configuration bits for REF_SEL0 behave the opposite of how the device is spec'd in the data sheet. I could not find any errata sheet. Has this behavior been noted or observed anywhere else?



Updated the product number in the title from AD7175 to AD7175-8
[edited by: JEstayo at 1:14 PM (GMT -5) on 22 Jan 2024]

Top Replies

  • Hi  ,

    This is a strange behavior. Does this happen on both the custom board and Evaluation board? Are you using a the Eval+ Software or do you have a custom code?

    You mentioned that you have a known input of 2.5V to AIN5, what is your other differential input pair? Is it floating or connected to ground? On another note, LK5 to LK20 must be removed, if analog input pins are not used for on-board noise test.

    What is the output code for a 2.5V input for both external reference (5V) and internal reference (2.5V)?

    Could you provide your complete register settings? 

    Apologies for having too many questions, providing these details will help us further debug the issue as this is not the proper behavior of the device.

    Regards,

    JC

  • No problem, I really appreciate the reply.

    Does this happen on both the custom board and Evaluation board?

    Yes, it happens on both. I am redoing the experiment for this reply on the evaluation board.

    Are you using a the Eval+ Software or do you have a custom code?

    Custom code. 

    You mentioned that you have a known input of 2.5V to AIN5, what is your other differential input pair? Is it floating or connected to ground?

    We made sure to make it connected to ground, and that the same ground is shared across the board.

    On another note, LK5 to LK20 must be removed, if analog input pins are not used for on-board noise test.

    Looking at the schematic, we removed LK5 through LK8 and LK21. That results in only a short for the input pins, without any connection to a source for the noise test. This should be ok for our testing and it is behaving as expected. We read on 12 of the input channels, and they all read the same, with only one input on AIN5.

    What is the output code for a 2.5V input for both external reference (5V) and internal reference (2.5V)? Could you provide your complete register settings? 

    Configuration:

    • ADC MODE (0x01 0x24 0x20) // internal ref disabled, hide delay, Single Cycle, 100 us delay, standby mode, internal oscillator
    • READ ID (0x47) Response (0x3C 0xDF)
    • CH CONFIG (0x11 0x00 0xA0) // CH1 is AIN5, CH0 through CH12 are configured for AIN4 thru AIN16 the same
    • SETUP CON (0x20 0x00 0x20) // REF_SEL0 set to INTERNAL though I really want to use EXTERNAL
    • GPIO CON (0x06 0x28 0x0C) // GPIOs 0-3 enabled, sync enabled
    • INTERFACE MODE (0x02 0x00 0x40) // status register enabled

    Now to perform a read:

    • CH CFG (0x11 0x80 0xA0) reference enable
    • ADC MODE (0x01 0x84 0x10) internal ref enabled, single conversion mode to start conversion
    • READ DATA (0x44) Response (0xAC 0x1B 0x01) == 11279105 // status register is 0x01, no error

    Normalized count value:

    >>> 11279105 / (1 << 24)

    0.6722870469093323

    This reflects the 2V input and 3V external reference, a calculation equal to about 2/3 of 24 bits.

    If this was a 2.5 V internal reference, then the value would be 4/5 of 24 bits.

    For setting to EXTERNAL, this is all the same, except SETUP CON becomes (0x20 0x00 0x00). I then get the expected reading for the internal 2.5V reference.

  • Hi  ,

    I have tried replicating your issue using the Evaluation board and the Eval+ Software. I copied your configuration settings.

    ADC MODE Register - 0x2420

    ID Register - 0x3CDE

    CHANNEL Register - 0x00A0

    SETUPCON Register - 0x0020

    GPIOCON Register - 0x280C

    INTERFACE MODE Register - 0x0040

    To read, I performed these steps:

    - Write 0x80A0 to CHANNEL Register.

    - Write 0x8410 to ADC Mode register. Note that the ADC returns to standby mode after automatically cycling to all enabled channels in Single Conversion Mode.

    - Read data register. For a 2V input and internal reference (2.5V), the output code is CAFEDD in hex or 13303517 in decimal. Approximately ~4/5 counts of 24bits.

    For External reference, I used the on-board 5V reference.

    - I configured the SETUPCON Register to external reference.

    - Then write 0x2410 to ADC Mode register again to start conversion. Disabled internal reference.

    - Read data register. For a 2V input and internal reference (5V), the output code is 658270 in hex or 6652528 in decimal. Approximately ~2/5 counts of 24bits.

    I was not able to replicate your issue. Before writing to the ADC Mode register could try reading all the registers again, just to ensure that all the registers you have modified are successfully written. Are you polling the RDY bit before sending a read command to the Data Register? For easier debugging, could you also try it in Continuous Conversion mode instead of Single Conversion mode. In Single Conversion mode, the ADC returns to standby mode after cycling all enabled channels. You will have to rewrite in the ADC Mode register to remove the ADC from Standby mode and start a conversion again unlike in Continuous Conversion mode where the ADC never return to standby mode and just continuously converting. This will help us eliminate the possibility that the data you have read is really from the current conversion and not from the previous conversion.

    Regards,

    JC

  • Hi  ,

    If the image appears to broken, kindly, click on it and a zoomed in image should appear.

    Regards,

    JC

  • Ok, interesting. I didn't detail it but yes we are polling the register 0x00 to check the RDY bit before reading. I also have an outer loop that continuously reads 12 channels every second and sends the readings off board to a custom UI, so being a conversion behind won't really be an issue in my setup.

    Otherwise from your testing I can't yet see a reason that stands out as to why my behavior is different. I did observe that I may be enabling the internal reference bit in ADC mode when taking a reading, even if I am using external reference select. I don't think that should matter, but I can try fixing that and see if by some chance it makes a difference.

  • Ok, I can see it fine in your post, so we're good, thank you.

  • Hi  ,

    Let me know if any of my suggestions worked for you and if not so we could generate a different approach to your issue.

    Regards,

    JC

  • I am reading back the ADCMODE, SETUPCON0, and CH0 registers and I am not seeing any discrepancies. At this point, I'd like to see a trace of what the Eval+ software actually sends over the SPI line, and compare it to our code's comm, since you have replicated my experiment but without any issue. There must be a difference somewhere there.

  • Hi  ,

    Unfortunately, we don't have available sample LabVIEW source code that can be provided. 

    These are our available sample codes that you may use as reference in building your custom code.

    AD717x/AD411x Console Application [Analog Devices Wiki]

    AD717x IIO Application [Analog Devices Wiki]

    If you could also provide a scope shot of your SPI transactions, this could also help us understand the issue.

    Regards,

    JC

  • Hi  ,

    Have you resolved your issue? If yes, I would be closing this thread.

    Regards,

    JC