SPI(Serial Peripheral Interface)串行外設接口,是一種高速的,全雙工,同步的通訊總線。採用主從模式(Master Slave)架構,支持多個slave,通常僅支持單Master。架構
SPI接口共有4根信號線,分別是:設備選擇線(SS)、時鐘線(SCK)、串行輸出數據線(MOSI)、串行輸入數據線(MISO)spa
主節點經過MOSI 線輸出數據,從節點在SIMO 處從主節點讀取數據。同時,也在經過SOMI 輸出MSB(最高位),主節點會在MISO處讀取從節點的數據,整個過程將一直持續,直至交換完全部數據。設計
CPOL極性:決定時鐘空閒時爲高電平仍是低電平接口
CPOL=0:CLK空閒時是低電平,CLK有效時是高電平ip
CPOL=1: CLK空閒時是高電平,CLK有效時是低電平ci
CPHA相位:決定什麼時候進行數據採樣(讀取)同步
CPHA=0:第一個邊沿採樣工作流
CPHA=0:第一個邊沿採樣flash
根據CPOL和CPHA的不一樣組合,SPI被分爲4種模式系統架構
類型 |
CPOL |
CPHA |
SPI0 |
0 |
0 |
SPI1 |
0 |
1 |
SPI2 |
1 |
0 |
SPI3 |
1 |
1 |
SPI有兩個通道,分別爲TX通道和RX通道,CPU要寫數據到FIFO中,先寫數據到SPI_TX_DATA寄存器中,這樣此寄存器中的內容就會自動移動到發送FIFO中;一樣的道理,若是CPU要從接收FIFO中讀取數據,就訪問寄存器SPI_RX_DATA,緊接着,接收FIFO的數據就會自動移動到SPI_RX_DATA寄存器中。
SPI裸機驅動
I2C子系統架構:
l SPI核心
SPI控制器驅動和設備驅動之間的紐帶,它提供了SPI控制器驅動和設備驅動的註冊、註銷方法等。
l SPI控制器驅動
對SPI控制器的驅動實現。
l SPI設備驅動
對SPI從設備的驅動實現,如spi flash