本教程由作者strongerHuang于2019年09月原創(chuàng)發(fā)布。
版權(quán)所有:禁止商用
申明:該文檔僅供個(gè)人學(xué)習(xí)使用,轉(zhuǎn)載請(qǐng)公眾號(hào)聯(lián)系作者授權(quán)。
1寫在前面
SPI:Serial Peripheral Interface,是串行外設(shè)接口。
SPI是由摩托羅拉于 1985 年前后開發(fā),是一種適用于短距離、設(shè)備到設(shè)備通信的同步串行接口。
從那時(shí)起,這種接口就已成為許多半導(dǎo)體制造商,特別是微控制器(MCU)和微處理器(MPU)采用的事實(shí)標(biāo)準(zhǔn)。
2SPI接口
SPI總線是一種4線總線,通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以。
MOSI:Master Output Slave Input,主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入;
MISO:Master Input Slave Output,主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出;
SCLK:Serial Clock,時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生;
SS:Slave Select,從設(shè)備選擇信號(hào),由主設(shè)備控制;

上面的SS信號(hào),也可以理解為CS信號(hào),一般是低電平有效,所以也是NSS(非)信號(hào);
CS:Chip Select,片選信號(hào)(從設(shè)備使能/選擇信號(hào)),由主設(shè)備控制;
2.1 一主一從
最基本的SPI通信就是一主一從,比如:一個(gè)STM32作為主機(jī),一個(gè)W25Q16(SPI Flash)作為從機(jī)。還有兩個(gè)MCU之間進(jìn)行SPI通信等。

上圖例子是主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)(0x53),從機(jī)應(yīng)答一個(gè)字節(jié)數(shù)據(jù)(0x46)。
2.2 一主多從
SPI可以一主一從(一個(gè)主機(jī),一個(gè)從機(jī)),但也可以一主多從。一主多從常見有兩種連接方式。
A.常規(guī)
通常,每個(gè)從機(jī)都需要一條單獨(dú)的SS線,要與指定的從機(jī)通信,將該從機(jī)的SS線設(shè)為低電平,并將其余的保持為高電平即可。

B.一條SS信號(hào)
某些應(yīng)用只需要一條NSS即可(比如:移位寄存器),對(duì)于這種布局,數(shù)據(jù)從一個(gè)從設(shè)備移位到另一個(gè)從設(shè)備。

3SPI數(shù)據(jù)傳輸
SPI的通信比較簡單,一個(gè)時(shí)鐘傳輸一位數(shù)據(jù)(主機(jī) -> 從機(jī),或者從機(jī) -> 主機(jī))。
3.1 SPI時(shí)鐘
理論上SPI的時(shí)鐘頻率可以做到很大,一般幾MHz~幾百M(fèi)Hz,拿常見的W25Q16來說,SPI最高支持80MHz。
SPI通信速率要結(jié)合實(shí)際情況,不能超過主機(jī)或從機(jī)支持的最大時(shí)鐘頻率。
3.2 SPI數(shù)據(jù)
SPI的數(shù)據(jù)分兩個(gè)方向:
MOSI:主機(jī) -> 從機(jī)
MISO:從機(jī) -> 主機(jī)
SPI通信有一個(gè)“缺點(diǎn)”:沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。
可以理解為:不知道是什么時(shí)候主機(jī)發(fā)給從機(jī),什么時(shí)候從機(jī)發(fā)給主機(jī),到底該發(fā)多少字節(jié)數(shù)據(jù)等。
此時(shí),需要通信的主機(jī)和從機(jī)達(dá)成約定,一般由主機(jī)進(jìn)行控制讀寫的操作。
比如下面這個(gè)讀寫SPI Flash數(shù)據(jù)的操作:

前面1字節(jié)是指令,緊接著再3字節(jié)(24位)地址,都是由主機(jī)發(fā)送給從機(jī)。之后,主機(jī)讀取數(shù)據(jù)(由從機(jī)發(fā)送出來)。
3.3 時(shí)鐘極性和相位
除了設(shè)置時(shí)鐘頻率外,主機(jī)還必須配置與數(shù)據(jù)有關(guān)的時(shí)鐘極性和相位。

CPOL確定時(shí)鐘的極性,極性可以通過簡單的逆變器進(jìn)行轉(zhuǎn)換。
CPHA確定相對(duì)于時(shí)鐘脈沖的數(shù)據(jù)位的時(shí)序(即相位)。
一般集成有SPI外設(shè)的處理器,都有SPI相關(guān)的配置寄存器,拿STM32來說,參考手冊(cè)里面有詳細(xì)介紹SPI配置的信息。
建議大家結(jié)合時(shí)序圖理解,不能死記硬背。
5
說明
1.該文檔僅供個(gè)人學(xué)習(xí)使用,版權(quán)所有,禁止商用。
2.本文由我一個(gè)人編輯并整理,難免存在一些錯(cuò)誤。
3.本文收錄于公眾號(hào)『嵌入式專欄』,關(guān)注微信公眾號(hào)回復(fù)【通信教程】即可查看全系列教程。
6最后
-
通信
+關(guān)注
關(guān)注
18文章
6391瀏覽量
140039 -
SPI接口
+關(guān)注
關(guān)注
0文章
282瀏覽量
36702
發(fā)布評(píng)論請(qǐng)先 登錄
常用通信接口速查表
瑞芯微(EASY EAI)RV1126B SPI使用
國產(chǎn)SPI NOR Flash接口閃存介紹
SPI的多機(jī)通信
常見SPI溫度傳感器芯片有哪些?(什么是SPI溫度傳感器芯片?)
基于STEVAL-BMS1T的隔離式SPI通信技術(shù)解析與應(yīng)用指南
Microchip 23AA04M/23LCV04M 4Mb SPI/SDI/SQI SRAM技術(shù)解析
嵌入式接口通識(shí)知識(shí)之SPI接口
SPI通信筆記:基礎(chǔ)+動(dòng)圖+時(shí)序圖+總結(jié),一文吃透!
無線通信的隱形冠軍:澤耀科技SPI射頻模塊硬核解析
LTM2895 100MHz隔離型DAC SPI串行接口技術(shù)手冊(cè)
ESP32平臺(tái) + SPI接口芯片DM9051ANX實(shí)現(xiàn)以太網(wǎng)通信
基于RK3576開發(fā)板的SPI使用說明
串行通信接口SPI與QSPI的區(qū)別
通信教程的04_SPI接口說明及原理
評(píng)論