我知道I2C和SPI通信的基本知識。因爲兩者都是同步協議。我想知道使SPI比I2C更快的原因。如果我沒有錯誤使用I2C,我們可以使用400kbps,而在SPI中我們也可以達到10mbps。是否因硬件改變? 這個問題在面試中被問到了我。如果我錯了,請讓我正確。什麼使SPI比I2C協議更快
8
A
回答
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
這是正確的(並且也是爲什麼它不是一種編程題)。 –
相關問題
- 1. uwsgi協議比http協議更快嗎?
- 2. inout verilog協議I2C
- 3. I2C協議如何工作
- 4. 爲什麼4B5B不像I2C,SPI那樣使用?
- 5. Raspberry Pi C++ I2C/SPI示例
- 6. 什麼比std :: pow更快?
- 7. 什麼比innerHTML更快?
- 8. 爲什麼file_get_contents()比使用fsock_open()更快?
- 9. 什麼使翻新比HttpUrlConnection + AsyncTask更快?
- 10. 什麼使Lumen比Laravel更快5
- 11. 當我應該使用I2C和什麼時候應該使用SPI?
- 12. 什麼是聯邦協議?
- 13. 什麼是xmlsocket://協議?
- 14. 什麼是USB協議棧?
- 15. 什麼是COP3協議?
- 16. 什麼是Xdata協議?
- 17. 什麼是協議棧?
- 18. 什麼是hm://協議?
- 19. 什麼是SMPP協議?
- 20. 什麼是webcal協議?
- 21. 什麼是RCE協議?
- 22. 什麼協議XDocument.Load用戶
- 23. RPC協議比較
- 24. Swift協議比較
- 25. Omnipay sagepay使用什麼協議?
- 26. 我使用什麼協議? RTSP?
- 27. 什麼是ExternalAccessory協議使用IOS
- 28. lybrate使用什麼視頻流協議?
- 29. MySQL使用什麼通信協議?
- 30. Cassandra:在SSTableLoader中使用什麼協議?
這個問題似乎是題外話,因爲它是關於硬件,而不是編程。 –
實際上,它主要是關於*協議* - 理所當然的,低層次的人與硬件人們最熟悉的,但同樣的問題在網絡堆棧轉起來,等 –
仍在,嵌入式系統的問題和硬件之間的邊界軟件將在http://electronics.stackexchange.com獲得更好的接待。純粹的軟件問題一直都在話題上,只要它們與嵌入式系統和低級編程相關。 – Lundin