新聞中心

SPI串行接口/總線

作者: 時間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
SPI是由美國摩托羅拉公司推出的一種同步串行傳輸規(guī)范,常作為單片機外設(shè)芯片串行擴展接口。SPI有4個引腳:SS(從器件選擇線)、SDO(串行數(shù)據(jù)輸出線)、SDI(串行數(shù)據(jù)輸入線)和SCK(同步串行時鐘線)。SPI可以用全雙工通信方式同時發(fā)送和接收8(16)位數(shù)據(jù),過程如下:主機啟動發(fā)送過程,送出時鐘脈沖信號,主移位寄存器的數(shù)據(jù)通過SDO移入到從移位寄存器,同時從移位寄存器中的數(shù)據(jù)通過SDI移人到主移位寄存器中。8(16)個時鐘脈沖過后,時鐘停頓,主移位寄存器中的8(16)位數(shù)據(jù)全部移人到從移位寄存器中,隨即又被自動裝入從接收緩沖器中,從機接收緩沖器滿標志位(BF)和中斷標志位(SSPIF)置“1”。同理,從移位寄存器中的8位數(shù)據(jù)全部移入到主寄存器中,隨即又被自動裝入到主接收緩沖器中.主接收緩沖器滿標志位(BF)和中斷標志位(SSPIF)置“1”。主CPU檢測到主接收緩沖器的滿標志位或者中斷標志位置1后,就可以讀取接收緩沖器中的數(shù)據(jù)。同樣,從CPU檢測到從接收緩沖器滿標志位或中斷標志位置1后,就可以讀取接收緩沖器中的數(shù)據(jù),這樣就完成了一次相互通信過程。這里設(shè)置dsPIC30F6014為主控制器,ISD4002為從器件,通過SPI口完成通信控制的過程。

SPI總線協(xié)議

本文引用地址:http://m.butianyuan.cn/article/201612/330358.htm
SPI是一個環(huán)形總線結(jié)構(gòu),由ss(cs)、sck、sdi、sdo構(gòu)成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數(shù)據(jù)交換。
假設(shè)下面的8位寄存器裝的是待發(fā)送的數(shù)據(jù)10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。
那么第一個上升沿來的時候數(shù)據(jù)將會是sdo=1;寄存器=0101010x。下降沿到來的時候,sdi上的電平將所存到寄存器中去,那么這時寄存器=0101010sdi,這樣在 8個時鐘脈沖以后,兩個寄存器的內(nèi)容互相交換一次。這樣就完成里一個spi時序。
例子:
假設(shè)主機和從機初始化就緒:并且主機的sbuff=0xaa,從機的sbuff=0x55,下面將分步對spi的8個時鐘周期的數(shù)據(jù)情況演示一遍:假設(shè)上升沿發(fā)送數(shù)據(jù)

脈沖主機sbuff從機sbuffsdisdo
0101010100101010100
1上0101010x1010101x01
1下010101001010101101
2上1010100x0101011x10
2下101010010101011010
3上0101001x1010110x01
3下010100101010110101
4上1010010x0101101x10
4下101001010101101010
5上0100101x1011010x01
5下010010101011010101
6上1001010x0110101x10
6下100101010110101010
7上0010101x1101010x01
7下001010101101010101
8上0101010x1010101x10
8下010101011010101010

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

SPI 總線是Motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線SCK,一條數(shù)據(jù)輸入線MOSI,一條數(shù)據(jù)輸出線MISO;用于 CPU與各種外圍器件進行全雙工、同步串行通訊。SPI主要特點有:可以同時發(fā)出和接收串行數(shù)據(jù);可以當作主機或從機工作;提供頻率可編程時鐘;發(fā)送結(jié)束中斷標志;寫沖突保護;總線競爭保護等。圖3示出SPI總線工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式(實線表示):

圖2SPI總線四種工作方式


SPI總線接口及時序
SPI 模塊為了和外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)音時鐘相位和極性應(yīng)該一致。SPI總線接口時序如圖所示。


SPI功能模塊的設(shè)計

根據(jù)功能定義及SPI的工作原理,將整個IP Core分為8個子模塊:uC接口模塊、時鐘分頻模塊、發(fā)送數(shù)據(jù)FIFO模塊、接收數(shù)據(jù)FIFO模塊、狀態(tài)機模塊、發(fā)送數(shù)據(jù)邏輯模塊、接收數(shù)據(jù)邏輯模塊以及中斷形式模塊。

深入分析SPI的四種傳輸協(xié)議可以發(fā)現(xiàn),根據(jù)一種協(xié)議,只要對串行同步時鐘進行轉(zhuǎn)換,就能得到其余的三種協(xié)議。為了簡化設(shè)計規(guī)定,如果要連續(xù)傳輸多個數(shù)據(jù),在兩個數(shù)據(jù)傳輸之間插入一個串行時鐘的空閑等待,這樣狀態(tài)機只需兩種狀態(tài)(空閑和工作)就能正確工作。




關(guān)鍵詞: SPI串行接口總

評論


技術(shù)專區(qū)

關(guān)閉