i2c主設備可以驅動的i2c從設備數是否最大?什麼是物理限制因素?
i2c主設備可以驅動的i2c從設備數是否最大?什麼是物理限制因素?
軟件限制因素是用於從站的地址大小:7位或10位,分別支持127個和1023個設備。從物理上講,有兩個限制。首先,總線的物理尺寸,因為總線僅用於短期運行(IC間部分)。如果總線太大,則需要處理電容性負載和傳播延遲效應。其次,某些設備不能支持全部I2C地址。例如,MPU6050陀螺儀僅支持兩個地址,某些設備保留用於特殊目的的特定地址。
尋址限制了設備的數量-有些設備可以使用10位尋址(很少使用),這將地址數量限制為1024。有少數“保留”地址。
I2C(而不是“兩線製總線”或其他任何想調用類似總線的東西)應遵循NXP(飛利浦)標準,即 UM10204 I2C-總線規範和用戶手冊。那應該是您的主要參考文件,而不是其他地方存在的各種解釋和子集。
最大數量的設備將受到最弱輸出(反過來決定最小上拉電阻)的驅動能力,佈線和輸入電容以及工作模式/頻率的影響。如果必須超過最大電容,請參閱第7.2節在最大允許總線電容以上操作:
i2c總線主要受總線電容(以及速度)和可訪問設備地址的限制。物理板空間。
但是,當考慮總線緩衝區,擴展器,中繼器,集線器,多路復用器,開關(或可以在多個總線之間切換的設備的任何其他名稱)時,並沒有真正的上限)。這些可能會增加一些i2c開銷,因為可以通過同一i2c總線進行訪問。例如,PCA9548A是8位總線開關。
從理論上講,該單芯片可以使i2c從站的數量(127 * 8)增加兩倍。而且PCA9548A可以在一條總線上最多配置8個地址,因此8 * 8 * 127個設備。 (可能關閉)。
坦率地說,如果調整電容,則沒有理論限制。
I2C指定2個地址長度,分別為 7位和10位,這在理論上最多提供128個和1024個不同的地址。
但是,有一些保留地址,例如0x00(常規調用)。這進一步限制了地址空間。
如果要構建直接控制I2C設備的系統,您可以 使用保留的地址供自己使用,但是系統將不再符合I2C標準。
除了尋址之外,還存在物理總線限制。總線上的每個設備都需要能夠在一定時間範圍內將總線拉低(取決於總線速度)。如果總線上有很多電容,設備可能無法將SDA拉低到足夠低的速度,並且上拉可能無法使SDA拉回足夠快的時間。
現在,可以通過以下方法解決硬件問題:驅動程序硬件的一點點。我現在正在開發一個項目,該項目使用I2C與數十米的設備進行通信。主總線使用24v,每塊板上都有一個驅動器,可將其降壓至3.3v。
在堅果殼中,可以克服I2C的物理限制。可以克服尋址 的問題,但前提是您可以直接控制設備。
主機可以驅動的從機數量的主要限制通常是由電氣因素引起的,例如總線電容,洩漏,驅動強度等。如果可以構造具有零寄生電容和零洩漏的從機,並且可以將它們與零電容的電路板走線連接起來,那麼總線電容就不會成為一個因素,但是在實踐中,這兩種假設都不會成立。
在設備上尋址彼此“了解”的設備另一方面,這並不是真正的問題。設計一種外圍設備將是微不足道的,該外圍設備將允許使用一個讀和一個寫地址連接數十億個芯片。只需指定每個設備必須具有唯一的四字節ID,並且始終需要偵聽寫入地址,但必須退出前四個傳輸的數據字節與其ID不匹配的每個事務。進一步指定設備只有在聽到的最後一個寫事務與它們的地址匹配時才可以對讀地址做出響應。
如果要增加使主機確定所有連接的從機ID的能力,則可以為此保留一些特殊的ID範圍。例如,可以說如果第一個ID字節是FF,那麼接下來的四個字節將是一個掩碼,後面的四個字節將是一個ID;如果設備指定的掩碼部分與命令中指定的部分匹配,則設備應保持連接狀態(並確認最後一個ID字節)。這將允許主機使用64個事務標識至少一個設備,並使用每個62個或更少的事務標識其他設備。也許不是最快的設備識別方法,但考慮到數十億個設備ID的搜索空間,效果還不錯。
簡短答案:這取決於
如果您擁有(通用)具有7位地址的設備(最多104個設備)(128個地址-保留地址(保留0x00-0x07和0xF0-0xFF)))(一定局限性)如果您有(較少見的)設備支持10位尋址,最多可支持1024個設備(您可以將7bit和10bit設備混合使用,最多可以達到1136個設備)
現在由於局限性:大多數簡單設備只能配置為兩個到8個不同的地址。您可以通過自定義訂購具有不同基址的設備來克服這一問題(但這通常意味著您訂購的設備數量最少)也存在硬件限制(主要是總線電容),但這可以通過特殊的i2c驅動程序來解決。
如果您想在更遠的距離上連接許多設備,我建議還是使用現場總線! I2C用於在設備(例如電視機)內部進行通信。我自己使用帶有RaspberyPi的I2C,並使用了長達50cm的外部電纜(即使使用T型節,也不應在總線系統中使用)。效果出奇的好。
連接到總線的設備數量僅受總允許總線電容400 pF的限制。由於大多數具有I²C接口的IC均使用低功耗,高阻抗CMOS技術,因此在達到最大電容之前,可以將許多IC連接到I²C總線上。
通過添加多路復用器芯片(例如TCA9544A)或緩衝器(例如PCA9515B),可以克服所有限制-總線電容和尋址。
您可以將3個具有相同地址的設備放在一個多路復用器後面,並僅選擇其中一個,與之通信,然後再選擇另一個。當然,軟件會變得更加複雜。
如果佈線較長,可以在中間放置一個緩衝器,以克服電容限制。