SPI總線協(xié)議及SPI時(shí)序圖詳解
由于我使用的器件工作在模式0這種時(shí)序(CPOL=0,CPHA=0),所以將圖簡(jiǎn)化為圖2,
只關(guān)注模式0的時(shí)序。
圖2
我們來(lái)關(guān)注SCK的第一個(gè)時(shí)鐘周期,在時(shí)鐘的前沿采樣數(shù)據(jù)(上升沿,第一個(gè)時(shí)鐘沿),
在時(shí)鐘的后沿輸出數(shù)據(jù)(下降沿,第二個(gè)時(shí)鐘沿)。首先來(lái)看主器件,主器件的輸出口(MOSI)輸出的數(shù)據(jù)bit1,
在時(shí)鐘的前沿被從器件采樣,那主器件是在何時(shí)刻輸出bit1的呢?bit1的輸出時(shí)刻實(shí)際上在SCK信號(hào)有效以前,
比 SCK的上升沿還要早半個(gè)時(shí)鐘周期。bit1的輸出時(shí)刻與SSEL信號(hào)沒(méi)有關(guān)系。再來(lái)看從器件,
主器件的輸入口MISO同樣是在時(shí)鐘的前沿采樣從器件輸出的bit1的,那從器件又是在何時(shí)刻輸出bit1的呢。
從器件是在SSEL信號(hào)有效后,立即輸出bit1,盡管此時(shí)SCK信號(hào)還沒(méi)有起效。關(guān)于上面的主器件
和從器件輸出bit1位的時(shí)刻,可以從圖3、4中得到驗(yàn)證。
圖3
注意圖3中,CS信號(hào)有效后(低電平有效,注意CS下降沿后發(fā)生的情況),故意用延時(shí)程序
延時(shí)了一段時(shí)間,之后再向數(shù)據(jù)寄存器寫(xiě)入了要發(fā)送的數(shù)據(jù),來(lái)觀察主器件輸出bit1的情況(MOSI)。
可以看出,bit1(值為1)是在SCK信號(hào)有效之前的半個(gè)時(shí)鐘周期的時(shí)刻開(kāi)始輸出的(與CS信號(hào)無(wú)關(guān)),
到了SCK的第一個(gè)時(shí)鐘周期的上升沿正好被從器件采樣。
圖4
圖4中,注意看CS和MISO信號(hào)。我們可以看出,CS信號(hào)有效后,從器件立刻輸出了bit1(值為1)。通常我們進(jìn)行的spi操作都是16位的。圖5記錄了第一個(gè)字節(jié)和第二個(gè)字節(jié)間的相互銜接的過(guò)程。
第一個(gè)字節(jié)的最后一位在SCK的上升沿被采樣,隨后的SCK下降沿,從器件就輸出了第二個(gè)字節(jié)的第一位。
SPI總線協(xié)議介紹(接口定義,傳輸時(shí)序)
一、技術(shù)性能
SPI接口是Motorola 首先提出的全雙工三線同步串行外圍接口,采用主從模式(Master Slave)架構(gòu);支持多slave模式應(yīng)用,一般僅支持單Master。
時(shí)鐘由Master控制,在時(shí)鐘移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,低位在后(MSB first);SPI接口有2根單向數(shù)據(jù)線,為全雙工通信,目前應(yīng)用中的數(shù)據(jù)速率可達(dá)幾Mbps的水平。
-------------------------------------------------------
二、接口定義
SPI接口共有4根信號(hào)線,分別是:設(shè)備選擇線、時(shí)鐘線、串行輸出數(shù)據(jù)線、串行輸入數(shù)據(jù)線。
(1)MOSI:主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入
(2)MISO:主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出
(3)SCLK :時(shí)鐘信號(hào),由主器件產(chǎn)生
(4)/SS:從器件使能信號(hào),由主器件控制
-------------------------------------------------------
三、內(nèi)部結(jié)構(gòu)
四、傳輸時(shí)序
SPI接口在內(nèi)部硬件實(shí)際上是兩個(gè)簡(jiǎn)單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號(hào)和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK的下降沿上數(shù)據(jù)改變,上升沿一位數(shù)據(jù)被存入移位寄存器。
SPI接口沒(méi)有指定的流控制,沒(méi)有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。
評(píng)論