SPI工作原理以及優(yōu)缺點(diǎn)簡(jiǎn)介
來(lái)源:技術(shù)讓夢(mèng)想更偉大
作者:李肖遙
SPI 的工作原理
時(shí)鐘
時(shí)鐘信號(hào)將主機(jī)的數(shù)據(jù)位輸出與從機(jī)的位采樣同步,每個(gè)時(shí)鐘周期傳輸一位數(shù)據(jù),因此數(shù)據(jù)傳輸?shù)乃俣扔蓵r(shí)鐘信號(hào)的頻率決定,SPI 通信始終由主機(jī)發(fā)起,因?yàn)橹鳈C(jī)配置并生成時(shí)鐘信號(hào)。
設(shè)備共享時(shí)鐘信號(hào)的任何通信協(xié)議都稱(chēng)為同步協(xié)議。SPI 是一種同步通信協(xié)議。還有一些不使用時(shí)鐘信號(hào)的異步方法。例如,在 UART 通信中,雙方都設(shè)置為預(yù)先配置的波特率,該波特率決定了數(shù)據(jù)傳輸?shù)乃俣群蜁r(shí)序。
可以使用時(shí)鐘極性和時(shí)鐘相位的屬性來(lái)修改 SPI 中的時(shí)鐘信號(hào)。這兩個(gè)屬性共同作用來(lái)定義位何時(shí)被輸出以及何時(shí)被采樣。時(shí)鐘極性可由主機(jī)設(shè)置,以允許在任一上升沿上輸出和采樣位g 或時(shí)鐘周期的下降沿。時(shí)鐘相位可以設(shè)置為輸出和采樣發(fā)生在時(shí)鐘周期的第一個(gè)邊沿或第二個(gè)邊沿,無(wú)論它是上升還是下降。
從選擇
主機(jī)可以通過(guò)將從機(jī)的 CS/SS 線設(shè)置為低電壓電平來(lái)選擇它想要與哪個(gè)從機(jī)通話。在空閑、非傳輸狀態(tài)下,從選擇線保持在高電壓電平。主機(jī)上可能有多個(gè) CS/SS 引腳,這允許多個(gè)從機(jī)并行連接。如果只有一個(gè) CS/SS 引腳,則可以通過(guò)菊花鏈將多個(gè)從設(shè)備連接到主設(shè)備。
多從
SPI 可以設(shè)置為單主機(jī)和單從機(jī)運(yùn)行,也可以設(shè)置為單個(gè)主機(jī)控制的多個(gè)從機(jī)。有兩種方法可以將多個(gè)從站連接到主站。如果主機(jī)有多個(gè)從機(jī)選擇引腳,從機(jī)可以像這樣并行連接:

SPI簡(jiǎn)介——多從配置分離從選擇
如果只有一個(gè)從機(jī)選擇引腳可用,從機(jī)可以像這樣菊花鏈:

SPI 簡(jiǎn)介 - 多從配置菊花鏈
MOSI 和 MISO
主機(jī)通過(guò) MOSI 線以串行方式向從機(jī)逐位發(fā)送數(shù)據(jù)。從機(jī)通過(guò) MOSI 引腳接收主機(jī)發(fā)送的數(shù)據(jù)。從主機(jī)發(fā)送到從機(jī)的數(shù)據(jù)通常以最高有效位在前發(fā)送。
從機(jī)也可以通過(guò) MISO 線串行將數(shù)據(jù)發(fā)送回主機(jī)。從從設(shè)備發(fā)送回主設(shè)備的數(shù)據(jù)通常以最低有效位在前發(fā)送。
SPI數(shù)據(jù)傳輸步驟
主機(jī)輸出時(shí)鐘信號(hào):

SPI簡(jiǎn)介——數(shù)據(jù)傳輸圖時(shí)鐘信號(hào)
主機(jī)將 SS/CS 引腳切換到低電壓狀態(tài),從而激活從機(jī):

SPI介紹——數(shù)據(jù)傳輸圖從選擇激活
主機(jī)沿MOSI 線一次一位地向從機(jī)發(fā)送數(shù)據(jù)。從設(shè)備在接收到位時(shí)讀取這些位:

SPI簡(jiǎn)介——數(shù)據(jù)傳輸圖 Master to Slave Data Transfer
如果需要響應(yīng),從機(jī)沿 MISO 線一次一位地向主機(jī)返回?cái)?shù)據(jù)。主機(jī)在接收到位時(shí)讀取這些位:

SPI 簡(jiǎn)介 - 數(shù)據(jù)傳輸圖 Slave to Master 數(shù)據(jù)傳輸
SPI的優(yōu)缺點(diǎn)
使用 SPI 有一些優(yōu)點(diǎn)和缺點(diǎn),如果在不同的通信協(xié)議之間進(jìn)行選擇,您應(yīng)該根據(jù)項(xiàng)目的要求知道什么時(shí)候使用 SPI:
好處
沒(méi)有起始位和停止位,因此數(shù)據(jù)可以不間斷地連續(xù)流式傳輸 沒(méi)有像 I2C 那樣復(fù)雜的從機(jī)尋址系統(tǒng) 比 I2C 更高的數(shù)據(jù)傳輸速率(幾乎是 I2C 的兩倍) 獨(dú)立的 MISO 和 MOSI 線,因此可以同時(shí)發(fā)送和接收數(shù)據(jù)
缺點(diǎn)
使用四根線(I2C 和 UART 使用兩根) 沒(méi)有確認(rèn)數(shù)據(jù)已成功接收(I2C 有這個(gè)) 沒(méi)有像 UART 中的奇偶校驗(yàn)位那樣的錯(cuò)誤檢查形式 只允許一個(gè)主 希望這篇文章能讓您更好地了解 SPI。
???????????????? ?END ????????????????? 關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。
點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。
