- Silicon Labs Community
- Welcome and Announcements
- Silicon Labs Knowledge Base
- 8-bit MCU
- 32-bit MCU
- Bluetooth / Wi-Fi
- Other Products Category
- Optical/RH/Temp Sensor
- Other Products
- Hardware and Software Tools
- Simplicity Studio and Software
- General Discussions and Suggestions
- Chinese Forum
- Software Libraries
- Development Kits
- Reference Designs
- Third Party Tools
- White Papers
- Official Blog of Silicon Labs
- Chinese Blog
06-06-2016 03:55 PM
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.
06-06-2016 05:08 PM
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.
06-07-2016 07:52 AM
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
06-07-2016 09:34 AM
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.
06-07-2016 01:59 PM
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?
06-07-2016 04:56 PM
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.
06-07-2016 05:31 PM
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.
06-08-2016 07:57 AM
"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.