對于需要經常進行數據流傳輸的系統數據,SPI是首選,因為它擁有較快的時鐘速率,速率可從幾兆赫茲到幾十兆赫茲。然而,對于系統管理活動,如讀取溫度傳感器的讀數和查詢多個從器件的狀態,或者需要多個主器件共存于同一系統總線上(系統冗余常會要求這一點),或者面向低功耗應用,這時I2C 或 SMBus將是首選接口。
![](/member/kindeditor/attached/image/20150922/20150922104346_57559.jpg)
圖1:數字溫度傳感器簡化框圖
下面幾部分將介紹每種串行總線及其優缺點。1、SPI
SPI 是一種四線制串行總線接口,為主/從結構,四條導線分別為串行時鐘(SCLK)、主出從入(MOSI)、主入從出(MISO)和從選(SS)信號。主器件為時鐘提供者,可發起讀從器件或寫從器件操作。這時主器件將與一個從器件進行對話。當總線上存在多個從器件時,要發起一次傳輸,主器件將把該從器件選擇線拉低,然后分別通過 MOSI 和 MISO 線啟動數據發送或接收。
SPI 時鐘速度很快,范圍可從幾兆赫茲到幾十兆赫茲,且沒有系統開銷。SPI 在系統管理方面的缺點是缺乏流控機制,無論主器件還是從器件均不對消息進行確認,主器件無法知道從器件是否繁忙。因此,必須設計聰明的軟件機制來處理確認問題。同時,SPI 也沒有多主器件協議,必須采用很復雜的軟件和外部邏輯來實現多主器件架構。每個從器件需要一個單獨的從選擇信號。總信號數最終為 n+3 個,其中 n 是總線上從器件的數量。因此,導線的數量將隨增加的從器件的數量按比例增長。同樣,在 SPI 總線上添加新的從器件也不方便。對于額外添加的每個從器件,都需要一條新的從器件選擇線或解碼邏輯。圖 2 顯示了典型的 SPI 讀/寫周期。在地址或命令字節后面跟有一個讀/寫位。數據通過 MOSI 信號寫入從器件,通過 MISO 信號自從器件中讀出。圖 3顯示了 I2C總線/SMBus以及SPI的系統框圖。
![](/member/kindeditor/attached/image/20150922/20150922104400_84789.jpg)
圖2:SPI 典型讀/寫周期
![](/member/kindeditor/attached/image/20150922/20150922104409_97621.jpg)
圖3:(a)I2C總線/SMBus系統接口;(b)SPI 系統接口