Die unterschiedlichen Ergebnisse sind darauf zurückzuführen, dass die Treiberschaltung für jede Technologie unterschiedlich ist.
100-kHz-I2C verwendet normalerweise einen Pullup-Widerstand, um das Signal auf einen hohen Pegel zu bringen, und Open-Drain-Treiber, um das Signal auf einen niedrigen Pegel zu bringen.
Die Pullup-Widerstände betragen typischerweise mehrere Kilo-Ohm. Je länger ein Kabel wird, desto mehr Kapazität hat es. Die Zeit, die die Leitung für den Übergang von 0 nach 1 benötigt, ist proportional zur Gesamtkapazität der Leitung und zum Pullup-Widerstandswert. Irgendwo im Bereich von ungefähr T = 2 * R * C wäre ungefähr richtig.
Wenn Sie beispielsweise ein 10-Fuß-Kabel mit einer Kapazität von 20 pF pro Fuß und einen 10K-Pullup-Widerstand verwenden würden, würde T = 2 * 20pF / ft * 10 ft * 10K = 3,6 us benötigen, um von niedrig nach hoch zu wechseln.
In diesem Fall könnten Sie offensichtlich keine Ein-Bits nach einem Null-Bit haben, das weniger als 3,6 us breit ist, sodass Ihre Übertragungsrate auf 277 kHz begrenzt wäre.
In einem realen I2C-System schreibt die I2C-Spezifikation ferner die Einrichtung und Haltezeiten für Daten- und Taktübergänge vor. Diese Zeiten betragen entweder Hunderte von Nanosekunden oder Mikrosekunden. Das Timing wurde absichtlich sehr langsam gemacht, damit die Geräte kostengünstig implementiert werden können (Pennies) und sehr wenig Strom verbrauchen (Milliwatt).
Ethernet hingegen kann trotz Kabelkapazität schneller laufen, da kein Pullup-Widerstand verwendet wird. Es treibt aktiv entweder hoch oder niedrig in das Kabel. Der Treiber hat eine niedrige Impedanz und kann jede Leitungskapazität sehr schnell aufladen. Das alles hat natürlich einen Preis. Ethernet verbraucht normalerweise Hunderte von mW Strom und kostet mindestens ein paar Dollar pro Port für die Implementierung.
Könnte ein I2C-ähnliches Setup schneller laufen, ändern Sie einfach den 10K-Pullup auf 100 Ohm, und jetzt sinkt Ihre Anstiegszeit auf 10 Fuß Kabel von 3,6 us auf 36 ns. Sie könnten dann wahrscheinlich ohne zu viele Probleme mit etwa 10 MHz laufen (abgesehen von der Tatsache, dass normale I2C-Chips nicht so schnell sprechen können).