Chiều dài xe buýt I2C tối đa?


38

Độ dài tối đa của cáp có thể được sử dụng để kết nối hai thiết bị I2C (I2C master-> I2C Slave) là bao nhiêu?

Vâng, tôi biết rằng I2C thực sự được thiết kế để liên lạc nội bộ. Tôi đã được giao một "mục tiêu thiết kế" là sử dụng một bus I2C chung cho nhiều nô lệ I2C để hỗ trợ một bản demo.

Đối với mục đích rõ ràng, hãy giả sử tốc độ bus I2C tiêu chuẩn là 100 kHz.


1
Độ dài tối đa tôi đến để chơi với điện dung được giới thiệu bởi chiều dài. Quá nhiều điện dung và nó có thể ảnh hưởng đến tốc độ của bạn. Vì vậy, như mọi khi, điều này phụ thuộc.
Gustavo Litovsky

@GustavoLitovsky Bạn đúng về điện dung. Nó cũng phụ thuộc vào loại cáp được sử dụng (được bảo vệ so với không được bảo vệ). Tôi quan tâm nhất đến một hướng dẫn chung.
Nate

2
@Nate Hướng dẫn: điện dung bus tối đa 400pF. (Hơi liên quan đến câu hỏi: Hồi ức về một chiếc xe buýt I2C phát triển quá mức .)
Nick Alexeev

1
I2C = Xe buýt mạch tích hợp. Nó không được thiết kế cho khoảng cách xa giữa các hộp và chắc chắn không phải ở 400kHz.
Spehro Pefhany

1
Chỉ muốn ném vào một số kinh nghiệm cá nhân ngoài tính toán. Tôi đã thực hiện một bản demo đi từ bảng dev sang bộ chuyển đổi I2C sang USB với dây không được che chắn khoảng 3ft. Trông không đẹp lắm, nhưng nó hoạt động 90%.
mcmiln

Câu trả lời:


16

Đối với chế độ nhanh và kéo điện trở, điện dung phải nhỏ hơn 200pF, theo tài liệu hướng dẫn sử dụng I2C-bus và tài liệu hướng dẫn sử dụng .

Với pullups nguồn hiện tại, bạn có thể đi đến 400pF, nhưng không phải với điện trở.

Nếu dây của bạn là 20pF / 30cm và bạn có thêm 50pF điện dung đi vào và điện dung đầu vào, bạn bị giới hạn ở 2,25m chiều dài cáp. Các giả định khác nhau sẽ dẫn đến số lượng khác nhau.


1
@KrunalDesai Nó được đề cập cụ thể trong tài liệu NXP được liên kết ở trên. Thông số kỹ thuật và hướng dẫn sử dụng xe buýt I2C
Spehro Pefhany

1
Đối với một ví dụ thực tế, Nintendo Wii của "Wiimote" sử dụng 400kHz I2C ( wiibrew.org/wiki/Wiimote/Extension_Controllers ) để giao tiếp với thiết bị ngoại vi như Nunchuk ( wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck ) trong đó, như bạn có thể thấy, có một dây cáp dài khoảng 1m. Bộ mở rộng thụ động được bán để cung cấp thêm 1m ( amazon.com/Extension-Cable-Wii-Nunchuck-Nintendo/dp/B0039OEV9K ), vì vậy chúng đang đẩy, nhưng vẫn ở trong giới hạn 2,25m đó.
Rob Starling

16

Độ dài âm thanh điên rồ như 10,25 và 100m là hoàn toàn có thể, và tôi sử dụng phương pháp này thường xuyên (với UART không phải I2C, nhưng phương thức đứng) khi tôi cần kết hợp nhanh chóng. Đó không hẳn là cách tốt nhất.

Điều quan trọng là phải biết ngưỡng điện áp đầu vào của bạn. Hãy chắc chắn rằng điện áp rơi trong dây dẫn đất thấp hơn mức này, nếu không thì một máy phát ở điện thế cao sẽ không thể kéo điện áp đủ thấp. Thiếu dung sai cho việc bù đắp mặt đất IMHO là lý do lớn nhất để sử dụng RS485 hoặc có thể thu phát (I2C qua CAN được đề cập trong một vài ghi chú ứng dụng).

Lý tưởng nhất là tất cả các thiết bị sẽ có mụn cóc trên tường và pin riêng và không có nguồn điện nào được gửi qua dây nối đất giữa các thiết bị.

Nhưng, hãy lấy CAT5 làm ví dụ. CAT5 không thể cao hơn 52pf / m hoặc không phải là CAT5.

100m cáp 52pf có điện dung 5200pf hoặc 5,2nf.

5,2n lần 20kohms (pullup) cho hằng số thời gian khoảng 104 micro giây. Điều đó giới hạn tốc độ xuống khoảng 10kHz hoặc hơn.

