linux SPI驅動——spi協議(一)
一:SPI簡介以及應用
SPI, Serial Perripheral Interface, 序列外圍裝置介面, 是 Motorola 公司推出的一種同步序列介面技術. SPI 匯流排在物理上是通過接在外圍裝置微控制器(PICmicro) 上面的微處理控制單元 (MCU) 上叫作同步串列埠(Synchronous Serial Port) 的模組(Module)來實現的, 它允許 MCU 以全雙工的同步序列方式, 與各種外圍裝置進行高速資料通訊.
SPI 主要應用在 EEPROM, Flash, 實時時鐘(RTC), 數模轉換器(ADC), 數字訊號處理器(DSP) ,一些sensor,以及數字訊號解碼器之間. 它在晶片中只佔用四根管腳 (Pin) 用來控制以及資料傳輸, 節約了晶片的 pin 數目, 同時為 PCB 在佈局上節省了空間. 正是出於這種簡單易用的特性, 現在越來越多的晶片上都集成了 SPI技術.
二:SPI協議原理
1).SPI 裝置在進行通訊的過程中, Master 裝置和 Slave 裝置之間一般有四根線通過 SDO 和 SDI 管腳,進行資料的互動, SCK 傳輸時鐘訊號,CS片選選中待控制的晶片。
SCK/SCL, Serial Clock, 主要的作用是 Master 裝置往 Slave 裝置傳輸時鐘訊號, 控制資料交換的時機以及速率;
SS/CS, Slave Select/Chip Select, 用於 Master 裝置片選 Slave 裝置, 使被選中的 Slave 裝置能夠被 Master 裝置所訪問,一般低電平表示選中
SDO/MOSI, Serial Data Output/Master Out Slave In, 在 Master 上面也被稱為 Tx-Channel, 作為資料的出口, 主要用於 SPI 裝置傳送資料;
SDI/MISO, Serial Data Input/Master In Slave Out, 在 Master 上面也被稱為 Rx-Channel, 作為資料的入口, 主要用於SPI 裝置接收資料;
2).SPI四種模式
SPI的相位(CPHA)和極性(CPOL)分別可以為0或1,對應的4種組合構成了SPI的4種模式(mode)
Mode 0 CPOL=0, CPHA=0
Mode 1 CPOL=0, CPHA=1
Mode 2 CPOL=1, CPHA=0
Mode 3 CPOL=1, CPHA=1
時鐘極性CPOL: 即SPI空閒時,時鐘訊號SCLK的電平(1:空閒時高電平; 0:空閒時低電平)
時鐘相位CPHA: 即SPI在SCLK第幾個邊沿開始取樣(0:第一個邊沿開始; 1:第二個邊沿開始)
例子:
SCLK 上升沿資料鎖存。
SCLK 下降沿資料變化。
這種情況可以工作在0,3兩種模式