Hi,
I need to build a I2C network with 80 slaves. My main issue is that is one slave die (power off for example) the whole chain is dead. Ant tips to help with that ?
Thanks
Seb
Hi,
I need to build a I2C network with 80 slaves. My main issue is that is one slave die (power off for example) the whole chain is dead. Ant tips to help with that ?
Thanks
Seb
Take a look at I2C mux/switch parts. They let you create multiple isolated I2C chains.
freeseb:
Hi,I need to build a I2C network with 80 slaves. My main issue is that is one slave die (power off for example) the whole chain is dead. Ant tips to help with that ?
Thanks
Seb
I don't see how having one device powered off would kill the whole 'network', unless that device was the one providing the pull-up voltage for the clock and data pull-up resistors. Only one device (usually the master) should be providing the voltage for the pull-ups. Another concern is the total length of your I2C 'network' using 80 slave devices. I2C bus was designed to interface between ICs on the same board or at best in the same chassis, not spread over several feet for greater.
Lefty
Also, with 80 devices, you will need to work a bit the data and clock lines due to impedance, and the internal pull-ups will not cut it, you will need external resistors.
Probably yes
Any ideas/experience of the value of the required resistors ?
Thanks
Seb
freeseb:
I need to build a I2C network with 80 slaves. My main issue is that is one slave die (power off for example) the whole chain is dead. Ant tips to help with that ?
Is this observed behaviour, or are you speculating it will happen? I note you are saying "need to build" which implies you haven't done it yet.
There is no particular reason why one or more "dead" units will kill the chain. Each one is effectively ignoring it anyway until addressed, and being powered off is just another way of ignoring it.
However as Lefty has said, your greater problem might be that the chain won't work at all because of the impedance and capacitance of the cabling. You might be able to drop the I2C speed down to compensate. As for the resistors, you will certainly need pull-ups at the master end. I would start with 4.7K and see what happens.
If the chain works with 40 but not 80 slaves, then you might connect two Arduinos together (using SPI, say) and have each share the load of sending data down via I2C. Or the other idea of I2C repeaters or multiplexers might be simpler and cheaper.
The I2C protocol limits the total bus capacitance to 400 pF. The capacitance value for each device will vary but typically a device with a very low capacitance measures around 10pF. Assuming all your devices have low capacitance you are already twice the acceptable limit.