SPI協(xié)議是由摩托羅拉公司提出的一種串行外圍設(shè)備通信接口,是一種高速全雙工的通信總線。它被廣泛地使用在ADC、LCD、存儲(chǔ)器等設(shè)備中,包括一些需要與MCU之間有較高通訊速率要求的場(chǎng)合中。
1、SPI 的硬件層
SPI是采用主從模式的一種通信方式,它支持一主一從、一主多從,但是不支持多主機(jī)模式。
常見的一主多從的連接方式如下:
SPI接口共有四根信號(hào)線,它們分別如下:
SCLK: 時(shí)鐘信號(hào)線。由主機(jī)產(chǎn)生并控制。
MOSI: 主機(jī)數(shù)據(jù)輸出,從機(jī)數(shù)據(jù)輸入。(主出從入)
MISO: 主機(jī)數(shù)據(jù)輸入,從機(jī)數(shù)據(jù)輸出。(主入從出)
NSS: 從機(jī)片選使能信號(hào)線。該信號(hào)由主機(jī)進(jìn)行控制。在一主對(duì)多從的模式下,每一個(gè)從機(jī)都需要一個(gè)NSS,用于主機(jī)選擇和那個(gè)從機(jī)進(jìn)行通信(一般為低電平有效)。當(dāng)一個(gè)SPI設(shè)備需要發(fā)送廣播數(shù)據(jù),它必須拉低NSS信號(hào),以通知所有其它的設(shè)備它是主設(shè)備。
1.2、SPI通信常見的連接方式
(1)SPI通信配置為全雙工的連接方式:
這種連接方式允許主從機(jī)之間互相進(jìn)行通信,時(shí)鐘均由主機(jī)產(chǎn)生。
(2)單工模式 —— 主機(jī)接收,從機(jī)發(fā)送
這種模式下由主機(jī)產(chǎn)生時(shí)鐘SCK,主機(jī)只能收到從機(jī)上報(bào)的數(shù)據(jù),不能向從機(jī)下發(fā)數(shù)據(jù)。
(3)單工模式 —— 主機(jī)發(fā)送,從機(jī)接收
這種模式下由主機(jī)產(chǎn)生時(shí)鐘SCK,主機(jī)只能向從機(jī)下發(fā)數(shù)據(jù),不能接收從機(jī)上報(bào)的數(shù)據(jù)。常見的應(yīng)用有帶SPI接口的LCD顯示屏。
(4)雙向通信的連接方式
2、SPI的通信協(xié)議
SPI的協(xié)議定義了通信的起始信號(hào)、停止信號(hào)、數(shù)據(jù)有效性、時(shí)鐘同步等。它的通訊時(shí)序如下:
圖:SPI通信時(shí)序圖
這是一個(gè)主機(jī)的通信時(shí)序,信號(hào)線 NSS、SCK、MOSI 都是由主機(jī)控制,MISO 是由從機(jī)進(jìn)行控制。其中 MOSI 和 MISO 上的數(shù)據(jù)僅在 NSS 為低時(shí)才有效,并且每個(gè)SCK 時(shí)鐘周期只交換一位數(shù)據(jù)。
2.1、起始信號(hào)
SPI通信時(shí)序圖中的①為通信的起始信號(hào),由主機(jī)控制NSS從高電平到低電平,從而選擇要進(jìn)行通信的從機(jī),再通過主機(jī)產(chǎn)生時(shí)鐘信號(hào)SCK,啟動(dòng)一次數(shù)據(jù)的傳輸。
2.2、停止信號(hào)
SPI通信時(shí)序圖中的⑥為通信的起始信號(hào),由主機(jī)控制NSS從低電平到高電平,從而結(jié)束一次數(shù)據(jù)的傳輸。
2.3、數(shù)據(jù)有效性
SPI 在 SCK 時(shí)鐘的同步下進(jìn)行數(shù)據(jù)的準(zhǔn)備和采樣,如通信時(shí)序圖的②③④⑤所示。在 NSS 為低的情況時(shí),在 SCK 的上升沿時(shí) MISO 和 MOSI 進(jìn)行數(shù)據(jù)準(zhǔn)備,SCK 的下降沿時(shí)讀取 MISO 和 MOSI 上的數(shù)據(jù)。 在 NSS 為高時(shí),MISO 和MOSI 上的數(shù)據(jù)無效。
2.4、時(shí)鐘的同步
SPI 的數(shù)據(jù)傳輸是需要 SCK 時(shí)鐘信號(hào)嚴(yán)格同步的,每一個(gè) SCK 周期只傳輸一位數(shù)據(jù),這一個(gè)周期里要完成數(shù)據(jù)的準(zhǔn)備和采樣,且數(shù)據(jù)的輸入和輸出是同時(shí)進(jìn)行的。
SPI中數(shù)據(jù)是MSB 先行或 LSB先行,在協(xié)議中是沒有硬性規(guī)定,只需通信雙方保持統(tǒng)一即可。
SPI 一次數(shù)據(jù)傳輸可以是 8 位或 16 位為單位,每次傳輸?shù)膯挝粩?shù)不受限制。
3、SPI的工作模式
SPI 一共有四種工作模式。它們的區(qū)別是:
1)總線空閑時(shí) SCK 的電平狀態(tài)
2)數(shù)據(jù)開始采樣的時(shí)刻。
這四種模式是通過 “時(shí)鐘極性 CPOL” 和 “時(shí)鐘相位 CPHA” 的電平來實(shí)現(xiàn)和區(qū)分的。如下:
1)CPOL=0 時(shí),SCK 引腳在空閑狀態(tài)保持低電平;
2)CPOL=1 時(shí),SCK 引腳在空閑狀態(tài)保持高電平;
3)CPHA=0 時(shí),SCK 時(shí)鐘的第一個(gè)邊沿進(jìn)行采樣;
4)CPHA =1 時(shí),SCK 時(shí)鐘的第二個(gè)邊沿進(jìn)行采樣。
時(shí)鐘相位CPHA =1 ,數(shù)據(jù)在SCK 時(shí)鐘的第二個(gè)邊沿采樣的時(shí)序圖如下:
時(shí)鐘相位CPHA =0 ,數(shù)據(jù)在SCK 時(shí)鐘的第一個(gè)邊沿采樣的時(shí)序圖如下:
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350980 -
通信接口
+關(guān)注
關(guān)注
3文章
237瀏覽量
30980 -
SPI協(xié)議
+關(guān)注
關(guān)注
0文章
18瀏覽量
8361
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論