2026-04-11 12:06 PM
Hello,
We have the ISM330DHCX designed into a new product but I am having trouble getting reliable readings using the I2C interface. I am able to read the WHOAMI register and get 0x6B but OUT_TEMP_L (20h), OUT_TEMP_H (21h) always return zero.
I have the interface instrumented and I can see that the signalling is correct, with repeated start and everything, but only zeros.
Does anyone have a suggestion of how this is happening? Do I need to do something special to enable temperature readings?
Thanks
Solved! Go to Solution.
2026-04-16 1:00 AM
Hi @pedro_uno ,
Your I2C interface is working correctly since you can read the WHOAMI register.
The ISM330DHCX temperature sensor output registers (OUT_TEMP_L/H) will return zero unless the accelerometer or gyroscope is enabled (ODR ≠ power-down).
Set the ODR of either sensor to a valid value, wait for the sensor to update, and then read the temperature registers.
2026-04-11 1:54 PM
Welcome @pedro_uno, to the community!
Please check STATUS_REG.TDA.
The temperature sensor does not need a special enable sequence, but OUT_TEMP_L/H will only update once valid temperature data is available. Also make sure:
If TDA = 0, the temperature registers may still read as zero.
Hope that helps?
Regards
/Peter
2026-04-13 8:24 AM
For now I have the processor in a loop that reads the ISM330DHCX once per second.
You can see that I succeed to read the WHOAMI register.
STATUS_REG always returns 0x00, TDA not true.
I read back the CTRL9_XL register and it says I have the DEVICE_CONF bit set.
I2C is enabled by default and I am using I2C to access these registers.
What else can prevent the part from reporting temperature?
whilecount: 58
gyro_whoami = 0x6B
gyro status = 0x00
CTRL9_XL = 0x02
gyro_temperature = 0x0000
gyro_temperature = 25.000
whilecount: 59
gyro_whoami = 0x6B
gyro status = 0x00
CTRL9_XL = 0x02
gyro_temperature = 0x0000
gyro_temperature = 25.000
2026-04-16 1:00 AM
Hi @pedro_uno ,
Your I2C interface is working correctly since you can read the WHOAMI register.
The ISM330DHCX temperature sensor output registers (OUT_TEMP_L/H) will return zero unless the accelerometer or gyroscope is enabled (ODR ≠ power-down).
Set the ODR of either sensor to a valid value, wait for the sensor to update, and then read the temperature registers.