SPI簡介
SPI 全稱是 Serial Perripheral Interface,也就是串行外圍設備接口。 SPI 是 Motorola 公司與1980s推出的一種同步串行接口技術,是一種高速、全雙工的同步通信總線。 SPI 時鍾頻率相比 I2C 要高很多,最高可以工作在上百 MHz。 SPI 以主從方式工作,通常是有一個主設備和一個或多個從設備,一般 SPI 需要4根線,但是也可以使用3根線(單向傳輸)。
SPI接口
SPI總線有4個邏輯信號:
- SCLK: Serial Clock (output from master)
- MOSI: Master Out Slave In (data output from master)
- MISO: Master In Slave Out (data output from slave)
- CS /SS: Chip/Slave Select (often
active low
, output from master to indicate that data is being sent)
有一些非標准的SPI pin名字
Serial Clock:
- SCK .
Master Output → Slave Input (MOSI):
- SIMO, MTSR - correspond to MOSI on both master and slave devices, connects to each other
- SDI, DI, DIN, SI - on slave devices; connects to MOSI on master, or to below connections
- SDO, DO, DOUT, SO - on master devices; connects to MOSI on slave, or to above connections
Master Input ← Slave Output (MISO):
- SOMI, MRST - correspond to MISO on both master and slave devices, connects to each other
- SDO, DO, DOUT, SO - on slave devices; connects to MISO on master, or to below connections
- SDI, DI, DIN, SI - on master devices; connects to MISO on slave, or to above connections
Slave Select:
- SS, SS, SSEL, nSS, /SS, SS# (slave select)
- CS, CS (chip select)
- CSN (chip select/enable)
- CE (chip enable)
操作
SPI的連接方式,只有一個master,有一個或多個slave。當有多個slave時,需要有多個獨立的SS信號從master連接到slave。SS信號通常是低有效,但也有的實現需要有一個下降沿作為觸發條件。
數據傳輸
開始通信前,master配置clock,使用從設備支持的頻率,通常高達幾MHz,然后master選擇SS信號。在SPI始終周期內,可以全雙工數據傳輸。
主從設備通常有固定位寬的移位寄存器,例如8位。數據通常先從MSB的位移出。在時鍾邊緣,主和從都移出一個比特,並在傳輸線上輸出到對端。如果需要交換更多的數據,則重新加載移位寄存器並重復這個過程。
四種工作模式
SPI 有四種工作模式,通過時鍾極性(CPOL)和相位(CPHA)的搭配來得到四種工作模式:
①、 CPOL=0,串行時鍾空閑狀態為低電平,上升沿有效,
②、 CPOL=1,串行時鍾空閑狀態為高電平,下降沿有效,此時可以通過配置時鍾相位(CPHA)來選擇具體的傳輸協議。
③、 CPHA=0,串行時鍾的第一個跳變沿(上升沿或下降沿)采集數據。
④、 CPHA=1,串行時鍾的第二個跳變沿(上升沿或下降沿)采集數據。

Mode numbers

QSPI
Queued SPI相對於SPI來說增加了兩根I/O線(SIO2、SIO3),提供了每次傳輸的bit數。QSPI可以的工作模式Single-Bit SPI、Dual SPI、Quad SPI。

Quad SPI mode uses four bidirectional QIO lines for communicating with the serial Flashes or external memories.