SPI


與IIC類似,SPI也是采用主從方式工作,主機通常為FPGA、MCU或DSP等可編程控制器,從機通常為EPROM、Flash,AD/DA,音視頻處理芯片等設備。

一般由SCLK、CS、MOSI,MISO四根線組成,有的地方可能是:SCK、SS、SDI、SDO等名稱,都是一樣的含義。

當有多個從機存在時,通過CS來選擇要控制的從機設備。和標准SPI類似的協議,還有TI的SSP協議,區別主要在片選信號的時序上。

 

 

4線還是3線?
當我們談到SPI時,默認情況下都是指標准的4線制Motorola SPI協議,即SCLK,MOSI,MISO和CS共4根數據線,標准4線制的好處是可以實現數據的全雙工傳輸。當只有一個主機和一個從機設備時,只需要一個CS,多個從機需要多個CS,各數據線的介紹:

SCLK,時鍾信號,時鍾頻率即SPI速率,和SPI模式有關
MOSI,主機輸出,從機輸入,主機數據
MISO,主機輸入,從機輸出
CS,從機設備選擇,低電平有效。
3線制SPI,根據不同的應用場景,主要有以下2種類型:

只有3根線:SCLK,MOSI和CS,沒有MISO數據線,適用於單工通訊,主機只發送或只接收從機的數據。
只有3根線:SCLK,SDIO和CS,這里的SDIO作為雙向端口,適用於半雙工通訊,比如ADI的多款ADC芯片都支持雙向傳輸。在使用FPGA操作雙向端口時,作為輸入時要設置為高阻態z。

4種工作模式
既然是進行數據傳輸,雙方就要明確從機在什么時刻去采樣主機發出的數據,主機在什么時刻去讀取從機發來的數據。對於STM32等MCU自帶的硬件SPI外設來說,可能沒有那么重要,只需要配置一下模式就行了,但是對於使用使用GPIO模擬或者FPGA來實現SPI的時序,這一點是非常非常重要的,這就涉及到SPI標准協議的工作模式了,通過CPOL(Clock Polarity)時鍾極性和CPHA(Clock Phase)時鍾相位的不同組合,可以分為4種模式。

一般從機器件的工作模式是固定的,主機需要采用一樣的工作模式,雙方才能正常“交流”。

這四種模式中,應用最廣泛的是模式0和3,大多數SPI器件都同時支持這兩種工作模式,其實這些都不重要,具體采用什么模式,看你的器件手冊就知道了。

根據后面的時序圖,可以得知SPI mode 0的讀寫時序,圖中可以看出SCK空閑狀態為低電平,主機數據在每個上升沿被從機采樣,數據輸出同理。

 

 對於SPI mode3,SCK空閑狀態為高電平,主機數據在每個上升沿被從機采樣,數據輸出同理。

 

 模式1和模式2同理,模式1即CPOL=0,CPHA=1,SCK空閑為0,在SCK第二個邊沿時數據有效,即SCK下降沿有效。

 

 模式2即CPOL=1,CPHA=0,SCK空閑為1,在SCK第一個邊沿時數據有效,即SCK下降沿有效。

 

 

SPI協議的基本時序

CS為低電平時,表示對應的從機設備被使能,在每個SCLK周期可以傳輸1Bit數據,采樣時刻取決於器件支持的SPI mode,根據不同SPI器件的控制方法,在進行正式的數據讀寫操作前,一般需要先寫入控制字,然后是寄存器地址和數據。下圖是FM25V05鐵電存儲器采用SPI模式0的寫時序:

 

 讀時序:

SPI和IIC的對比
SPI是全雙工,而IIC是半雙工。
IIC支持多主機多從機模式,而SPI只能有一個主機。
從GPIO占用上來看,IIC占用更少的GPIO,更節省資源。
SPI的數據位寬更靈活,可以根據需要選擇多位數據寬度。
SPI協議沒有響應機制,主機無法得知從機是否接收到所發的數據,如果不采取一些方法的話可能會導致數據丟幀。
正是因為沒有復雜的響應機制,SPI協議可以做到非常高的速率(上百兆),每一個SCK都可以進行數據的傳輸,通過引入CRC校驗等校驗方法,可以即高速傳輸數據,又能保持數據的准確度。
IIC通過器件地址來選擇從機,從機數量的增加不會導致GPIO的增加,而SPI通過CS選擇從機,每增加一個從機就要多占用一個GPIO,當然也可以通過加入譯碼器來實現多從機控制。
兩者大多都應用於板內器件短距離通訊。

來自:https://blog.csdn.net/whik1194/article/details/113919003?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164604098416781683943881%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164604098416781683943881&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-3-113919003.first_rank_v2_pc_rank_v29&utm_term=spi%E5%8D%8F%E8%AE%AE&spm=1018.2226.3001.4187


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM