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.

ADS1013: The acquired value is fixed to the maximum value.

Part Number: ADS1013

Hi,

 I am using ADS1013. A problem occurred with ADS1013. Please tell me how to resolve.

Data is acquired by I2C communication using MCU. The data is regularly converted in the single-shot mode, but it seems that the acquired value is fixed to the maximum value.

The data rate is selected as 1600SPS.  By inserting 1ms wait before executing write/read in I2C communication,it became significantly stable.

However, the incidence is decreasing, but this phenomenon is still occurring.

In this system, in order to reduce the current consumption, power is supplied to the conversion circuit immediately before conversion.

I am troubled because I do not understand the cause. Are there any countermeasures?

Best regards,

Yukie.

  • Yukie-san,


    Just to make sure I understand, when you read back the device, the data you get back is FFF (or something similar)?

    I would get an oscilloscope and check the SDA and SCL line to make sure the device is acknowledging the communication. If the I2C address is wrong, the device will not respond (as a NACK) and the SDA line always stays high. After the first 8 bits in the I2C communication the 9th bit should be low, with the ADS1013 ACKing the I2C address.

    Plot the SDA and SCL with an oscilloscope and post the results here. I'd like enough resolution to read the digital data sent to and received from the device.


    Joseph Wu

  • Hi  Joseph,

    Thank you for your support.

    I attached the result of plotting SDA and SCL with an oscilloscope.

    A, B, C, and D are a series of processes.

    Please check the contents.

    Best regards,

    Yukie

    SCL SDA.pdf

  • Yukie-san,

    Thank you for the pdf. However, I think the communication is a little off. Let me show you what I see:

    The A signal looks like a write to the configuration register. This looks correct, but the data rate is off. The master writes 10010000, there is an ACK from the device. Then the master writes 00000001 to indicate a write to the configuration register (then ACK from device). The next byte is 10000101. This starts a new conversion, with inputs AIN0-AIN, PGA=±2.048V, in single shot mode (then another ACK). Then the master sends 10000000 (with an ACK and a STOP). This sets the data rate to 1600SPS. Then there are a few comparator settings before finishing the write with an ACK and stop. This looks like a correct communication with the device similar to Figure 16 of the datasheet.

    Note, after this communication, data will not be ready until after the conversion completes. If the device is in single-shot conversion mode, here is the sequence of events: After the conversion start, it takes about 20us to start the ADC. Then you would wait for the conversion to complete. This would nominally take 1/(data rate) to complete, with ±10% from internal oscillator variation. For instance, if the data rate is 128SPS, you would wait 20us+(1/128)*1.1 = 0.708ms. After this time period, you can read the device and the data should be ready.

    After this, it looks like B is a read from the device, and the device responds with the configuration register. That's not how the read from the device works, the master should write to the device, and write the register that you want to read from. See figure 15 in the datasheet.

    Signal C then looks like a write to the device of 00 (which is the data register), then it looks like a write of the configuration register. But this I don't think this is set up correctly.

    Signal D looks like a read, but it just gives 00s, I also don't think this is set up correctly.

    Instead of what you have shown, the following is what I think should happen:

    1. Signal A is correct. Send a write to the device that gives the configuration register. Send 10010000A00000001A10000101A1000000A This will also start the conversion in single-shot mode.

    2. Then wait for the conversion to complete. If the data rate is 1600SPS, this should be 0.708ms.

    3. Read the device using the format of Figure 15. Note that a read of the device starts with a write to show which register you read from. This becomes address write, 00, address read, read data (2 bytes).

    Send 10010000A00000000A10010001AXXXXXXXXAXXXXXXXXA

    The Xs are all data from the device. This is a 5 byte transaction total.

    After that, start a new conversion with 1 again (or you can change the configuration register and have a different conversion).

    Read through my explanation and see if this makes sense. I think if you try this, is should work correctly.

    Joseph Wu