新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SPI、I2C、UART三種串行總線協(xié)議的區(qū)別和SPI接口介紹

SPI、I2C、UART三種串行總線協(xié)議的區(qū)別和SPI接口介紹

作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏

SPI interface

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


SPI總線協(xié)議

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

脈沖主機(jī)sbuff從機(jī)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

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

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

圖2 SPI總線四種工作方式


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

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

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

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


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


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

關(guān)閉