<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > SPI接口說(shuō)明及原理

SPI接口說(shuō)明及原理

發(fā)布人:yingjian 時(shí)間:2022-08-18 來(lái)源:工程師 發(fā)布文章
1簡(jiǎn)介

SPI:Serial Peripheral Interface,是串行外設接口。


SPI是由摩托羅拉于 1985 年前后開(kāi)發(fā),是一種適用于短距離、設備到設備通信的同步串行接口。


從那時(shí)起,這種接口就已成為許多半導體制造商,特別是微控制器(MCU)和微處理器(MPU)采用的事實(shí)標準。


2SPI接口

SPI總線(xiàn)是一種4線(xiàn)總線(xiàn),通常有一個(gè)主設備和一個(gè)或多個(gè)從設備,需要至少4根線(xiàn),事實(shí)上3根也可以。


MOSI:Master Output Slave Input,主設備數據輸出,從設備數據輸入;

MISO:Master Input Slave Output,主設備數據輸入,從設備數據輸出;

SCLK:Serial Clock,時(shí)鐘信號,由主設備產(chǎn)生;

SS:Slave Select,從設備選擇信號,由主設備控制;

圖片


上面的SS信號,也可以理解為CS信號,一般是低電平有效,所以也是NSS(非)信號;


CS:Chip Select,片選信號(從設備使能/選擇信號),由主設備控制;


一主一從

最基本的SPI通信就是一主一從,比如:一個(gè)STM32作為主機,一個(gè)W25Q16(SPI Flash)作為從機。還有兩個(gè)MCU之間進(jìn)行SPI通信等。 

圖片


上圖例子是主機發(fā)送一個(gè)字節數據(0x53),從機應答一個(gè)字節數據(0x46)。


一主多從

SPI可以一主一從(一個(gè)主機,一個(gè)從機),但也可以一主多從。一主多從常見(jiàn)有兩種連接方式。


A.常規

通常,每個(gè)從機都需要一條單獨的SS線(xiàn),要與指定的從機通信,將該從機的SS線(xiàn)設為低電平,并將其余的保持為高電平即可。

圖片


B.一條SS信號

某些應用只需要一條NSS即可(比如:移位寄存器),對于這種布局,數據從一個(gè)從設備移位到另一個(gè)從設備。

圖片


3SPI數據傳輸

SPI的通信比較簡(jiǎn)單,一個(gè)時(shí)鐘傳輸一位數據(主機 -> 從機,或者從機 -> 主機)。


SPI時(shí)鐘

理論上SPI的時(shí)鐘頻率可以做到很大,一般幾MHz~幾百MHz,拿常見(jiàn)的W25Q16來(lái)說(shuō),SPI最高支持80MHz。


SPI通信速率要結合實(shí)際情況,不能超過(guò)主機或從機支持的最大時(shí)鐘頻率。


SPI數據

SPI的數據分兩個(gè)方向:

MOSI:主機 -> 從機

MISO:從機 -> 主機


SPI通信有一個(gè)“缺點(diǎn)”:沒(méi)有指定的流控制,沒(méi)有應答機制確認是否接收到數據。


可以理解為:不知道是什么時(shí)候主機發(fā)給從機,什么時(shí)候從機發(fā)給主機,到底該發(fā)多少字節數據等。


此時(shí),需要通信的主機和從機達成約定,一般由主機進(jìn)行控制讀寫(xiě)的操作。


比如下面這個(gè)讀寫(xiě)SPI Flash數據的操作:

圖片


前面1字節是指令,緊接著(zhù)再3字節(24位)地址,都是由主機發(fā)送給從機。之后,主機讀取數據(由從機發(fā)送出來(lái))。


時(shí)鐘極性和相位

除了設置時(shí)鐘頻率外,主機還必須配置與數據有關(guān)的時(shí)鐘極性和相位。

圖片


CPOL確定時(shí)鐘的極性,極性可以通過(guò)簡(jiǎn)單的逆變器進(jìn)行轉換。


CPHA確定相對于時(shí)鐘脈沖的數據位的時(shí)序(即相位)。


一般集成有SPI外設的處理器,都有SPI相關(guān)的配置寄存器,拿STM32來(lái)說(shuō),參考手冊里面有詳細介紹SPI配置的信息。


建議大家結合時(shí)序圖理解,不要死記硬背。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: SPI接口

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>