@whitequark✧✦Catherine✦✧
Thinking further, I feel like the best advice for using I2C in designs is:
(a) don't
(b) if you must, limit it to exactly two devices per bus
(c) you probably should ensure you can reset or power cycle the target though, just in case
(d) in the event of b and c you now have a solid 40% chance of things mostly working
(e) or you might get something like that QCT I2C controller that sometimes wedges on transfers of lengths it dislikes and remains that way until SoC reset...
@swetlandBrian Swetland
@whitequark✧✦Catherine✦✧ oooh i2c (and SMBus) are *way* more cursed than you realize. those two buses aren't 100% compatible. the data hold timing is different by 100ns, so it is possible to make a host that is i2c compliant but won't work with certain smbus devices. i've seen this in the wild. smbus has different logic levels. a lot of i2c/smbus devices cannot handle saturated accesses at the full 100/400KHz clock rate.
If you have a fediverse account, you can quote this note from your own instance. Search https://mastodon.social/users/tubetime/statuses/114823945859870434 on your instance and quote it. (Note that quoting is not supported in Mastodon.)