24小時聯(lián)系電話:18217114652、13661815404
中文
公司新聞
串行通信協(xié)議第 5 部分 - SPI
串行通信協(xié)議第 5 部分 - SPI
我們將研究不同類型的串行通信協(xié)議,我們將研究流行的 SPI 協(xié)議。這是我們將要研究的許多常用的流行協(xié)議之一。我們將在本系列的結(jié)尾對每種類型的優(yōu)缺點(diǎn)進(jìn)行有用的總結(jié)。
SPI 代表串行外設(shè)接口。它是一種串行通信總線,常用于微控制器和小型外圍設(shè)備之間的短距離通信,例如射頻模塊、移位寄存器、外部閃存IC以及各種傳感器和SD卡。它是同步的,這意味著它有一個單獨(dú)的時鐘線。
SPI 協(xié)議是由摩托羅拉開發(fā)的,盡管它被用于其他制造商生產(chǎn)的大量不同 IC、模塊和設(shè)備中。
SPI 協(xié)議允許全雙工通信,這意味著連接到總線的設(shè)備可以同時發(fā)送和接收數(shù)據(jù)。
SPI 通信協(xié)議除接地外還包括四條線,它們是:
SCLK - 串行時鐘(主機(jī)輸出)
MOSI - Master Out Slave In(數(shù)據(jù)從主機(jī)輸出)
MISO - Master In Slave Out(從機(jī)輸出數(shù)據(jù))
SS 或 CS - 從機(jī)選擇或片選(通常為低電平有效信號,由主機(jī)輸出)
根據(jù)數(shù)據(jù)表的來源,SPI 引腳可以標(biāo)有不同的名稱,因此在開始設(shè)計之前仔細(xì)閱讀數(shù)據(jù)表至關(guān)重要。
兩個設(shè)備之間的 SPI 接線
SPI架構(gòu)通常由一個主設(shè)備和多個主設(shè)備通信的從設(shè)備組成,這意味著一組數(shù)據(jù)線可以連接到多個從設(shè)備。但是,從選擇與 I2C 完全不同??稍?span> SPI 通信網(wǎng)絡(luò)中使用的從設(shè)備數(shù)量受可用的 SS(從設(shè)備選擇)或 CS(芯片選擇)引腳數(shù)量限制。
具有多個 SS 引腳的 SPI 多設(shè)備連接
使用 SPI 協(xié)議的一些典型應(yīng)用包括:
溫度和壓力傳感器
ADC、DAC、音頻編解碼器、數(shù)字電位器
觸摸屏、視頻游戲控制器
相機(jī)鏡頭控制
外部閃存和 EEPROM IC
RTC(實(shí)時時鐘)
液晶顯示器
MMC 或 SD 卡
我們將首先研究主站和從站之間的通信??偩€主設(shè)備應(yīng)配置 SPI 通信時鐘設(shè)置以使用從設(shè)備支持的頻率(通常高達(dá)幾 MHz)。
然后,主機(jī)通過將適當(dāng)?shù)膹臋C(jī)選擇引腳拉低來選擇它想要與哪個從機(jī)通信,這會導(dǎo)致該從機(jī)開始偵聽。將選擇引腳拉高的其他從設(shè)備將忽略這些命令。
通信原理是主設(shè)備通過MOSI線向監(jiān)聽從設(shè)備發(fā)送數(shù)據(jù)。從機(jī)可以讀取這些數(shù)據(jù),同時通過 MISO 線將數(shù)據(jù)返回給主機(jī),主機(jī)可以在那里讀取它。這就是全雙工數(shù)據(jù)傳輸?shù)姆绞健?span>
通常,這種通信涉及使用 8 位大小的寄存器,第一位是 MSB(最高位)。主機(jī)和從機(jī)都通過寄存器向前移動一位,并在時鐘邊沿輸出最后一位。
主從通信及寄存器示例
當(dāng)傳輸完成時,主設(shè)備通過拉高相應(yīng)的從選擇引腳來取消選擇從。
盡管 SPI 數(shù)據(jù)傳輸通常包含 8 位消息傳遞,但其他字長(例如 16 位)也常用于音頻編解碼器的觸摸屏控制器等應(yīng)用。
在使用時鐘速度以外的機(jī)制的數(shù)據(jù)傳輸期間,可以使用備用設(shè)置,例如時鐘極性(哪個邏輯電平代表空閑狀態(tài))和相位(在哪個時鐘沿,上升或下降,數(shù)據(jù)線被采樣)。
有四種不同的 SPI 模式:
SPI模式 |
警察 |
CPHA |
時鐘極性(空閑狀態(tài)) |
時鐘相位 |
0 |
0 |
0 |
邏輯低 |
上升沿采樣數(shù)據(jù),下降沿輸出 |
1 |
0 |
1 |
低 |
數(shù)據(jù)下降沿采樣,上升沿輸出 |
2 |
1 |
1 |
邏輯高 |
下降沿采樣數(shù)據(jù),上升沿輸出 |
3 |
1 |
0 |
邏輯高 |
數(shù)據(jù)在上升沿采樣并在下降沿輸出 |
下圖顯示了這些不同模式下 SPI 線的時序圖:
SPI 模式 0:CPOL = 0,CPHA = 0,CLK 空閑狀態(tài) = 低,數(shù)據(jù)在上升沿采樣并在下降沿移位
SPI 模式 1:CPOL = 0,CPHA = 1,CLK 空閑狀態(tài) = 低,數(shù)據(jù)在下降沿采樣并在上升沿移位
SPI 模式 2:CPOL = 1,CPHA = 1,CLK 空閑狀態(tài) = 高,數(shù)據(jù)在下降沿采樣并在上升沿移位
SPI 模式 3:CPOL = 1,CPHA = 0,CLK 空閑狀態(tài) = 低,數(shù)據(jù)在上升沿采樣并在下降沿移位
SPI 協(xié)議流行的原因之一是接收硬件可以非常簡單。它可以使用一個簡單的移位寄存器來實(shí)現(xiàn)。這是一種比實(shí)現(xiàn) I2C 所需的更簡單、更便宜的解決方案。
由于SPI總線速度較高,傳輸距離應(yīng)保持很低(不超過幾米)。但是,可以通過降低時鐘速度或使用專門的 SPI 驅(qū)動芯片來增加最大總線長度。
擴(kuò)展范圍的另一種解決方案是使用數(shù)據(jù)鏈路 IC 作為中間階段:
使用數(shù)據(jù)鏈路 IC 的 SPI 總線擴(kuò)展
例如,您可以通過使用 RS-422 數(shù)據(jù)鏈路作為中間階段來擴(kuò)展 SPI 通信距離。
使用SPI協(xié)議的優(yōu)點(diǎn):
比I2C快得多
接收硬件很簡單(簡單的移位寄存器)
可以支持多個slave
使用SPI協(xié)議的缺點(diǎn):
需要更多的信號線
通信必須明確定義,因為大多數(shù)從設(shè)備使用自己的協(xié)議
主站必須控制通信(沒有主站的命令,從站不能相互交談)
每個從設(shè)備通常需要單獨(dú)的 SS 或 CS 線