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.

HDC1080: Send STOP condition while measurement ongoing (reconfirm)

Part Number: HDC1080

Hello,

Please let me reconfirm.

The post as below, Master send STOP condition before read the data.

https://e2e.ti.com/support/sensors/f/1023/t/553297

START

Addresbyte write (0x80)

Config Register write (0x00)  // Pointer to Temp. Register

STOP

WAIT 15msec

START

Addresbyte read (0x81)

Read MSB-Databyte Temp.  // ACK

Read LSB-Databyte Temp.  // ACK

Read MSB-Databyte Hum.  // ACK

Read LSB-Databyte Hum.   // NACK

STOP

Which is correct?

Regards,

Naoki Aoyama

  • Hello Naoki-san,

    The sequence above in your post will not work as the HDC1080 is default configured for only Temp or Humidity measurement. In the above sequence only the temp reading is desired then the read access for humidity must not be done as the data will not be correct.

    On the other hand the sequence specified in the embedded post as specified by Carmine is the correct sequence.
  • Hello Naoki-san,

    Your sequence is correct as the Temp+Humidity Sensing is already set (Bit-12). Please ignore my last post on the same if both temp and Humidity Sensing is required.
  • Hello Amit-san,

    Thank you for your reply.
    I am a little confused. Please check again.

    Our customer use the HDC1080 with acquisition mode to measure both temperature and humidity.

    I suggested the customer the sequence as follows,

    ---------------------------------------------------------------
    START

    Address byte and write (0x80)
    Pointer register (0x02) :Config register
    Write data (0x1000)

    STOP

    START

    Address byte and write (0x80)
    Pointer register (0x00) :Temp register

    both Master and HDC1080 release the I2C Bus
    (There is no STOP condition sending)

    wait until finish the measurement

    Repeated START

    Address byte and read (0x81)

    HDC1080 send the temp data //ACK
    HDC1080 send the humidity data //ACK

    STOP
    -----------------------------------------------------
    Is above sequence correct?

    I have one more question about the Sequence by Carmine-san.
    I show from the Trigger the measurement.

    START

    Addresbyte write (0x80)

    Config Register write (0x00) // Pointer to Temp. Register
    -----------------------
    STOP
    -----------------------
    WAIT 15msec

    START

    Addresbyte read (0x81) ..............

    There is STOP condition sending at measurement ongoing.
    Is it correct?

    I have heard if STOP condition is sending at this timing,
    the measurement stops.

    Best Regards,
    Naoki Aoyama
  • Hello Naoki-san

    The most optimal sequence is the following as the HDC1080 is configured for both Temp+Humidity readout

    START
    Address byte and write (0x80)
    Pointer register (0x00) :Temp register
    STOP

    Wait for 15 ms

    START
    Address byte and read (0x81) // Slave will ACK if data is ready
    HDC1080 send the temp data byte-1 //ACK
    HDC1080 send the temp data byte-0 //ACK
    HDC1080 send the humidity data byte-1 //ACK
    HDC1080 send the humidity data byte-0 //NAK
    STOP

    If the Slave device is not ready with the data it will NAK the Address byte and read (0x81) which will result is a STOP on the bus.
  • Hello Amit-san,

    I understood the most optimal sequence.

    In the Fig.12 on the DS, it seems there is no STOP condition........

    Allow me to ask one more question.
    When the slave device receive the STOP condition, it will clear the pointer register.
    But the default condition of the HDC1080, the pointer register address is 0x00.
    So, it is not necessary to send the pointer register address after read command.
    Is my understanding correct?

    Regards,
    Naoki Aoyama
  • Hello Naoki,

    Yes, I agree the STOP condition is not mentioned explicitly, but the end of the transaction must be a STOP.

    I would suggest always sending the pointer register as that is the start of conversion trigger condition
  • Hello Amit,

    Thank you for your reply.
    I will suggest the customer to send the STOP condition.

    Thanks,
    Naoki Aoyama