Some sensors or chips have non-standard behavior that causes issues when trying to use I2C. Here's a few of the ones to watch for

  • BNO055 - Clock stretching, and sometimes needs to be reset
  • ATECCx08 - Use slow-speed I2C to get out of sleep mode
  • MCP9600 (some date codes) - duplicate data from register reads due to clock stretching (?)
  • PN532 - Clock stretching
  • CCS811 - Clock stretching

If you're using Raspberry Pi with these chips, check out our guide on how to work-around clock stretching

https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/i2c-clock-stretching

This guide was first published on Jul 29, 2017. It was last updated on Jul 29, 2017.

This page (Troublesome Chips) was last updated on Dec 01, 2021.

Text editor powered by tinymce.