Các kết quả khác nhau là do mạch điều khiển là khác nhau cho mỗi công nghệ.
I2C 100kHz thường sử dụng điện trở pullup để đặt tín hiệu ở mức cao và trình điều khiển cống mở để đặt tín hiệu ở mức thấp.
Các điện trở pullup thường là vài kilo-ohms. Cáp càng dài thì càng có nhiều điện dung. Thời gian để đường dây chuyển từ 0 sang 1 sẽ tỷ lệ thuận với tổng điện dung trên đường dây và giá trị điện trở pullup. Ở đâu đó trong phạm vi khoảng T = 2 * R * C sẽ đúng.
Ví dụ: nếu bạn có cáp 10 feet có điện dung 20pF mỗi foot và bạn đã sử dụng điện trở pullup 10K thì sẽ mất T = 2 * 20pF / ft * 10 ft * 10K = 3.6us để chuyển từ thấp lên cao.
Trong trường hợp này, rõ ràng là bạn không thể có bất kỳ một bit nào sau một bit 0 nhỏ hơn 3,6us, do đó tốc độ truyền của bạn sẽ bị giới hạn ở mức 277kHz.
Trong một hệ thống I2C thực, đặc tả I2C bắt buộc thêm thiết lập và giữ thời gian xung quanh dữ liệu và chuyển đổi đồng hồ. Thời gian đó là hàng trăm nano giây hoặc micro giây. Thời gian được thực hiện rất chậm nhằm mục đích để các thiết bị có thể được thực hiện với giá rẻ (đồng xu) và tiêu thụ rất ít năng lượng (milliwatts).
Mặt khác, Ethernet có thể chạy nhanh hơn mặc dù điện dung của cáp vì nó không sử dụng điện trở pullup. Nó chủ động lái cao hoặc thấp vào cáp. Trình điều khiển có trở kháng thấp và nó có thể sạc bất kỳ điện dung dòng nào rất nhanh. Tất nhiên là tất cả đều có giá. Ethernet thường tiêu thụ hàng trăm mW điện năng và chi phí ít nhất vài đô la cho mỗi cổng để thực hiện.
Có thể một thiết lập tương tự I2C chạy nhanh hơn, chắc chắn, chỉ cần thay đổi pullup 10K thành 100 ohms và bây giờ thời gian tăng của bạn thành 10ft cáp giảm từ 3,6us xuống 36ns. Sau đó, bạn có thể có thể chạy ở mức khoảng 10 MHz mà không gặp quá nhiều vấn đề (ngoài thực tế là các chip I2C thông thường không thể nói nhanh như vậy).