I3C has been around for a couple years now but here is a new video from Microchip talking about it.
More speed is always good, I also like the internal pull ups. It is much more complicated to implement then i2c however.
I’m excited to see the addition of dynamic addressing.
How does that work? Say you have two of the same ICs on the bus. How does the controller know which one is which at boot to assign? Like if one was Channel 1 and the other was Channel 2?
I saw it when I was learning about I3C. I wondered the same thing, but not enough to look deeper into it yet.
My understanding is that dynamic addresses are only possible with dedicated I3C devices. Strict I2C devices are called legacy devices and do not participate in the address allocation process, which happens at the beginning of the bus initialization process. So there can only be one of each ‘old’ I2C addresses on the bus.
It is much more complicated than this (devices need to change pin driver circuits between modes). The more I read about this, the uglier it gets. My current prediction is, that I3C will not replace I2C any time soon.
Yeah, it does sound like they should have made this bus a completely new standard and not mix it with the legacy i2c. Dynamic addressing does sound cool if it works. Address conflicts with multiple of the same devices on i2c busses are common and are terrible to work around.
For multiple of the same I2C device on the same bus problem, the PCA954x family exists. You can switch to one-of-many device busses through a config register. One more chip for up to 8 devices and some software (it’s only 1’s and 0’s )
! That chip totally makes sense but I never have thought to solve the I2c multiple device problem in that way