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