CCS811 Gas Sensor I2C data transfer problem

Hello,

We are trying to program the CCS811 gas sensor using the TI LPSTK-CC1352R. As shown in the initialization guide from the programming guide (see attached), we are supposed to first verify the HW_ID register holds a value of 0x81. Instead, we read a value of 0x20, which is 0x81 shifted twice to the right. The next step is to read the STATUS register and verify the 4th bit of that byte == 1. When we read this register, we do not get anything and receive 0x00 back.

Is there a reason the first byte we read is shifted twice to the right, and the second byte we read is nothing at all? Is there something we need to configure as far as the timing goes? Please let me know about any suggestions you have on how to solve our issues.

Thanks,

SATB

Having worked on the CCS811 in the past, I had big difficulty with the sensor as it uses clock-stretching. This is part of the I2C protocol where the client holds the SCL line low as it needs more internal processing time to respond. BUT on a number of MCU’s this is not supported ( e.g. ESP32). I don’t know whether that could be an issue with the TI LPSTK-CC1352R. What you could try is a very low (like 30Khz or lower ) I2C connection and see whether that makes a difference. Sometimes the low speed is JUST enough