1前言
SPI(Serial Peripheral Interface)是串行外設接口的縮寫,SPI是一種高速、主從模式、全雙工、同步的串行通信總線,由摩托羅拉公司(Motorola)于 20 世紀 80 年代提出,主要用于短距離內(nèi)的芯片間通信,廣泛應用于傳感器、存儲器、顯示屏、ADC/DAC 等外設與微控制器(MCU)的連接。
2SPI協(xié)議的基本特點
串行通信:一次發(fā)送1bit數(shù)據(jù)。
同步通信:通過時鐘信號(SCLK)同步數(shù)據(jù)傳輸,發(fā)送方和接收方基于同一時鐘工作。
全雙工通信:數(shù)據(jù)可以同時雙向傳輸(主設備發(fā)送的同時接收,從設備接收的同時發(fā)送)。
單主多從架構:通常由一個主設備(如 MCU)控制多個從設備(如傳感器),從設備不能主動發(fā)起通信。
無地址機制:通過片選信號(CS/NSS)選擇目標從設備,而非通過地址識別。
靈活的數(shù)據(jù)長度:數(shù)據(jù)傳輸位數(shù)可自定義(常見 8 位,也支持 16 位、32 位等)。
高速傳輸:速率通??蛇_幾 Mbps 到幾十 Mbps,具體取決于器件支持的最大時鐘頻率。
3SPI的信號線組成
SPI從器件一般需要4根線(也有3根線的,單工,只有接收或者只有發(fā)送),分別是MISO(主設備輸入從設備輸出)、MOSI(主設備輸出從設備輸入)、SCLK(時鐘)、CS(片選)。

4SPI尋址方式
當主設備要和某個從設備進行通信時,主設備需要先向?qū)獜脑O備的片選線上發(fā)送使能信號(高電平或者低電平,根據(jù)從機而定)表示選中該從設備。

5SPI的通信過程
SPI總線在進行數(shù)據(jù)傳送時,先傳送高位,后傳送低位;數(shù)據(jù)線為高電平表示邏輯"1",低電平表示邏輯"0";一個字節(jié)傳送完成后無需應答即可開始下一個字節(jié)的傳送;SPI總線采用同步方式工作,時鐘線在上升沿或下降沿時發(fā)送器向數(shù)據(jù)線上發(fā)送數(shù)據(jù),在緊接著的下降沿或者上升沿時接收器從數(shù)據(jù)線上讀取數(shù)據(jù),完成一位數(shù)據(jù)傳送,八個時鐘周期即可完成一個字節(jié)數(shù)據(jù)的傳送。

如果參考了上面圖片還不能明白SPI傳輸過程,可以繼續(xù)參考如下動圖:


6SPI的極性和相位
SPI總線有四種不同的工作模式,取決于時鐘的極性(CPOL,Clock Polarity)和相位(CPHA,Clock Phase)這兩個因素。
CPOL表示SCLK空閑時的狀態(tài):
CPOL=0,空閑時SCLK為低電平;
CPOL=1,空閑時SCLK為高電平;
CPHA表示采樣時刻:
CPHA=0,每個周期的第一個時鐘沿采樣;
CPHA=1,每個周期的第二個時鐘沿采樣;
1 CPOL=0, CPHA=0
空閑時SCLK為低電平;每個周期的第一個時鐘沿采樣,也就是上升沿。

注:*MSB表示前一幀的MSB。
2 CPOL=0, CPHA=1
空閑時SCLK為低電平;每個周期的第二個時鐘沿采樣。

注:LSB*表示下一幀的LSB。
3.3 CPOL=1, CPHA=0
空閑時SCLK為高電平;每個周期的第一個時鐘沿采樣。

注:*MSB表示前一幀的MSB。
4 CPOL=1, CPHA=1
空閑時SCLK為高電平;每個周期的第二個時鐘沿采樣。

注:LSB*表示下一幀的LSB。
需要說明的是,對于一個特定的從設備來說,一般在出廠時就會將其設計為某種特定的工作模式;我們在使用該設備時就必須保證主設備的工作模式和該從設備保持一致,否則是無法進行通信的;所以一般我們需要對主設備的CPOL和CPHA進行配置。
7I2C和SPI的異同
相同點:
均采用串行、同步的方式
均采用TTL電平,傳輸距離和應用場景類似
均采用主從方式工作
不同點:
I2C為半雙工,SPI為全雙工
I2C有應答機制,SPI無應答機制
I2C通過向總線廣播從機地址來尋址,SPI通過向?qū)獜臋C發(fā)送使能信號來尋址
I2C的時鐘極性和時鐘相位固定,SPI的時鐘極性和時鐘相位可調(diào)
I2C速度慢,引腳少,SPI速度快,引腳多
-
FPGA
+關注
關注
1652文章
22238瀏覽量
628718 -
mcu
+關注
關注
147文章
18495瀏覽量
382378 -
數(shù)字電壓表
+關注
關注
4文章
197瀏覽量
33981 -
SPI協(xié)議
+關注
關注
0文章
22瀏覽量
8769
原文標題:04-基于FPGA和LTC2308的數(shù)字電壓表設計-SPI協(xié)議詳解
文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
簡易數(shù)字電壓表的設計
數(shù)字電壓表的VHDL設計與實現(xiàn)
數(shù)字電壓表的設計
電壓表protues仿真 基于51數(shù)字電壓表仿真設計 電壓表程序
數(shù)字電壓表的設計方案匯總(六款數(shù)字電壓表的設計原理圖詳解)

數(shù)字電壓表設計教程之SPI協(xié)議詳解
評論