Sử dụng pullups 2.2kohm, bạn có thể có thể đạt tới 100kHz.

Tôi đã nghe nói rằng các thiết bị nên có một điện trở trên SDL và SCK, vì tải điện dung lớn mà chúng đang lái, khoảng 180 hoặc 200 ohms.

Nhưng thành thật mà nói, I2C hoàn toàn không phải là một chặng đường dài. Bộ thu phát CAN hoặc RS485 được sử dụng với UART bình thường là một giải pháp mạnh mẽ với khả năng bảo vệ lỗi rất tốt, khả năng chống lại lỗi, tốc độ, khoảng cách, v.v., với chi phí là một đô la một con chip, do đó, việc bù đắp không quan trọng bằng bạn tự do mang theo sức mạnh cùng với dữ liệu.

Nhược điểm duy nhất là bộ thu phát có thể đạt tới 70ma truyền và 1 hoặc 2ma chỉ nghe, do đó, I2C hoặc TTL UART trực tiếp có thể hữu ích trong các tình huống công suất cực thấp, nhưng hãy xem xét bạn thực sự dành bao nhiêu thời gian để gửi.


7

Tôi làm việc cho một công ty làm cảm biến USB. Hầu hết chúng đều dựa trên chip cảm biến I2C, các thiết bị đó có thể được chia làm hai, vì vậy bạn có thể cài đặt phần CPU ở một nơi và phần cảm biến ở nơi khác. Chúng tôi đã tiến hành khá nhiều thử nghiệm về kết nối I2C giữa CPU thiết bị và cảm biến I2C. Ở 100 kHz, với giao thức phục hồi lỗi tốt, có thể dễ dàng đạt được 25m bằng cách sử dụng các dây cơ bản. Chúng tôi thậm chí có thể đạt tới 100m một lần với cáp CAT5.


Có vẻ như bạn đang nói về chiều dài cáp USB . OP đang hỏi về cáp I2C thô . Đây là một chủ đề hoàn toàn khác nhau. Nếu tôi không chính xác, hãy chỉnh sửa câu trả lời của bạn và tôi sẽ xóa downvote của tôi.
DoxyLover

1
25m là khá nhiều ngay cả đối với một chiếc usb ...
Vladimir Cravero

3
Không, tôi thực sự đang nói về kết nối I2C giữa CPU thiết bị và chip cảm biến I2C, không phải kết nối USB giữa máy chủ và CPU. Dưới đây là một ví dụ: yoctopuce.com/EN/products/yocto-meteo/doc/ mẹo
martinm

1
Nếu bạn muốn sử dụng cặp xoắn cho I2C và sức mạnh, bạn sẽ xoắn đôi nào với nhau? (SDA, SCL), (VCC, GND) hoặc (SDA, GND), (SCL, VCC)?
Cano64

4
Lý tưởng nhất là bạn không sử dụng cặp xoắn nào cả. Cặp xoắn là hữu ích cho các tín hiệu cân bằng. Nếu bạn không có cáp nào khác, hãy xoắn tín hiệu với mặt đất. Nếu bạn thực sự chỉ có bốn dây, hãy suy nghĩ về việc đầu cuối từ xa tiêu thụ bao nhiêu năng lượng - bạn có thể kết thúc với độ bù mặt đất cao hơn mức cho phép - trước khi cam kết chỉ sử dụng một dây cho GND. Tôi thường sử dụng cáp Cat5 cũ (không cao hơn! Khiên đôi tăng thêm dung lượng bạn không cần) với một cặp nối đất, một cặp + 5V và cặp SDA + GND và SCL + GND.
Matthias Urlichs

4

IIC là một giao thức đồng bộ, và như vậy, nó có thể được chạy chậm tùy ý để đáp ứng các yêu cầu hệ thống liên quan đến khoảng cách và tiếng ồn.

Có rất nhiều ví dụ về việc sử dụng IIC qua cáp, từ cách ACCESS.bus trở lại vào những năm 1990 cho đến cách sử dụng ngày nay để lấy thông tin EDID từ màn hình video.


Một ví dụ khác là Wii Nunchuck, được kết nối với Wii Remote thông qua I²C bằng cáp được bảo vệ 4 chân.
tcrosley

4

Một cái gì đó như P82B96 của NXP có thể được sử dụng để thay đổi các mức điện áp trên xe buýt, cho phép khoảng cách xa hơn nhiều.

Bảng dữ liệu chứa các ví dụ cho chiều dài cáp I2C là 3 m, 25m, 100m và 250m.

Có những con chip khác có chức năng tương tự.


Vấn đề với chip NXP là cuối cùng bạn cần gấp đôi số dây. Còn ý tưởng nào khác không? các IC hai chiều mà tôi tìm thấy không vượt quá + 5V.
Matthias Urlichs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.