總線 ---- SPI總線協議

簡介

SPI是Motorola 公司推出的一種同步串行接口技術,是一種高速的,全雙工,同步的通信總線。
在芯片的管腳上佔用四根線,SPI的四根線分別爲:
SDI(MISO) :主器件數據輸入,從器件數據輸出
SDO(MOSI) :主器件數據輸出,從器件數據輸入
SCLK:時鐘信號,由主器件產生。
CS:從器件使能信號,由主器件控制選擇實能哪個器件

spi主從硬件連接圖

在這裏插入圖片描述

內部工作原理圖

SPI接口在內部硬件實際上是兩個簡單的移位寄存器,傳輸的數據爲8位,在主器件產生的從器件使能信號和移位脈衝下,按位傳輸,高位在前,低位在後。串行移位寄存器通過MOSI信號線將字節傳送給從機,從機也將自己的串行移位寄存器中的內容通過MISO信號線返回給主機。這樣,兩個移位寄存器中的內容就被交換。
外設的寫操作和讀操作是同步完成的。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸。
在這裏插入圖片描述

四種工作模式

由CPOL(時鐘極性)和CPHA(時鐘相位)決定
CPOL=0,表示當SCLK=0時處於空閒態,所以有效狀態就是SCLK處於高電平時;
CPOL=1,表示當SCLK=1時處於空閒態,所以有效狀態就是SCLK處於低電平時;
CPHA=0,表示數據採樣是在第1個邊沿,數據發送在第2個邊沿;
CPHA=1,表示數據採樣是在第2個邊沿,數據發送在第1個邊沿
在這裏插入圖片描述