How can I use multiple Si705x temperature sensors on the same I2C bus?
well, SILabs, in their infinite wisdom did not use the two 'extra' pins for "strap addressing", so the short answer is you can't.
However, NXP has some "IC bus splitters" or "bus separators" such as PCA9617A using those would give you the ability to have a handful on the bus.
There is a one transistor solution to this.
Use a low voltage NMOS with Vth ~1V. Source connected to master drain connected to slave and 10-20K pullups on either side. The gate line is an enable (bar) line. This only needs to be done on one line - I usually use SDA
When the enable is high, the transistor will turn on when SDA pulls low. When the enable is low the transistor will not turn on. The circuit is bidirectional.
Hope this helps you.
When the enable is high, the transistor will turn on when SDA pulls low.
either you are wrong or I'm not getting it.
if you pull SDA low each and every device is disabled
I added a picture. The enable is done for each channel so each device will need an extra GPIO.
The operation when the slave is sending data is a little tricky - the body diode turns on at first and then when the source gets a threshold below the gate the transistor turns on.
OK, got it
Thanks jogammel and Ericm,
I am a bit disappointed that SiLabs did not provide addressing.
*** jogammel, that is a clever use of a low voltage NMOS! Do you have a fav part number?
you could, in the same way, use CD4051 to CD4053. I think I'd prefer to go with e.g. PCA9617A
I agree that toggling the enable signal on a PCA9617A offers a cleaner approach than some others that I have seen previously, where a FET was used as a low-side switch on the sensor ground. That means that the sensor goes through a start-up routine every time it needs to be read.
The PCA9617A is a good part.
The FET approach on the SDA line is probably less expensive, but you do need pull-ups on both sides so the component count goes up.
Assuming a 3.3V system, Vth up to 1.5V is OK. I would choose closer to 1V. There are many choices from several manufacturers.
I agree that switching the ground or power line is not a good idea. In my experience it is possible to power the chip through its ESD clamps and even if it did work, there is the start up issue.
Thanks for the feedback about pin addressing. I have feed this back to our marketing dept so we can consider it for the future.
"multiple temp sensors" sounds like distance which I²C is not very good at.
this makes the PCA9617A much more attractive, compared to the other solutions, since it drives the bus much harder, quoting the datasheet
, it also permits extension of the I2C-bus by providing bidirectional buffering for both the data (SDA) and the clock (SCL) lines, thus enabling two buses of 540 pF at 1 MHz or up to 4000 pF at lower speeds.