天天看點

[筆記分享] [SPI] SPI 協定小結

簡介

同步外設接口(SPI)是由摩托羅拉公司開發的全雙工同步串行總線,該總線大量用在與EEPROM、ADC、FRAM和顯示驅動器之類的慢速外設器件通信。

SPI(Serial Peripheral Interface)是一種串行同步通訊協定,由一個主裝置和一個或多個從裝置組成,主裝置啟動一個與從裝置的同步通訊,進而完成資料的交換。SPI 接口由SDI(串行資料輸入),SDO(串行資料輸出),SCK(串行移位時鐘),CS(從使能信号)四種信号構成,CS 決定了唯一的與主裝置通信的從裝置,如沒有CS 信号,則隻能存在一個從裝置,主裝置通過産生移位時鐘來發起通訊。通訊時,資料由SDO 輸出,SDI 輸入,資料在時鐘的上升或下降沿由SDO 輸出,在緊接着的下降或上升沿由SDI 讀入,這樣經過8/16 次時鐘的改變,完成8/16 位資料的傳輸。

通信

該總線通信基于主-從配置。它有以下4個信号:

MOSI:主出/從入

MISO:主入/從出

SCK:串行時鐘

SS:從屬選擇

晶片上“從屬選擇”(slave-select)的引腳數決定了可連到總線上的器件數量。在SPI傳輸中,資料是同步進行發送和接收的。資料傳輸的時鐘基于來自主處理器的時鐘脈沖,摩托羅拉沒有定義任何通用SPI的時鐘規範。然而,最常用的時鐘設定基于時鐘極性(CPOL)和時鐘相位(CPHA)兩個參數,CPOL定義SPI串行時鐘的活動狀态,而CPHA定義相對于SO-資料位的時鐘相位。CPOL和CPHA的設定決定了資料取樣的時鐘沿。

資料方向和通信速度

SPI傳輸串行資料時首先傳輸最高位。波特率可以高達5Mbps,具體速度大小取決于SPI硬體。例如,Xicor公司的SPI串行器件傳輸速度能達到5MHz。

2.4 SPI總線接口及時序

SPI總線包括1根串行同步時鐘信号線以及2根資料線。

SPI子產品為了和外設進行資料交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協定沒有重大的影響。如果CPOL=0,串行同步時鐘的空閑狀态為低電平;如果CPOL=1,串行同步時鐘的空閑狀态為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協定之一進行資料傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)資料被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)資料被采樣。SPI主子產品和與之通信的外設音時鐘相位和極性應該一緻。SPI接口時序如圖3、圖4所示。

[筆記分享] [SPI] SPI 協定小結

SPI協定舉例

SPI是一個環形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行資料交換。

假設下面的8位寄存器裝的是待發送的資料10101010,上升沿發送、下降沿接收、高位先發送。

那麼第一個上升沿來的時候資料将會是sdo=1;寄存器=0101010x。下降沿到來的時候,sdi上的電平将所存到寄存器中去,那麼這時寄存器=0101010sdi,這樣在8個時鐘脈沖以後,兩個寄存器的内容互相交換一次。這樣就完成裡一個spi時序。例子如下:

假設主機和從機初始化就緒:并且主機的sbuff=0xaa,從機的sbuff=0x55,下面将分步對spi的8個時鐘周期的資料情況示範一遍:假設上升沿發送資料

[筆記分享] [SPI] SPI 協定小結
[筆記分享] [SPI] SPI 協定小結

這樣就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對于主機而言的。其中ss引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從機的是時候,可以作為片選腳用。根據以上分析,一個完整的傳送周期是16位,即兩個位元組,因為,首先主機要發送指令過去,然後從機根據主機的名準備資料,主機在下一個8位時鐘周期才把資料讀回來 。

繼續閱讀