1、什么是SPI?SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是 Motorola 公司推出的一種同步串行接口技術(shù),是一種高速、全雙工、同步的通信總線。2、SPI優(yōu)點支持全雙工通信
通信簡單
數(shù)據(jù)傳輸速率塊
3、缺點沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù),所以跟IIC總線協(xié)議比較在數(shù)據(jù)可靠性上有一定的缺陷。
4、特點
(1):高速、同步、全雙工、非差分、總線式
(2):主從機通信模式5、SPI電路連接
(1):SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,有三線制和四線制之分。信號線包括SDI(串行數(shù)據(jù)輸入 Serial Digital IN)、SDO(串行數(shù)據(jù)輸出 Serial Digital OUT)、SCLK(時鐘)、CS(片選)。
(2):SDO/MOSI – 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入
(3):SDI/MISO – 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出
(4):SCLK – 時鐘信號,由主設(shè)備產(chǎn)生;(5):CS/SS – 從設(shè)備使能信號,由主設(shè)備控制。當(dāng)有多個從設(shè)備的時候,因為每個從設(shè)備上都有一個片選引腳接入到主設(shè)備機中,當(dāng)主設(shè)備和某個從設(shè)備通信時將需要將從設(shè)備對應(yīng)的片選引腳電平拉低(一般低有效)。
6、SPI通信模式分析SPI通信有4種不同的模式,不同的從設(shè)備在出廠時配置模式已經(jīng)固定, 這是不能改變的,但通信雙方設(shè)備必須工作在同一模式下,所以可以對主設(shè)備的SPI模式進行配置,通過CPOL(時鐘極性)和CPHA(時鐘相位)來控制主設(shè)備的通信模式。 具體模式具體如下:
:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1
模式 | CPOL | CPHA |
---|---|---|
Mode0 | 0 | 0 |
Mode1 | 0 | 1 |
Mode2 | 1 | 0 |
Mode3 | 1 | 1 |
時鐘極性CPOL是用來配置SCLK電平的有效態(tài)的;
時鐘相位CPHA是用來配置數(shù)據(jù)采樣是發(fā)生在第幾個邊沿的。 CPOL=0表示當(dāng)SCLK=0時處于空閑態(tài),所以SCLK處于高電平時有效;
CPOL=1表示當(dāng)SCLK=1時處于空閑態(tài),所以SCLK處于低電平時有效;
CPHA=0表示數(shù)據(jù)采樣是在第1個邊沿,數(shù)據(jù)發(fā)送在第2個邊沿;
CPHA=1表示數(shù)據(jù)采樣是在第2個邊沿,數(shù)據(jù)發(fā)送在第1個邊沿; SPI主模塊和與之通信的外設(shè)通信時,兩者的時鐘相位和極性應(yīng)該保持一致。7、SPI 時序詳解CPOL=0,CPHA=0:此時空閑態(tài)時,SCLK處于低電平,數(shù)據(jù)采樣是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數(shù)據(jù)采樣是在上升沿,數(shù)據(jù)發(fā)送是在下降沿。 CPOL=0,CPHA=1:此時空閑態(tài)時,SCLK處于低電平,數(shù)據(jù)發(fā)送是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數(shù)據(jù)采樣是在下降沿,數(shù)據(jù)發(fā)送是在上升沿。 CPOL=1,CPHA=0:此時空閑態(tài)時,SCLK處于高電平,數(shù)據(jù)采集是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數(shù)據(jù)采集是在下降沿,數(shù)據(jù)發(fā)送是在上升沿。 CPOL=1,CPHA=1:此時空閑態(tài)時,SCLK處于高電平,數(shù)據(jù)發(fā)送是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數(shù)據(jù)采集是在上升沿,數(shù)據(jù)發(fā)送是在下降沿。
注意:SPI主設(shè)備能夠控制時鐘信號,因為SPI通信并不像UART或者IIC通信那樣有專門的通信周期、通信起始信號、通信結(jié)束信號;所以SPI協(xié)議只能通過控制時鐘信號線,在沒有數(shù)據(jù)交流的時候,時鐘線要么是保持高電平,要么是保持低電平。 例如:工作在模式0這種時序(CPOL=0,CPHA=0),如下:
我們來關(guān)注SCK的第一個時鐘周期,在時鐘的前沿采樣數(shù)據(jù)(上升沿,第一個時鐘沿),在時鐘的后沿輸出數(shù)據(jù)(下降沿,第二個時鐘沿)。首先來看主器件,主器件的輸出口(MOSI)輸出的數(shù)據(jù)bit1,在時鐘的前沿被從器件采樣,那主器件是在何時刻輸出bit1的呢?bit1的輸出時刻實際上在SCK信號有效以前,比SCK的上升沿還要早半個時鐘周期。
bit1的輸出時刻與SSEL信號沒有關(guān)系。再來看從器件,主器件的輸入口MISO同樣是在時鐘的前沿采樣從器件輸出的bit1的,那從器件又是在何時刻輸出bit1的呢。從器件是在SSEL信號有效后,立即輸出bit1,盡管此時SCK信號還沒有起效。 從這張圖就可以很清楚的看出主從器件的bit1是怎樣輸出的。
編輯:jq
-
SPI
+關(guān)注
關(guān)注
17文章
1721瀏覽量
92124 -
IIC
+關(guān)注
關(guān)注
11文章
302瀏覽量
38504 -
SCK
+關(guān)注
關(guān)注
0文章
7瀏覽量
16188 -
miso
+關(guān)注
關(guān)注
0文章
7瀏覽量
5446
原文標(biāo)題:SPI怎么玩?搞懂時序,運用自如
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
零死角玩轉(zhuǎn)STM32F103—指南者
ADS1118 spi通信時序的問題誰來解答一下
LPC1768用仿SPI的時序去驅(qū)動ADS1248,轉(zhuǎn)換不對是哪里的問題?
把DAC8803的LDAC管腳接地,其他SPI時序正常,DAC可以正常工作嗎?
DAC7568按數(shù)據(jù)手冊上要求的SPI時序不能配置,內(nèi)部參考是否也沒有輸出,為什么?
KeyStone架構(gòu)串行外設(shè)接口(SPI)手冊
ADS9224R使用SPI常規(guī)模式,讀數(shù)據(jù)無返回,請問具體的讀數(shù)據(jù)的時序應(yīng)該是怎樣的?
請問下DAC1282的SPI時序是CPOL=0,CPHA=0嗎?
瀚海微SD NAND之SD 協(xié)議(42)SPI總線時序
![瀚海微SD NAND之SD 協(xié)議(42)<b class='flag-5'>SPI</b>總線<b class='flag-5'>時序</b>](https://file1.elecfans.com/web2/M00/0A/C3/wKgaomcVuZ2AaejkAACY5bkLVI4604.png)
玩轉(zhuǎn)TI MSP430 LaunchPad
![<b class='flag-5'>玩轉(zhuǎn)</b>TI MSP430 LaunchPad](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
電源時序器的原理及使用方法是什么
PCB阻抗設(shè)計12問,輕松帶你搞懂阻抗!
手把手帶你移植HAL庫函數(shù)
![手把手<b class='flag-5'>帶你</b>移植HAL庫函數(shù)](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
想搞懂通信協(xié)議?先來看一篇SPI熱熱身
![想<b class='flag-5'>搞懂</b>通信協(xié)議?先來看一篇<b class='flag-5'>SPI</b>熱熱身](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
評論