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.

ADS112C04: Read Conversion Data Sequence (Sec 8.5.3.5) questions

Part Number: ADS112C04

Hi,

I intend to use RDATA command to read temperature in a continuous mode from ADS112C04. I am trying to write a driver for controlling the chip. I had a couple of questions regarding the diagram shown and data mentioned for the read conversion data sequence. 

  1. There is a 'Sr' Symbol in the second frame's 1st section. What does it stand for?
  2. What would be the effect if I introduce a time gap between the first and second frame when the bus is not doing anything (No SCK, No SDA)? I do not mind stale data or loss of data. I am more concerned about whether the chip will reply with the converted data or if I would receive some garbage value.

Thanks,

Sarvesh

  • Hi Sarvesh,

    'Sr' stands for repeated start (or 'S'tart 'r'epeated). Writing the RDATA command to the ADS112C04 will place the most recent conversion into the device's output shift register. If you issue no further commands to change what is in the output shift register (such as RREG), then the contents from the conversion result will stay in the output shift register until read from the device. You may not be reading the most recent conversion result if you delay the read.

    If you are using a micro I2C hardware peripheral you would normally complete the entire transaction so as not to relinquish the bus until communication is complete. My question to you is why are you delaying the communication in the middle? Why not wait until you are ready to read the result before issuing the command?

    Best regards,
    Bob B
  • HI Bob,

    Thank you for the quick response.

    So does that mean any read issued after a RDATA command will read from output shift register? What happens if the master sends a stop after the RDATA?

    S -- Slave Addr -- W -- Ack -- RDATA -- Ack -- -- some time -- S -- Slave Addr -- R -- A  -- [What do I get here?]

    I will be waiting till I am ready to read the result. However between the write and read call in my application, I am assuming there will be software delay (because of the time taken by Linux to propagate a write and read system call to the appropriate driver). So, I am trying to see if I need to define custom write-read function that will write/read immediately one after the other, or if I can just accept some software delay and call write RDATA and then call read.

    Thanks,

    Sarvesh

  • Hi Sarvesh,

    As the data has been written to the output register a stop command should not interfere. As I stated before, the contents will stay in the output register until it is read, or another command places a new value in the output register.

    The reason for a repeated start is to make a change in the read/write function without relinquishing the I2C bus until the stop command is sent. So a repeated start holds the bus active until the complete sequence is accomplished. If you have total control of the I2C bus, then this should not be an issue.

    Best regards,
    Bob B
  • Thanks Bob for the reply!

    I understand it better now. I think I will use a repeated start in my code then.

    Thank you for the help.

    -Sarvesh