SPI協議是由摩托羅拉公司提出的一種串行外圍設備通信接口,是一種高速全雙工的通信總線。它被廣泛地使用在ADC、LCD、存儲器等設備中,包括一些需要與MCU之間有較高通訊速率要求的場合中。
1、SPI 的硬件層
SPI是采用主從模式的一種通信方式,它支持一主一從、一主多從,但是不支持多主機模式。
常見的一主多從的連接方式如下:
SPI接口共有四根信號線,它們分別如下:
SCLK: 時鐘信號線。由主機產生并控制。
MOSI: 主機數據輸出,從機數據輸入。(主出從入)
MISO: 主機數據輸入,從機數據輸出。(主入從出)
NSS: 從機片選使能信號線。該信號由主機進行控制。在一主對多從的模式下,每一個從機都需要一個NSS,用于主機選擇和那個從機進行通信(一般為低電平有效)。當一個SPI設備需要發送廣播數據,它必須拉低NSS信號,以通知所有其它的設備它是主設備。
1.2、SPI通信常見的連接方式
(1)SPI通信配置為全雙工的連接方式:
這種連接方式允許主從機之間互相進行通信,時鐘均由主機產生。
(2)單工模式 —— 主機接收,從機發送
這種模式下由主機產生時鐘SCK,主機只能收到從機上報的數據,不能向從機下發數據。
(3)單工模式 —— 主機發送,從機接收
這種模式下由主機產生時鐘SCK,主機只能向從機下發數據,不能接收從機上報的數據。常見的應用有帶SPI接口的LCD顯示屏。
(4)雙向通信的連接方式
2、SPI的通信協議
SPI的協議定義了通信的起始信號、停止信號、數據有效性、時鐘同步等。它的通訊時序如下:
圖:SPI通信時序圖
這是一個主機的通信時序,信號線 NSS、SCK、MOSI 都是由主機控制,MISO 是由從機進行控制。其中 MOSI 和 MISO 上的數據僅在 NSS 為低時才有效,并且每個SCK 時鐘周期只交換一位數據。
2.1、起始信號
SPI通信時序圖中的①為通信的起始信號,由主機控制NSS從高電平到低電平,從而選擇要進行通信的從機,再通過主機產生時鐘信號SCK,啟動一次數據的傳輸。
2.2、停止信號
SPI通信時序圖中的⑥為通信的起始信號,由主機控制NSS從低電平到高電平,從而結束一次數據的傳輸。
2.3、數據有效性
SPI 在 SCK 時鐘的同步下進行數據的準備和采樣,如通信時序圖的②③④⑤所示。在 NSS 為低的情況時,在 SCK 的上升沿時 MISO 和 MOSI 進行數據準備,SCK 的下降沿時讀取 MISO 和 MOSI 上的數據。 在 NSS 為高時,MISO 和MOSI 上的數據無效。
2.4、時鐘的同步
SPI 的數據傳輸是需要 SCK 時鐘信號嚴格同步的,每一個 SCK 周期只傳輸一位數據,這一個周期里要完成數據的準備和采樣,且數據的輸入和輸出是同時進行的。
SPI中數據是MSB 先行或 LSB先行,在協議中是沒有硬性規定,只需通信雙方保持統一即可。
SPI 一次數據傳輸可以是 8 位或 16 位為單位,每次傳輸的單位數不受限制。
3、SPI的工作模式
SPI 一共有四種工作模式。它們的區別是:
1)總線空閑時 SCK 的電平狀態
2)數據開始采樣的時刻。
這四種模式是通過 “時鐘極性 CPOL” 和 “時鐘相位 CPHA” 的電平來實現和區分的。如下:
1)CPOL=0 時,SCK 引腳在空閑狀態保持低電平;
2)CPOL=1 時,SCK 引腳在空閑狀態保持高電平;
3)CPHA=0 時,SCK 時鐘的第一個邊沿進行采樣;
4)CPHA =1 時,SCK 時鐘的第二個邊沿進行采樣。
時鐘相位CPHA =1 ,數據在SCK 時鐘的第二個邊沿采樣的時序圖如下:
時鐘相位CPHA =0 ,數據在SCK 時鐘的第一個邊沿采樣的時序圖如下:
-
mcu
+關注
關注
146文章
17019瀏覽量
350373 -
通信接口
+關注
關注
3文章
234瀏覽量
30963 -
SPI協議
+關注
關注
0文章
18瀏覽量
8357
發布評論請先 登錄
相關推薦
評論