2014-02-18 92 views
8

我知道I2C和SPI通信的基本知識。因爲兩者都是同步協議。我想知道使SPI比I2C更快的原因。如果我沒有錯誤使用I2C,我們可以使用400kbps,而在SPI中我們也可以達到10mbps。是否因硬件改變? 這個問題在面試中被問到了我。如果我錯了,請讓我正確。什麼使SPI比I2C協議更快

+5

這個問題似乎是題外話,因爲它是關於硬件,而不是編程。 –

+1

實際上,它主要是關於*協議* - 理所當然的,低層次的人與硬件人們最熟悉的,但同樣的問題在網絡堆棧轉起來,等 –

+1

仍在,嵌入式系統的問題和硬件之間的邊界軟件將在http://electronics.stackexchange.com獲得更好的接待。純粹的軟件問題一直都在話題上,只要它們與嵌入式系統和低級編程相關。 – Lundin

回答

9

I2C是相當複雜,在總線上支持多個主。這會在總線協議中產生大量的開銷,每個字節都會產生一個ACK,並有意的延遲仲裁對總線的訪問。另外,原始規格中的最大總線速率爲100 kHz,400 kHz現在很常見,額外的10 kHz低速和3.4 Mhz高速模式,2012規範定義了5 Mhz超高速模式。

SPI是更簡單,一個單一的主控制器沒有總線協議超出片選和沒有設置最大總線速率。如果距離很短,那麼你可以像你一樣快。相距不到一英寸的芯片之間的互連速度相當快。

0

速度取決於你使用的是什麼類型的開發板和您的硬件邏輯是如何實現的。 使用其中一個有一定的優點和缺點。 選擇使用哪種總線類型取決於您希望使用它們連接的不同外設之間需要的通信類型。 http://quick2wire.com/articles/i2c-and-spi/

8

有一個重要的硬件差從而限制上I2C速度。

SPI:所有行由發射機高和低驅動。這最小化了導線改變狀態所需的時間。

I2C:所有線路都開路集電極,這意味着發送器僅驅動線低。當變送器釋放線路時,連接到Vcc(電源電壓)的電阻將光線拉高。但是,由於導線和部件的電容,導線變爲相對較慢的高電壓。因此,必須降低時鐘速度,以便讓線路「漂移」時間更長。

+0

這是正確的(並且也是爲什麼它不是一種編程題)。 –