對于需要經(jīng)常進(jìn)行數(shù)據(jù)流傳輸?shù)南到y(tǒng)數(shù)據(jù),SPI是首選,因?yàn)樗鼡碛休^快的時鐘速率,速率可從幾兆赫茲到幾十兆赫茲。然而,對于系統(tǒng)管理活動,如讀取溫度傳感器的讀數(shù)和查詢多個從器件的狀態(tài),或者需要多個主器件共存于同一系統(tǒng)總線上(系統(tǒng)冗余常會要求這一點(diǎn)),或者面向低功耗應(yīng)用,這時I2C 或 SMBus將是首選接口。
1、SPI
SPI 是一種四線制串行總線接口,為主/從結(jié)構(gòu),四條導(dǎo)線分別為串行時鐘(SCLK)、主出從入(MOSI)、主入從出(MISO)和從選(SS)信號。主器件為時鐘提供者,可發(fā)起讀從器件或?qū)憦钠骷僮?。這時主器件將與一個從器件進(jìn)行對話。當(dāng)總線上存在多個從器件時,要發(fā)起一次傳輸,主器件將把該從器件選擇線拉低,然后分別通過 MOSI 和 MISO 線啟動數(shù)據(jù)發(fā)送或接收。
SPI 時鐘速度很快,范圍可從幾兆赫茲到幾十兆赫茲,且沒有系統(tǒng)開銷。SPI 在系統(tǒng)管理方面的缺點(diǎn)是缺乏流控機(jī)制,無論主器件還是從器件均不對消息進(jìn)行確認(rèn),主器件無法知道從器件是否繁忙。因此,必須設(shè)計(jì)聰明的軟件機(jī)制來處理確認(rèn)問題。同時,SPI 也沒有多主器件協(xié)議,必須采用很復(fù)雜的軟件和外部邏輯來實(shí)現(xiàn)多主器件架構(gòu)。每個從器件需要一個單獨(dú)的從選擇信號??傂盘枖?shù)最終為 n+3 個,其中 n 是總線上從器件的數(shù)量。因此,導(dǎo)線的數(shù)量將隨增加的從器件的數(shù)量按比例增長。同樣,在 SPI 總線上添加新的從器件也不方便。對于額外添加的每個從器件,都需要一條新的從器件選擇線或解碼邏輯。圖 2 顯示了典型的 SPI 讀/寫周期。在地址或命令字節(jié)后面跟有一個讀/寫位。數(shù)據(jù)通過 MOSI 信號寫入從器件,通過 MISO 信號自從器件中讀出。圖 3顯示了 I2C總線/SMBus以及SPI的系統(tǒng)框圖。