This is a academic question. Though it is asking for practical examples.
If had to bridge a distance of more than 5m a serial connection best with RS485 would offer high reliability
I'm aware of that I2C-buses are intended as inter-inter-circuit-bus for very short bus-wire-lengths.
5 cm to 20 cm.
In practice 50cm is mostly no problem. When reducing the bus-frequency longer distances can be achieved. The problems with longer wires are
more EMV
more wire-capacitance
I tried googling Cat-8 specifications to find a value how much wire-capacitance in pF/m is allowed in the Cat-8 specification but I did not find a value for pF/m all hits focused on the maximum transferrable bitrate (1 GBit)
So can anybody post this value wire-capcitance of a Cat-8-wire in pf/m
and
maybe practical experience with what kind of things a longer distance than 50 cm could be realised with an I2C-bus. Remember I know for real long distances different bus-technologies than I2C like RS485 are good suited.
My question is a
a.) academic question how far can you go (theoretically) when using a super-low wire-capacitance cable
b.) How far is the biggest distance between I2C-Bus-master and the I2C-device in an real application that you might have build
The answer to the ultimate question depends on too many factors. It depends on pullup strengh, the voltage of the devices on the bus, and especially on how slow you can get the SCL clock before either your master can''t generate anything slower, or your slave can't work with anything slower. I have heard of people lowering the clock speeds to insanely slow figures in order to make long wires work (think, measured in Hz, not kHz). But I also know of several devices that are insanely fussy about the actual SCL clock (in fact, a single such device prompted two different people to refactor and PR the baud rate calculations in my cores' Wire.h)! So it's very very hard to give a useful answer here.
(The last person to do that eventually wound up completely reimplementing Wire, slashing flash footprint and greatly improving various operational parameters (this is why megaTinyCore and DxCore have a better Wire library than anyone else) - it still isn't guaranteed to work on that finnicky part though (a Melexis IR thermometer): the actual I2C clock speed on modern AVRs is not determined only by registers, but also by the electrical properties of the network, which will always slow it down from what might be naively expected, due to the finite rise time of a bus with non-zero capacitance, particularly in an open drain topology.)
In the I2C Bus specification by NXP (previously Philips Semiconductors), it says using twisted pair phone cables and an I2C bus extender, you can go up to 1km at 31kHz.
Hi @DrAzzy
thank you very much for answering. Aha. I was asking for the max distance which can not be answered in a generalised way.
I am fully aware that applying the answers given below does not guarantee reliable function.
But it should be easy to answer in case you have the information as I'm asking for printed numbers in official papers.
So for estimations what might be achievable I have a much more specific question:
What values does the official I2C-specifications give how much wire-capacitance is allowed on a I2C-bus?
If it is dependant on frequency how much wire-capacitance for 1 MHz, 400 kHz, 100 kHz
What does the specification of the Cat-8-network-cable say what the maximum allowed wire-capcitance is?
I can't find the official I2C spec without a paywall (it was available for a few days and im kicking mself for not havign saved it), but if you just study the datasheets for things that implement I2C, many of them reprint the specs.... IIRC you can get basically all those specs by studying the AVR Dx-series datasheets and comparing with a few others from other companies.
But I2C spec does not say anything about speeds other than 100 kHz, 400 kHz, 1 MHz,.
If you only want to consider capacity then calculate the signal rise and fall times.
With 3 mA sink capability a 3V jump takes t=C*U/I=C*3/0.003 s. With 1 nF it's 1 µs, ignoring the current through the pullup resistors.
The rise time depends on the low pass filter of pullup resistors and capacity. A 3V jump (towards 5V) on 1 nF with 3k pullup will take about R*C=3 µs, perhaps sufficient for 100 kHz.
What are the capabilities of those devices.
Standard I2C devices are 3mA/400pf, but there are also FM+ devices which are 30mA/4000pf.
So it's not just the cable.
Leo..
thank you very much for answering. Wow lot's of detail knowledge.
especially dlloyd using the waybackmachine to dig out the original specs 2.0 from 1998
Why do you link to ChatGPT.
I see only older/regular members and no evidence of that.
Don't know much about it yet, but it seems to be a snake in the grass.
Don't be surprised if you find out that you have been teaching and talking to a machine.
Ai is going to ruin all forums.
Leo..
I don't think so.
All users that are in a hurry will ask the AI.
Users interested in high level conceptual discussion will prefer communicating with humans
Maybe communication drives back to real face to face talking with humor
But that's completely off-topic to the initial question
Pololu has the latest version of the UM10204 document of 2021:
On page 54, they (NXP) give a maximum of 10 cm length for the I2C bus without thinking. After that, you have to start thinking about crosstalk.
NXP makes the UM10204 document public sometimes and then put it behind a login-wall, and then make it public again, and then... I don't know what they are doing. You can read how I vent my personal frustration here.