1. 程式人生 > >I2C和SPI異同及使用注意

I2C和SPI異同及使用注意

1 iic匯流排不是全雙工,2根線SCL SDA。spi匯流排實現全雙工,4根線SCK CS MOSI MISO

2 iic匯流排是多主機匯流排,通過SDA上的地址資訊來鎖定從裝置。spi匯流排只有一個主裝置,主裝置通過CS片選來確定從裝置

3 iic匯流排傳輸速度在100kbps-4Mbps。spi匯流排傳輸速度更快,可以達到30MHZ以上。

4 iic匯流排空閒狀態下SDA SCL都是高電平。spi匯流排空閒狀態MOSI MISO也都是 SCK是有CPOL決定的

5 iic匯流排scl高電平時sda下降沿標誌傳輸開始,上升沿標誌傳輸結束。spi匯流排cs拉低標誌傳輸開始,cs拉高標誌傳輸結束

6 iic匯流排是SCL高電平取樣。spi匯流排因為是全雙工,因此是沿取樣,具體要根據CPHA決定。一般情況下master device是SCK的上升沿傳送,下降沿採集

7 iic匯流排和spi匯流排資料傳輸都是MSB在前,LSB在後(串列埠是LSB在前)

8 iic匯流排和spi匯流排時鐘都是由主裝置產生,並且只在資料傳輸時發出時鐘

9 iic匯流排讀寫時序比較固定統一,裝置驅動編寫方便。spi匯流排不同從裝置讀寫時序差別比較大,因此必須根據具體的裝置datasheet來實現讀寫,相對複雜一些。

SPI匯流排有4根線,分別是SCK,SDO,SDI,SS,可以掛多個從裝置,但是在掛多個從裝置時,主裝置端還需要做一個n選一的譯碼器,用於選擇將要訪問的從裝置,因此,主裝置上的管腳需求比較多;SPI匯流排在只有一個從裝置時,只要用到SCK,SDO,SDI這三根線,此時選擇SPI比I2C匯流排佔優。
I2C匯流排只有兩根線,SCL,SDA.,也可以掛多個從裝置,對從裝置的選擇直接依靠協議完成,無需增加物理連線。一般情況下,當一塊電路板上有多個從裝置時,往往選用I2C而非SPI,因為SPI增加了額外額硬體開銷以及電路板走線。
I2c和SPI匯流排一般是讀取一些PROM等從裝置用。
序列通訊介面SCI,主要應用在兩個智慧裝置之間的互相通訊。有別於SPI和I2C匯流排的主從模式,SCI可以是主-主模式