S3c2440裸機-spi程式設計-1.spi協議
1.spi概述
SPI是序列外設介面(Serial Peripheral Interface)的縮寫。是 Motorola 公司推出的一
種同步序列介面技術,是一種高速的,全雙工,同步的通訊匯流排。
2、SPI優點
支援全雙工通訊(SPI的資料輸入和輸出線獨立,所以允許同時完成資料的輸入和輸出)
通訊簡單
資料傳輸速率塊
3、缺點
沒有指定的流控制,沒有應答機制確認是否接收到資料,所以跟IIC匯流排協議比較在資料
可靠性上有一定的缺陷。
4、特點
1):高速、同步、全雙工、非差分、匯流排式
2):主從機通訊模式
2.硬體框架
SPI協議,硬體框架如下:
SCK:提供時鐘
DO:作為資料輸出
DI:作為資料輸入
CS0/CS1:作為片選
同一時刻只能有一個SPI裝置處於工作狀態。因此cs選中誰,誰就和主控通訊。
2.資料傳輸時序
這裡是一款SPI flash在SCLK上升延取樣資料(D7~D0)的示意圖。
設現在2440傳輸一個0x56資料給SPI Flash,時序如下:
CS0低選中SPI Flash,配置成模式0, 0x56的二進位制就是0b0101 0110,因此在每個SCK時鐘週期,DO輸出對應的電平。會在每個時鐘週期的上升沿取樣DO上的電平。
SPI相關的縮寫或說法
CKPOL (Clock Polarity)(時鐘)極性
CKPHA (Clock Phase)(時鐘)相位
SCK=SCLK=SPI的時鐘
Leading edge=前一個邊沿
Trailing edge=後一個邊沿
3.時鐘極性相位模式
CPOL:表示SPI CLK的初始電平,0為電平,1為高電平
CPHA:表示相位,即第一個還是第二個時鐘沿取樣資料,0為第一個時鐘沿,1為第二個時鐘沿
SPI模式 |
CPOL |
CPHA |
空閒狀態時鐘極性 |
取樣/移位時鐘相位 |
0 |
0 |
0 |
低電平 |
上升沿取樣(鎖存)下降沿移位 |
1 |
0 |
1 |
低電平 |
上升沿移位下降沿取樣(鎖存) |
2 |
1 |
0 |
高電平 |
上升沿移位下降沿取樣(鎖存) |
3 |
1 |
1 |
高電平 |
上升沿取樣(鎖存)下降沿移位 |
4個模式波形對比:
常用的是模式0和模式3,因為它們都是在上升沿取樣資料.
當配置成模式3時,對於主裝置,資料取樣在時鐘上升沿,資料傳送在時鐘下降沿。
主裝置SPI時鐘和極性的配置應該由外設來決定;二者的配置應該保持一致,即主裝置的SDO同從裝置的SDO配置一致,主裝置的SDI同從裝置的SDI配置一致。即因為主從裝置是在SCLK的控制下,同時傳送和接收資料,並通過2個雙向移位暫存器來交換資料。
4.SPI控制器工作原理
SSPSR
SSPSR:移位暫存器(Shift Register). 根據 SPI 時鐘同步訊號, 將SSPBUF中的資料一位一位移出去或者收進來。
SSPBUF
Master 與 Slave 之間交換的資料其實都是移位暫存器從 SSPBUF 裡面拷貝的。通過往 SSPBUF 對應的暫存器 (Tx-Data / Rx-Data register) 裡讀寫資料, 間接地操控 SPI 裝置內部的 SSPBUF.
Controller
用來發送控制訊號的,像CS,SCK等控制訊號。