題:
I2C總線最大長度?
Nate
2014-04-12 01:31:33 UTC
view on stackexchange narkive permalink

可用於連接兩個I2C設備(I2C主設備-> I2C從設備)的電纜的最大長度是多少?

是的,我知道I2C確實是為板內通信設計的。我的任務是“設計目標”,即為多個I2C從設備使用通用I2C總線來支持演示。

為清楚起見,我們假設標準I2C總線速率為100 kHz。

>
最大長度是我要玩的長度所引入的電容。電容太大,可能會影響您的速度。因此,這總是取決於。
@GustavoLitovsky您對電容是正確的。它還取決於所用電纜的類型(屏蔽還是非屏蔽)。我對一般準則最感興趣。
@Nate準則:最大淨總線電容為400pF。 (與以下問題有關:[I2C總線過長的回憶錄](http://reconvolution.blogspot.com/2014/11/memoirs-of-overgrown-i2c-bus.html)。)
I2C =集成電路間總線。它不是為盒子之間的長距離而設計的,當然也不是為400kHz而設計的。
除了計算之外,只想添加一些個人經驗。我已經完成了一個演示,該演示從開發板到I2C到USB轉換器,其非屏蔽線約3英尺。看起來不漂亮,但是90%的時間都有效。
有時,在超低功耗電路中,由於電流消耗,長距離收發器不可行,我在距離大於30m的地方使用了I2C。這是通過使用板速為1KHz的Cat5E電纜實現的。
五 答案:
Spehro Pefhany
2014-04-12 02:15:38 UTC
view on stackexchange narkive permalink

根據此 NXP文檔 I2C總線規範和用戶手冊,對於快速模式和電阻上拉,電容應小於200pF。

使用電流源上拉電阻可以達到400pF,但不能使用電阻。

如果電線為20pF / 30cm,並且還有50pF的雜散和輸入電容,則電纜長度限制為2.25m。不同的假設將得出不同的數字。

@KrunalDesai在上面鏈接的NXP文檔中特別提到。** I2C總線規格和用戶手冊**
舉一個真實的例子,任天堂Wii的“ Wiimote”使用400kHz I2C(http://wiibrew.org/wiki/Wiimote/Extension_Controllers)與Nunchuk等外圍設備進行通信(http://wiibrew.org/wiki/Wiimote/ Extension_Controllers / Nunchuck),如您所見,它的電纜長約1m。被動擴展器的銷售價格為100萬美元(https://www.amazon.com/Extension-Cable-Wii-Nunchuck-Nintendo/dp/B0039OEV9K/),因此它們正在努力,但仍處於2.25m的限制內。
EternityForest
2014-04-13 17:12:34 UTC
view on stackexchange narkive permalink

像10,25和100m這樣瘋狂的聲音長度是完全可能的,當我需要快速整理東西時,我經常使用該方法(使用UART而不是I2C,但該方法有效)。不過,這並不是最佳方法。

關鍵是要知道您的輸入電壓閾值。確保接地線中的電壓降遠低於此值,否則接地電位高的變送器將無法將電壓拉到足夠低的水平。缺少接地偏移公差IMHO是使用RS485或CAN收發器的最大原因(在一些應用筆記中提到了CAN上的I2C)。

理想情況下,所有設備都將擁有自己的壁式疣和電池,設備之間的接地線不會發送任何功率。

但是,以CAT5為例。 CAT5不能高於52pf / m,或者不是CAT5。

100pf的52pf電纜的電容為5200pf或5.2nf。

5.2n倍20kohms(上拉)得出的時間常數約為104微秒。這將速度限制在大約10kHz左右。

使用2.2kohm上拉電阻,您可能會達到100kHz。

我聽說設備在SDL和SCK上應該有一個電阻器,因為它們所驅動的電容負載很大,大約為180或200歐姆。與普通UART一起使用的CAN收發器或RS485是一個強大的解決方案,具有非常好的故障保護,ESD電阻,速度,距離等,每片成本僅為一美元左右,接地偏移幾乎沒有多大關係,

唯一的缺點是can收發器的發射能力可以達到70ma,而監聽只需1或2ma,因此I2C或直接TTL UART在極低功耗的情況下可能很有用,但是考慮一下您實際花費了多少時間進行發送。

martinm
2014-04-12 09:39:49 UTC
view on stackexchange narkive permalink

我在一家製造USB傳感器的公司工作。它們大多數基於I2C傳感器芯片,這些設備可以一分為二,因此您可以將CPU部件安裝在一個位置,將傳感器部件安裝在另一個位置。我們對設備CPU和I2C傳感器之間的I2C連接進行了很多測試。在100 kHz的頻率下,採用良好的錯誤恢復協議,可以使用基本導線輕鬆達到25m。使用CAT5電纜,我們甚至可以達到100m。

聽起來您正在談論_USB_電纜長度。 OP正在詢問有關_raw_ I2C佈線的問題。這是一個完全不同的主題。如果我輸入的內容不正確,請編輯您的答案,然後我將刪除我的下注。
即使對於一個USB,25m也是很多...
不,我實際上是在談論設備CPU和I2C傳感器芯片之間的* I2C *連接,而不是主機和CPU之間的USB連接。這是一個示例:http://www.yoctopuce.com/CN/products/yocto-meteo/doc/METEOMK1.usermanual.html#CHAP4SEC2
如果您想將雙絞線用於I2C和電源,那麼您將絞合哪一對?(SDA,SCL),(VCC,GND)或(SDA,GND),(SCL,VCC)?
理想情況下,您根本不用雙絞線。雙絞線對於平衡信號很有用。如果沒有其他電纜,請將信號線與地面絞合。如果您實際上只有四根電線,那麼在承諾僅將一根電線用於GND之前,請考慮一下遠端要消耗多少功率-您可能會獲得比允許的接地偏移高的接地功率。我通常使用舊的Cat5電纜(不更高!雙屏蔽層增加了您不需要的容量),並帶有一對接地,一對+ 5V以及SDA + GND和SCL + GND對。
您將如何在傳感器端運行恢復協議?具有I2C接口的現成傳感器IC通常沒有任何用於錯誤檢測或恢復的措施。我從未見過具有這些功能的傳感器。
Jeffrey Nichols
2014-04-13 19:36:17 UTC
view on stackexchange narkive permalink

可以使用諸如恩智浦P82B96之類的東西來改變總線上的電壓電平,從而允許更長的距離。

數據表包含了3m,25m的I2C電纜長度的示例,100m和250m。

還有其他具有類似功能的芯片。

恩智浦芯片的問題是您最終需要兩倍的電線。 還有其他想法嗎?我發現的雙向IC不會超過+ 5V。
Dave Tweed
2014-04-12 04:30:06 UTC
view on stackexchange narkive permalink

IIC是一種同步協議,因此,它可以任意緩慢運行以滿足系統在距離和噪聲方面的要求。

在電纜上使用IIC的例子很多,所有從1990年代的 ACCESS.bus到如今如何從視頻顯示中檢索 EDID信息的方式。

另一個例子是Wii Nunchuck,它使用4英尺屏蔽電纜通過I²C連接到Wii遙控器。
從理論上講,您可以為同步協議任意設置時鐘速度,但實際上,對於I2C而言,事實並非如此,因此,這一技巧是一個不好的建議。原因是,由於特定於供應商的實現細節,許多I2C芯片具有最低的SCL支持頻率。這導致無法為頻率低於70-100 Khz(實際限值在相應手冊中找到)的此類IC計時。並非每個I2C芯片都具有SCL頻率的下限,但是有足夠多的條件。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...