標題:
SPI基本原理與結(jié)構(gòu)
[打印本頁]
作者:
51黑黑黑
時間:
2016-2-13 01:59
標題:
SPI基本原理與結(jié)構(gòu)
SPI(
Serial PeripheralInterface
,串行外圍設(shè)備接口)是由
Motorola
公司開發(fā),用來在微控制器和外圍設(shè)備芯片之間提供一個低成本、易使用的接口(
SPI
有時候也被稱為
4
線接口)。這種接口可以用來連接存儲器(存儲數(shù)據(jù))、
A/D
轉(zhuǎn)換器、
D/A
轉(zhuǎn)換器、實時時鐘日歷、
LCD
驅(qū)動器、傳感器、音頻芯片,甚至其他處理器。支持
SPI
的元件很多,并且還一直在增加。
與標準的串行接口(將在第
10
章講到)不同,
SPI
是一個同步協(xié)議接口,所有的傳輸都參照一個共同的時鐘,這個同步時鐘信號由主機(處理器)產(chǎn)生,接收數(shù)據(jù)的外設(shè)(從設(shè)備)使用時鐘來對串行比特流的接收進行同步化。可能會有許多芯片連到主機的同一個
SPI
接口上,這時主機通過觸發(fā)從設(shè)備的片選輸入引腳來選擇接收數(shù)據(jù)的從設(shè)備,沒有被選中的外設(shè)將不會參與
SPI
傳輸。
SPI
主要使用
4
個信號:主機輸出
/
從機輸入(
MOSI
)、主機輸入
/
主機輸出(
MISO
)、串行
SCLK
或
SCK
和外設(shè)芯片(
CS
)。有些處理器有
SPI
接口專用的芯片選擇,稱為從機選擇(
SS
)。
MOSI
信號由主機產(chǎn)生,從機接收。在有些芯片上,
MOSI
只被簡單的標為串行輸入(
SI
),或者串行數(shù)據(jù)輸入(
SDI
)。
MISO
信號由從機產(chǎn)生,不過還是在主機的控制下產(chǎn)生的。在一些芯片上,
MISO
有時被稱為串行輸出(
SO
)或串行數(shù)據(jù)輸出(
SDO
)。外設(shè)片選信號通常只是由主機的備用
I/O
引腳產(chǎn)生的。下左圖是微處理器通過
SPI
和外設(shè)進行連接的示意圖。
主機和外設(shè)都包含一個串行移位寄存器,主機通過向它的
SPI
串行寄存器寫入一個字節(jié)來發(fā)起一次傳輸。寄存器是通過
MOSI
信號線將字節(jié)傳送給外設(shè),外設(shè)也將自己移位寄存器中的內(nèi)容通過
MISO
信號線返回給主機,如上右圖所示。這樣,兩個移位寄存器中的內(nèi)容就被交換了。外設(shè)的寫操作和讀操作是同步完成的,因此
SPI
成為一個很有效的協(xié)議。
如果只是進行寫操作,主機只需忽略收到的字節(jié);反過來,如果主機要讀取外設(shè)的一個字節(jié),就必須發(fā)送一個空字節(jié)來引發(fā)從機的傳輸。
當主機發(fā)送一個連續(xù)的數(shù)據(jù)流時,有些外設(shè)能夠進行多字節(jié)傳輸。許多擁有
SPI
接口的存儲器芯片都以這種方式工作。在這種傳輸方式下,
SPI
外設(shè)的芯片選擇端必須在整個傳輸過程中保持低電平。比如,存儲器芯片會希望在一個“寫”命令之后緊接著收到的是
4
個地址字節(jié)(起始地址),這樣后面接收到的數(shù)據(jù)就可以存儲到該地址。一次傳輸可能會涉及千字節(jié)的移位或更多的信息。
其他外設(shè)只需要一個單字節(jié)(比如一個發(fā)給
A/D
轉(zhuǎn)換器的命令),有些甚至還支持菊花鏈連接,如下圖所示。
在這個例子中,主機處理器從其
SPI
接口發(fā)送
3
個字節(jié)的數(shù)據(jù)。第
1
個字節(jié)發(fā)送給外設(shè)
A
,當?shù)?font face="Times New Roman">2個字節(jié)發(fā)送給外設(shè)
A
的時候,第
1
個字節(jié)已移出了
A
,而傳送給了
B
。同樣,主機想要從外設(shè)
A
讀取一個結(jié)果,它必須再發(fā)送一個
3
字節(jié)(空字節(jié))的序列,這樣就可以把
A
中的數(shù)據(jù)移到
B
中,然后再移到
C
中,最后送回主機。在這個過程中,主機還依次從
B
和
C
接收到字節(jié)。
注意,菊花鏈連接不一定適用于所有的
SPI
設(shè)備,特別是要求多字節(jié)傳輸?shù)模ū热绱鎯ζ餍酒┰O(shè)備。另外,要對外設(shè)芯片的數(shù)據(jù)表進行仔細分析,確定能對它做什么而不能做什么。如果芯片的數(shù)據(jù)表中沒有明確提到菊花鏈連接,那么該芯片不支持這種連接的幾率為
50%
。
根據(jù)時鐘極性和時鐘相位的不同,
SPI
有
4
個工作模式。時鐘極性有高、低兩極:時鐘極性為低電平時,空閑時時鐘(
SCK
)處于低電平,傳輸時跳轉(zhuǎn)到高電平;時鐘極性為高電平時,空閑時時鐘處于高電平,傳輸時跳轉(zhuǎn)到低電平。
時鐘相位有兩個:時鐘相位
0
和時鐘相位
1
。對于時鐘相位
0
,如果時鐘極性是低電平,
MOSI
和
MISO
輸出在(
SCK
)的上升沿有效。如果時鐘電平極性為高,對于時鐘相位
0
,這些輸出在
SCK
的下降沿有效。
MISO
輸出的第
X
位是一個未定義的附加位,是
SPI
接口特有的情況。用戶不必擔心這個位,因為
SPI
接口將忽略該位。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1