題:
為什麼需要多個I²C端口?
student1
2014-12-22 07:38:32 UTC
view on stackexchange narkive permalink

理論上,I²C協議允許使用7位尋址將多達127個設備連接到主機。這是一個很大的數目,那麼為什麼任何低成本微控制器(例如此PIC24)都具有多個I²C端口?為什麼需要它?

六 答案:
Nick Alexeev
2014-12-22 08:25:33 UTC
view on stackexchange narkive permalink

傳感器集線器佈置

在這種情況下,有兩條I²C總線。我們稱它們為本地總線主總線。本地總線的目的是將一堆傳感器連接到微控制器(μC)。 μC的目的是輪詢傳感器,匯總來自傳感器的信息,並檢測某些事件。具有這種作用的μC稱為傳感器中心。傳感器集線器不負責高級功能。有一個強大的主處理器。主總線將傳感器集線器連接到主處理器。因此,傳感器集線器μC是本地I²C總線上的主機,而I²C主總線上是從機。

SPI和I²C

PIC已鏈接原始文章中的內容不在SPI和I²C之間共享。但是,還有其他PIC將相同的引腳用於硬件SPI和I²C,因為它們都是通過相同的MSSP外設實現的。如果PIC有兩個獨立的MSSP外設,則一個可用於硬件SPI,而另一個可用於硬件I²C。

tcrosley
2014-12-22 12:22:19 UTC
view on stackexchange narkive permalink

需要多個總線的一個非常普遍的原因是設備以不同的速度運行。最初,I²C的最高運行頻率為100 kHz。後來,速度提高到了最高400 kHz,然後又提高到了1 MHz或更高。

問題是,由於每個設備的地址都嵌入在I²C協議中,所以如果在同一總線上具有不同額定速度的設備(例如100 kHz和400 kHz),您必須始終以同一總線上所有設備通用的最低速度運行總線(在這種情況下為100 kHz)。

如果您以較高的速度(400 kHz)運行總線,很顯然,低速設備將無法正常工作,甚至可能將高速設備的地址解釋為自己的地址,從而導致400 kHz設備也會失敗。但是,即使您最初以100 kHz的速度運行總線,然後在尋址了較高速度的芯片後嘗試將總線加速至400 kHz,較低速度的芯片也有可能(儘管可能不太可能)解釋以下情況之一:高速數據包錯誤地作為其地址,從而使總線上的通信混亂。無論哪種情況,在與400 kHz設備互換時,100 kHz設備都可能處於未知狀態。

因此,如果設備以不同的速度運行,則效率最高。 em>和您有多個I²C端口 ,您有備用引腳可以滿足這種奢侈的需要,一個I²C用於100 kHz設備,另一個用於400 kHz設備,另一個用於可能需要1 MHz的設備。

對於SPI來說這不是問題,因為每個設備都通過單獨的芯片選擇線在硬件中啟用(尋址)。因此,時鐘速度可以與所選芯片的速度(10 MHz,20 MHz,等等)匹配,而不會影響同一總線上的其他芯片,因為它們沒有啟用。

Some Hardware Guy
2014-12-22 09:27:01 UTC
view on stackexchange narkive permalink

還可以讓您支持兩個具有相同地址的設備。是的,大多數設備都可以讓您用帶子選擇其地址的後兩位。最近,我不得不支持4個設備,每個設備僅允許您使用一個電阻設置其地址的LSB。擁有兩個端口對我來說並不意味著額外的費用。

也許我想讓一個成為一堆設備的主設備,而另一個作為從設備的端口,因此我的主設備不必等待抓取在我對溫度傳感器進行第10,000次輪詢時,總線給我一個命令。

在這個線程中似乎還有很多其他好的響應,只需加上2美分即可。

James Wagner
2014-12-22 07:48:42 UTC
view on stackexchange narkive permalink

速度。

如果您需要同時訪問兩個I2C設備,則可能會有重大衝突。或者,一個將不得不等待另一個。

Kamil
2014-12-22 07:49:21 UTC
view on stackexchange narkive permalink

第二,I²C可用於獲得更多帶寬(您可以同時接收或發送兩個字節)。

如果您有一些連續工作的ADC,則一個I²C一直很忙

切換地址也需要一些時間,因此在某些情況下-您可以將兩個端口用於兩個設備,並且避免地址更改以節省時間。

bobflux
2017-03-18 01:22:18 UTC
view on stackexchange narkive permalink

其他人提到了這樣做的許多原因,我將添加一個:

您有一堆5V I2C設備和一堆3V3 I2C設備。

例如,我有一個3.3V的微型電池,它有兩個I2C端口,一個5V耐壓,另一個僅3V3。

出於好奇,這是哪個微觀角度?
LPC4330,摘錄自手冊:“漏極開路5 V數字I / O焊盤,與I2C總線Fast Mode Plus規格兼容。該焊盤需要外部上拉電阻 提供輸出功能。當電源關閉時,連接到I2C總線的該引腳處於懸空狀態,不會干擾I2C線路。”


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