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.

ADS8887: occasionally got stuck by outputting all zero data

Part Number: ADS8887
Other Parts Discussed in Thread: TLV773

First, let me provide some backgrounds.

In one of our 4-20mA current loop-powered sensor products, we utilize Analog Devices' AD7989-1, along with several op-amps and an MCU, to sample sensory signals. The product is already in low-volume production, and we wanted to lower the BOM cost since the ADC provided by ADI is quite costly. We consulted TI technical support and identified the ADS8887 as a potential alternative.

After carefully reviewing the datasheets of both ADCs, we concluded that they are pin-to-pin compatible, software-compatible (at least in our use case), and similar in performance. We applied for free samples from TI and, upon receiving them, promptly swapped the ADC (hand-soldered). To our delight, the product performed as expected with no noticeable performance issues. We nearly proceeded to order a full reel from our distributor before discovering a disturbing issue I'm talking about here…

By frequently power-cycling the product, there’s a 5~10% chance that the ADS8887 somehow becomes ‘stuck’ by returning all-zero data, and the total current consumption goes up by about 2mA (which is critical in a current-loop powered device). Since the product PCB is tiny and void of any test-points on the SPI bus, we are unable to fire up logic analyzer on it. However, I've programmed the firmware and am quite experienced and confident that it won't be an issue here (forgive me for any perceived arrogance). The firmware has been thoroughly tested, and the logic has been carefully debugged on previous occasions using the ADI's part, which has never exhibited such an issue.

When the ADS8887 got ‘stuck’, resetting the MCU (no matter how many times) doesn’t recover it, the only way to recover is by power cycling the device, which affirms that the issue isn’t firmware-related.

We also suspected at first that the hand-soldering might somehow damaged the chip, so we soldered another 3 products via SMT and reflow oven, using our best efforts, and all 4 products now have the very same issue.

Furthermore, we've made another crucial observation: the method of power-cycling significantly affects the occurrence of the problem. If the power (the 24V current loop) is cut and resumed using a circuit breaker (such as a push-button), the issue doesn’t show at all, and we tried at least several hundred times. But if a loose hook or bare wires is used instead (creating several transients upon contact), the issue can be replicated fairly quickly.

Note that the sampling rate of the ADC is roughly at 30ksps.

Currently we have tried the following tricks, but none of these shows any improvement or mitigation:

1) Adding TVS diode (SZMM3Z4V7) between PWR_3V3 (as ADS8887's reference) and GND.

2) Replacing all or some of the 105 (1uF) capacitors to 104 (0.1uF).

3) Reducing the number of 106 (10uF) capacitors on PWR_2V5 to 1.

4) Using higher voltage (3.3v) for the PWR_2V5 network by replacing TPS78225 to TPS78233.

We're reaching out for assistance from TI as well as e2e community, any guidance or assistance in resolving this issue would be greatly appreciated!

  • Hello Zijiang,

    Based on all of your data and experiments, I think this is a brown-out issue, where the 2.5V supply does not discharge to 0V before power is reapplied, causing to the ADC to go into an unknown logic state.

    I suggest replacing one of the bypass capacitors on the PWR_2V5 rail with a small load resistor; the lower value the better.  The value will depend on how much additional supply current you have from your 4-20mA loop, but if possible, I suggest 10kOhm or lower.

    This may not correct the issue, but it is the only thing I can think of without changing your board design.

    Also, I think you may already be aware, but the AVDD supply minimum voltage is 2.7V; you are operating from 2.5V in which case you are outside of the specified operating range of the device.  However, since you tried increasing the supply to 3.3V, I do not think this is the cause of the power-up concerns.

    Regards,
    Keith Nicholas
    Precision ADC Applications

  • I admit I didn’t aware that 2.5V is out of the spec of the device. But nevertheless, changing the voltage to 3.3V doesn’t solve or mitigate the problem, as I just make several experiments.

    I’ve tried adding a 4.7K resistor loading the 2.5V (now 3.3V) AVDD network, but I can still reproduce the glitch, only just a little bit harder (maybe)…

    Since you can calculate the RC time constant of 4.7K * 10uF = 47ms, and we have many 10uF capacitors on the network (which I had decreased to just one 10uF when I did the experiment). It’s still quite a long time compared to the transients may be created by unstable wiring contact, which may actually happen at the end user’s site.

    Overall, based on current information I have, I think I’m quite confident to say that ADS8887 has some limitations, and I’m looking forward of you guys to fix it soon! But for now, I would just stick with ADI.

    Thank you for your time!

  • Hello Zijiang,

    Based on your comments, I do think this is a brown-out issue where the internal reset is not working as expected.  If I have any other ideas or suggestions, I will post them here.

    Regards,
    Keith

  • Thank you Keith, for sharing this information.

    Anyway, if this brown-out issue is confirmed, would you recommend us (and other customers as well) a simple mitigation circuit, The main idea is to help discharge the capacitors before VDD is powered again (eliminating transients).

    Maybe some of TI's LDO or buck converter product can satisfy this requirement?

    PS, if you guys cannot reliably reproduce this issue, feel free to contact me, and I'm eager to help.

  • As i did more experiments today, i can say quite confidently that reducing the capacitance and add more loading to the VDD network does have effect, making the issue much harder to reproduce as much as a factor of 10x, which supports Keith's theory of brown-out issue.

  • Hello Zijiang,

    The TLV773 or similar LDO has an internal discharge resistor less than 1kohm.  This should help quickly discharge the bus voltage.  You will probably want to decrease total capacitance to 10uF range in this case.

    Regards,
    Keith

  • Today i did the experiment of replacing the TPS78225 LDO with TLV73333PQDBVR (courtesy of TI's free sample), which has the capacitor discharge capability. I did not modify the PCB, since these two parts are pin-to-pin compatible.

    Unfortunately this did not solve the issue, and maybe has negligable effect. 

    I'm on the verge of giving up...

  • Hello Zijiang,

    If interested, I suggest controlling the enable pin of the 3.3V LDO with your processor.  This should allow you to force a manual reset of the device.  Note that all IO pins should be set to logic low to make sure there are no voltages present on the ADC IO pins during the power-cycle reset.

    In this case, the board should work as well as the power-up reset circuit inside your MCU allows.

    Regards,
    Keith

  • Hello, I am going to close this thread.  If you have any more questions, please post a new question to the forum.

    Thank you for considering using a TI ADC in your design.

    Regards,
    Keith

  • ok. thanks for the efforts