Les différents résultats sont dus au fait que le circuit pilote est différent pour chaque technologie.
100kHz I2C utilise généralement une résistance de pullup pour mettre le signal à un niveau élevé et des pilotes à drain ouvert pour mettre le signal à un niveau bas.
Les résistances de rappel sont généralement de plusieurs kilo-ohms. Plus un câble est long, plus il aura de capacité. Le temps nécessaire à la ligne pour passer de 0 à 1 sera proportionnel à la capacité totale sur la ligne et à la valeur de la résistance de rappel. Quelque part dans la gamme d'environ T = 2 * R * C serait à peu près juste.
Par exemple, si vous aviez un câble de 10 pieds qui avait 20pF par pied de capacité et que vous utilisiez une résistance de rappel de 10K, alors il faudrait T = 2 * 20pF / ft * 10 ft * 10K = 3,6us pour passer de bas à haut.
Dans ce cas, vous ne pouviez évidemment pas avoir un seul bit après un bit zéro de moins de 3,6us de large, donc votre taux de transmission serait limité à 277 kHz.
Dans un vrai système I2C, la spécification I2C impose en outre la configuration et le maintien des temps autour des transitions de données et d'horloge. Ces temps sont soit des centaines de nanosecondes, soit des microsecondes. Le timing a été rendu très lent exprès afin que les appareils puissent être mis en œuvre à moindre coût (quelques centimes) et consomment très peu d'énergie (milliwatts).
Ethernet, d'autre part, peut fonctionner plus rapidement malgré la capacité du câble car il n'utilise pas de résistance de rappel. Il entraîne activement haut ou bas dans le câble. Le pilote est de faible impédance et il peut charger très rapidement toute capacité de ligne. Bien sûr, tout cela a un prix. Ethernet consomme généralement des centaines de mW d'énergie et coûte au moins quelques dollars par port à mettre en œuvre.
Une configuration similaire à I2C pourrait-elle fonctionner plus rapidement, bien sûr, il suffit de changer le pullup 10K à 100 ohms et maintenant votre temps de montée en 10 pieds de câble passe de 3,6us à 36ns. Vous pourriez alors probablement fonctionner à environ 10 MHz sans trop de problèmes (à part le fait que les puces I2C régulières ne peuvent pas parler aussi vite).