Hi everyone, I’m looking for some technical feedback on an I2C network I’m designing.
I want to build an I2C bus using the P82B96 bus extender. The topology will feature several 'T-junction' sections. At each junction, I plan to have a smart I2C master/slave node performing various tasks.
My specific question concerns the T-splitter design. I am considering placing two P82B96 chips back-to-back (as shown in my diagram) to extend the bus in both directions while tapping off a local signal. I haven't been able to find any reference designs or diagrams where this has been done before.
My assumption is that since the Sx/Sy side acts as a standard I2C interface, this configuration should work. Is this correct? Can I safely use two P82B96 chips back-to-back to create this network?
I received commends on this Fig1 architecture and this architecture is not allowed. The data sheets show that combining Sx/Sy is not supported.
Below fig 2 my second proposal to see if this is correct. Technicaly it’s now a muti point architecture and based on what I read this is allowed Let me know in the commends what you think.
I work on a solution to develop miniature ACDC voltage current frequency sensor probes and I have that design ready. I want to connect the various probes in a I2C network using the ATmega328. Since I work with solar and backup systems, I want to use this network to monitor ACDC power solar irradiation panel and inverter temperatures but also control a DC ATS switch that I have. I'Il hope this gives you some context on what I’m working on.
Answering your question. I was thinking in no more than 10 meters, maybe 20 if possible. Space between the splitters, 2 meters. All splitters and probes have RJ45 connectors.
I have done experiments with I2c over a CAT5 and covered I believe 15meters ( it’s a while ago). All my nodes are the size of an Atmega nano so if this architecture works I have a versatile solution that I can change/adapt to what I need on a per-project basis without having to change to much software. Only the master needs to be adapted if my node count changes.
I would recommend you use something other then I2C, which was designed to communicate between chips on the same board. The MPC2515 module is very inexpensive, I have seen them in the $1.00 US range. They work very well and add a lot of robustness to your network. It will be considerable faster and should work up to over 1000 meters. Per your schematic the needed pins are open. One bus will support from 16 to 64 nodes depending on the configuration and drivers chosen. With care you can add even more.
I agree, but that requires controller modules with the Nano form factor with a can bus interface and the development environment that supports it. I'm used with ESP and Atmega and VSC. The I2C interface doesn’t require to develop separate software to access new I2C sensors and the ATmega Nano is available for a buck. But I do get your point.
Thanks Gils but my one of my focus points is miniaturization. The Nano is for me a nice size cheap and available and I have some hardware for it already designed. I personally like to use the RS485 bus which allows you to develop any protocol you like on it, But I agree CAN is also a good solution.
Only one issue you should be aware of: The Vol for Sx and Sy is 0.8V and the I2C specification is 0.4V.
Depending on the IC2 slave devices and system noise, this may or may not be a problem.
The reason I chose CAN was because it does non destructive bus arbitration and prioritizes messages. This assures the most important message gets through first. It is a multi-master multi-slave where any node can be a master or a slave and can change its mode at any time. This arbitration decreases bus traffic over other nodes that do not do have non destructive arbitration. All of this is transparent to the user. You can work it somewhat like you would with a UART. It is a Simplex bus where only one message at a time is allowed. If another node misinterprets and comes on when it is active it will arbitrate that node out which will automatically try again. This is part of why it was chosen in the automotive industry.
In a later stage, I might use an ATmega64M1 with a build in CAN controller. I agree that CAN is better than I2C but my daily activity is making money for the family by installing solar panels and backup system and I can not spend too much time on development. I am willing to pay people who can help me to develop sensor networks and display that I use for solar and backup systems. Thanks anyway for your input and help.