This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1147: The data read from the register is inconsistent with the configuration.

Part Number: ADS1147

Tool/software:

Here are 2 issues we found, during the long-term testing of the resistance detection function

1.For the registers configured through SPI, when repeatedly reading them, there is a probability (occurring about two or three times in an hour) that the data read from the registers may not be consistent with the configuration, but reading them again will be consistent.

The following image shows the operation of reading register 0x03 (which requires adding 0x20 during communication, so it is 0x23) via SPI. The data expected to be read from this register is 0x01, but the actual reading is 0x07.

2. For a fixed resistance value, continuously reading its converted ADC results may occasionally show a sudden drop in the read value; however, reading it again will restore the value.

  • Hi YUCHUN GUO,

    I assume you have sent the SDATAC command prior to reading / writing commands, correct?

    Do you stop conversions before you send these commands?

    Is there any digital isolation in your system? Can you send a schematic?

    Are there any other devices sharing the SPI bus with the ADS1147

    Can you explain what "sudden drop in the read value" means? Can you provide the data you are getting so we can review? Please include the ADC register settings as well as the raw ADC data in hex

    -Bryan

  • Hi Bryan,

    I assume you have sent the SDATAC command prior to reading / writing commands, correct?

    ---During the continuous reading of registers, no SDATAC was sent.

    Do you stop conversions before you send these commands?

    ---In continuous conversion mode, during the process of continuously reading conversion results, we do not write registers, only read registers.

    Is there any digital isolation in your system? Can you send a schematic?

    ---Yes, there is a digital isolator between MCU and ADS1147. Sorry, I can't share the schematic.

    Are there any other devices sharing the SPI bus with the ADS1147

    ---No.

    Can you explain what "sudden drop in the read value" means?

    ---The fixed resistor I provided has an actual value of 3000, but it reads 2950, and then the next value returns to 3000.

    Can you provide the data you are getting so we can review? Please include the ADC register settings as well as the raw ADC data in hex

    ---The following three registers are fixed with the configuration as follows:

    REG_MUX1 = 0x20

    REG_IDAC1 = 0x01

    REG_GPIOCFG = 0x0C

    The following three registers will be dynamically adjusted based on the resistance values:

    Example 1: If the resistance is within 10000Ω, REG_IDAC0 = 0x02, REG_GPIODAT = 0x08, REG_SYS0 = 0x01

    Example 2: If the resistance is within 500Ω, REG_IDAC0 = 0x06, REG_GPIODAT = 0x04, REG_SYS0 = 0x11

    Normal register valueNormal register value

    Abnormal register value

    Abnormal register value

    -Karl

  • We read the ADC conversion results using Full-Duplex Mode.Full-Duplex Mode

  • Hi  

    Thank you very much for answering this question, but I also hope to receive your response to any further questions. Thank you.

    -Zewei

  • Hi Zewei Li,

    I have been out of the office, thanks for your patience

    Can you help answer some additional questions:

    • Are these issues randomly occurring? In other words, is there any pattern to the register read or data errors? In terms of the frequency (do they happen every 5 minutes for example) or anything else (is the register read always wrong for register 0x03 for example?)
    • What is the difference in codes for a resistance value of "3000" and "2950"?
    • If this issue is randomly occurring it will be difficult to troubleshoot. It might be a random communication error - you said that if you read the same register 2x or the same data 2x then it is always okay?

    -Bryan

  • Hi  ,

    Thank you for your response

    • These issues occur randomly, with occasional anomalies in the data read from ADC sampling results occurring approximately once an hour; The data read from the register occasionally encounters an exception, which occurs about two or three times per hour. The abnormal register is not fixed each time. We captured three register exceptions, two of which were 0x0A and one was 0x03.
    • Due to register read exceptions, which occur occasionally and then return to normal, we currently only respond to further processing after three consecutive register read exceptions;
      Since the sampling time is 100ms and the time interval for reading ADC data is 30ms, we believe that if the ADC data read three times in a row is the same, then this data is considered reliable;
      Do you think these two temporary handling methods are appropriate for us?
    • For the current situation, we need to fundamentally solve this problem. What directions can we take?

    -Zewei

  • Hi Zewei Li,

    Regarding the logic analyzer captures you are sending: are you probing at the ADC pins to get these captures? Or are you probing at the controller (MCU) pins? You might at least try both to make sure they agree i.e. that the data is not getting corrupted as it crosses the isolation barrier

    I really don't know what to suggest here. We might be able to offer additional support if you could reproduce the issue at will, but that does not seem to be the case here. A few random readings over the course of one hour likely does not indicate an issue with the ADC. It sounds like a communication issue, possibly due to supply glitching, ground shifts, external interference e.g. EMI, or adjacent signal coupling. Again, these are just guesses

    You can try to investigate further to see if you can identify the cause of the issue, or you can implement communication error checking. This is basically what you are doing now by reading the same data or registers 2-3 times in a row. 

    -Bryan