1.SPI總線概述
SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫。是Motorola公司推出的一種同步串行接口技術(shù),是一種高速的,全雙工,同步的通信總線。主要應(yīng)用在EEPROM,F(xiàn)LASH,實時時鐘,AD轉(zhuǎn)換器,數(shù)字信號處理器和數(shù)字信號解碼器等設(shè)備與MCU之間進行通信。
SPI具有通信簡單,支持全雙工通信,數(shù)據(jù)傳輸速度快的優(yōu)點。但是由于SPI沒有指定的流控制,沒有應(yīng)答機制確認數(shù)據(jù)是否發(fā)送或接收成功,所以SPI總線跟IIC總線比較的話,SPI總線在數(shù)據(jù)可靠性上有一定的缺陷。
2.SPI信號線
SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備。SPI使用3條通訊總線和1條片選線。
(1).MOSI
主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入。
(2).MISO
主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出。
(3).SCLK(或叫SCK)
時鐘信號線,用于通訊同步,該信號由主機產(chǎn)生和控制。
(4).CS
片選線,從設(shè)備使能信號,由主設(shè)備控制。當(dāng)有多個從設(shè)備的時候,因為每個從設(shè)備上都有一個片選引腳接入到主設(shè)備機中,當(dāng)我們的主設(shè)備和某個從設(shè)備通信時就需要設(shè)置從設(shè)備對應(yīng)的片選引腳,來使能從設(shè)備。
SPI通訊設(shè)備之間的連接方式,如下圖所示:
3.SPI總線的4種通訊模式
SPI通信有4種不同的通訊模式,不同的從設(shè)備可能在出廠時就配置為某種模式,這是不能改變的;但我們的通信雙方必須是工作在同一模式下,所以我們可以對我們的主設(shè)備的SPI模式進行配置,通過CPOL(時鐘極性)和CPHA(時鐘相位)來控制我們主設(shè)備的通信模式。
MOSI和MISO線在SCK的每個時鐘周期傳輸一位數(shù)據(jù),開發(fā)者可以自行設(shè)置MSB或LSB先行,不過需要保證兩個通訊設(shè)備都使用同樣的協(xié)定。
時鐘極性CPOL是用來配置SCK空閑狀態(tài)的電平,時鐘相位CPHA是用來配置數(shù)據(jù)采樣是在第幾個邊沿。
CPOL=0,表示當(dāng)SCK=0時處于空閑態(tài),所以有效狀態(tài)就是SCK處于高電平時; CPOL=1,表示當(dāng)SCK=1時處于空閑態(tài),所以有效狀態(tài)就是SCK處于低電平時; CPHA=0,表示數(shù)據(jù)采樣是在第1個邊沿,數(shù)據(jù)發(fā)送在第2個邊沿; CPHA=1,表示數(shù)據(jù)采樣是在第2個邊沿,數(shù)據(jù)發(fā)送在第1個邊沿;
CPOL和CPHA進行組合配置之后產(chǎn)生四種時序關(guān)系,也就是四種通訊模式。四種通訊模式文字描述如下:
CPOL=0,CPHA=0:此時空閑態(tài)時,SCK處于低電平,數(shù)據(jù)采樣是在第1個邊沿,也就是SCK由 低電平到高電平的跳變,所以數(shù)據(jù)采樣是在上升沿,數(shù)據(jù)發(fā)送是在下降沿。 CPOL=0,CPHA=1:此時空閑態(tài)時,SCK處于低電平,數(shù)據(jù)發(fā)送是在第1個邊沿,也就是SCK由 低電平到高電平的跳變,所以數(shù)據(jù)采樣是在下降沿,數(shù)據(jù)發(fā)送是在上升沿。 CPOL=1,CPHA=0:此時空閑態(tài)時,SCK處于高電平,數(shù)據(jù)采集是在第1個邊沿,也就是SCK由 高電平到低電平的跳變,所以數(shù)據(jù)采集是在下降沿,數(shù)據(jù)發(fā)送是在上升沿。 CPOL=1,CPHA=1:此時空閑態(tài)時,SCK處于高電平,數(shù)據(jù)發(fā)送是在第1個邊沿,也就是SCK由 高電平到低電平的跳變,所以數(shù)據(jù)采集是在上升沿,數(shù)據(jù)發(fā)送是在下降沿。
下面的表格是對上述描述的SPI四種通訊模式的總結(jié):
SPI模式 | CPOL | CPHA | SCK空閑時電平 | 數(shù)據(jù)采樣 | 數(shù)據(jù)發(fā)送 |
---|---|---|---|---|---|
0 | 0 | 0 | 低電平 | 第1個邊沿 | 第2個邊沿 |
1 | 0 | 1 | 低電平 | 第2個邊沿 | 第1個邊沿 |
2 | 1 | 0 | 高電平 | 第1個邊沿 | 第2個邊沿 |
3 | 1 | 1 | 高電平 | 第2個邊沿 | 第1個邊沿 |
模式0和模式3的差異主要是,模式0的SCK空閑電平是低電平,模式3的SCK空閑電平是高電平。因為模式0的SCK空閑電平是低電平,數(shù)據(jù)采樣發(fā)生在SCK的第1個邊沿,也就是SCK的上升沿,數(shù)據(jù)發(fā)送發(fā)生在SCK的第2個邊沿,也就是SCK的下降沿。同樣的因為模式3的SCK空閑電平是高電平,數(shù)據(jù)采樣發(fā)生在SCK的第2個邊沿,也就是SCK的上升沿,數(shù)據(jù)發(fā)送發(fā)生在SCK的第1個邊沿,也就是SCK的下降沿。
從上面一段文字,可以對模式0和模式3進行一個總結(jié):模式0和模式3的主要差異是SCK空閑電平的狀態(tài)不一樣,模式0的SCK空閑電平是低電平,模式3的SCK空閑電平是高電平;模式0和模式3都在SCK的上升沿進行數(shù)據(jù)采樣,在SCK的下降沿進行數(shù)據(jù)發(fā)送。
同樣的,可以對模式1和模式2進行一個總結(jié):模式1和模式2的主要差異是SCK空閑電平的狀態(tài)不一樣,模式1的SCK空閑電平是低電平,模式2的SCK空閑電平是高電平;模式1和模式2都在SCK的下降沿進行數(shù)據(jù)采樣,在SCK的上升沿進行數(shù)據(jù)發(fā)送。
審核編輯:劉清
-
EEPROM
+關(guān)注
關(guān)注
9文章
1020瀏覽量
81608 -
信號處理器
+關(guān)注
關(guān)注
1文章
254瀏覽量
25275 -
AD轉(zhuǎn)換器
+關(guān)注
關(guān)注
4文章
250瀏覽量
41420 -
SPI接口
+關(guān)注
關(guān)注
0文章
258瀏覽量
34383 -
IIC總線
+關(guān)注
關(guān)注
1文章
66瀏覽量
20304
原文標題:SPI總線協(xié)議-一篇文章帶你了解
文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論