I diversi risultati sono perché il circuito del driver è diverso per ogni tecnologia.
I2C a 100 kHz utilizza in genere un resistore pullup per mettere il segnale a un livello elevato e driver a drain aperto per portare il segnale a un livello basso.
Le resistenze pullup sono in genere diversi chilo-ohm. Più lungo è il cavo, maggiore sarà la capacità che avrà. Il tempo impiegato dalla linea per passare da 0 a 1 sarà proporzionale alla capacità totale sulla linea e al valore della resistenza di pullup. Da qualche parte nell'intervallo di circa T = 2 * R * C sarebbe giusto.
Ad esempio, se si disponesse di un cavo da 10 piedi con 20pF per piede di capacità e si utilizzasse un resistore pullup da 10K, sarebbe necessario T = 2 * 20pF / ft * 10 ft * 10K = 3,6us per passare da basso ad alto.
In questo caso, ovviamente, non potresti avere nessun bit dopo uno zero che fosse largo meno di 3,6us, quindi la tua velocità di trasmissione sarebbe limitata a 277kHz.
In un vero sistema I2C, la specifica I2C impone ulteriormente i tempi di configurazione e di attesa relativi alle transizioni di dati e clock. Quei tempi sono centinaia di nanosecondi o microsecondi. Il tempismo è stato reso molto lento di proposito in modo che i dispositivi potessero essere implementati a buon mercato (centesimi) e consumare pochissima energia (milliwatt).
D'altra parte, Ethernet può funzionare più velocemente nonostante la capacità del cavo perché non utilizza una resistenza di pullup. Guida attivamente verso l'alto o il basso nel cavo. Il driver ha una bassa impedenza e può caricare qualsiasi capacità di linea molto rapidamente. Certo che tutto ha un prezzo. La rete Ethernet consuma in genere centinaia di mW di energia e costa almeno qualche dollaro per porta da implementare.
Una configurazione simile a I2C potrebbe funzionare più velocemente, sicuramente, basta cambiare il pullup da 10K a 100 ohm e ora il tuo tempo di salita in 10 piedi di cavo scende da 3,6 a 36 ns. Probabilmente potresti quindi correre a circa 10 MHz senza troppi problemi (a parte il fatto che i normali chip I2C non possono parlare così velocemente).