SPI协议的介绍
學(xué)習(xí)內(nèi)容:
學(xué)習(xí)SPI協(xié)議記錄
學(xué)習(xí)清單:
提示:這里可以添加要學(xué)的內(nèi)容
例如:
學(xué)習(xí)詳細(xì)內(nèi)容:
1.SPI協(xié)議的介紹
SPI是串口外設(shè)接口(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通信總線,并且只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,越來越多的芯片集成了這種通信協(xié)議。
2.三根線還是四根線
SPI一般都是默認(rèn)4線制Motorola SPI協(xié)議,即有四根線,分別是:SCLK、MOSI、MISO和CS共4根數(shù)據(jù)線,標(biāo)準(zhǔn)4線制的好處是可以實(shí)現(xiàn)數(shù)據(jù)的全雙工傳輸,當(dāng)只有一個(gè)主機(jī)和一個(gè)從設(shè)備時(shí),只需要一個(gè)CS、多個(gè)從機(jī)需要多個(gè)CS。(CS片選信號有的也叫做SS線),多從機(jī)模式,通常每個(gè)從機(jī)需要一條單獨(dú)的SS線,如下圖所示:
CS是chip select,即從設(shè)備使能信號,由主設(shè)備控制。當(dāng)總線上有多個(gè)從設(shè)備時(shí),主設(shè)備如果需要和某個(gè)從設(shè)備通信,就將該設(shè)備的片選引腳拉低使能。
即通過指定使能NSS,就能與對應(yīng)的從機(jī)進(jìn)行通信。
以上圖中的4根線分別是:
- SCLK:Synchronous CLock,同步時(shí)鐘信號,時(shí)鐘頻率即SPI速率,和SPI模式有關(guān)
- MOSI:Master output slave input,主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入
- MISO:Master input slave output,主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出
- CS:chip select,從機(jī)設(shè)備選擇,低電平有效
3線制SPI,根據(jù)不同的應(yīng)用場景,主要有以下2中類型:
- 只有3根線:SCLK,MOSI和CS,沒有MISO數(shù)據(jù)線,適用于單工通訊,主機(jī)只發(fā)送或只接收從機(jī)的數(shù)據(jù)
- 只有3根線:SCLK,SDIO和CS,這里的SDIO作為雙向端口,適用于半雙工通訊,比如ADI的多款A(yù)DC芯片都支持雙向傳輸。
3.兩個(gè)概念四種模式
既然是要進(jìn)行數(shù)據(jù)的傳輸,雙方就要明確從機(jī)在什么時(shí)刻去采樣主機(jī)發(fā)出的數(shù)據(jù),主機(jī)在什么時(shí)刻去讀取從機(jī)發(fā)來的數(shù)據(jù)。
CPOL(Clock Polarity)時(shí)鐘的極性,規(guī)約了SPI總線在空閑時(shí),時(shí)鐘信號是高電平還是低電平;
- CPOL=0 表示時(shí)鐘空閑時(shí)為低電平
- CPOL=1 表示時(shí)鐘空閑時(shí)為高電平
CPHA(Clock Phase)時(shí)鐘的相位,規(guī)約SPI設(shè)備是在時(shí)鐘上升沿還是下降沿觸發(fā)數(shù)據(jù)采樣。
- CPHA=0 表示數(shù)據(jù)在SCLK時(shí)鐘上升沿被采樣,在SCLK時(shí)鐘下降沿切換(有的說法叫“在時(shí)鐘信號SCLK的第一個(gè)跳變沿采樣”)
- CPHA=1表示數(shù)據(jù)在SCLK時(shí)鐘下降沿被采樣,在SCLK時(shí)鐘上升沿切換(有的說法叫“在時(shí)鐘信號SCLK的第二個(gè)跳變沿采樣”)
時(shí)鐘極性和時(shí)鐘相位的不同組合,所以有了SPI總線傳輸?shù)?種模式
模式1:CPOL=0,CPHA=0
模式1的示例圖:即時(shí)鐘空閑時(shí)為低電平,在時(shí)鐘的上升沿被采樣,下降沿切換
模式2:CPOL=0,CPHA=1
模式3:CPOL=1,CPHA=0
模式4:CPOL=1,CPHA=1
其余三個(gè)模式也是同理
4.SPI時(shí)序圖
當(dāng)以模式1為工作模式時(shí):
先是將CS片選信號拉低,選中要通信的從設(shè)備,然后通過MOSI和MISO這兩根數(shù)據(jù)線進(jìn)行通信,MOSI數(shù)據(jù)線發(fā)出了0xD2這個(gè)數(shù)據(jù)給從設(shè)備,同時(shí)從設(shè)備也通過MISO線給主設(shè)備返回了0x66這個(gè)數(shù)據(jù)。由于SPI是全雙工的,所以讀寫時(shí)序可以一起完成。
5.SPI的優(yōu)缺點(diǎn)
SPI的優(yōu)勢
- 全雙工串行通信
- 高速數(shù)據(jù)傳輸速率
- 簡單的軟件配置
- 及其靈活的數(shù)據(jù)傳輸,不限于8位,它可以是任意大小的字
- 非常簡單的硬件結(jié)構(gòu),從站不需要唯一地址(與IIC不同),從機(jī)使用主機(jī)時(shí)鐘,不需要精密時(shí)鐘振蕩器/晶振(與UART不同),不需要收發(fā)器(與CAN不同)
SPI的缺點(diǎn)
- 沒有硬件從機(jī)應(yīng)答信號(主機(jī)可能在不知情的情況下無處發(fā)送)
- 通常僅支持一個(gè)主設(shè)備
- 需要更多的引腳(與IIC不同)
- 沒有定義硬件級別的錯(cuò)誤檢查協(xié)議
- 與RS-232與CAN總線相比,只能支持非常短的距離
6.SPI和IIC的對比
- SPI是全雙工,而IIC是半雙工
- IIC支持多主機(jī)多從機(jī),SPI只能有一個(gè)主機(jī)
- 從GPIO占用上來看,IIC占用更少的GPIO,更節(jié)省資源
- SPI的數(shù)據(jù)位寬更靈活,可以根據(jù)需要選擇多位數(shù)數(shù)據(jù)寬度
- SPI協(xié)議沒有響應(yīng)機(jī)制,主機(jī)無法得知從機(jī)是否接收到所發(fā)的數(shù)據(jù),如果不采用一些方法的話可能會導(dǎo)致數(shù)據(jù)丟幀
- 正是因?yàn)闆]有復(fù)雜的響應(yīng)機(jī)制,SPI協(xié)議可以做到非常高的速率,每一個(gè)SCLK都可以進(jìn)行數(shù)據(jù)的傳輸,通過引入CRC校驗(yàn)等校驗(yàn)方法,可以即高速傳輸數(shù)據(jù),又能保持?jǐn)?shù)據(jù)的準(zhǔn)確度。
- IIC通過期間地址來選擇從機(jī),從機(jī)數(shù)量的增加不會導(dǎo)致GPIO的增加,而SPI通過CS片選信號選擇從機(jī),每增加一個(gè)從機(jī)就要多占用一個(gè)GPIO,當(dāng)然也可以通過加入譯碼器來實(shí)現(xiàn)多從機(jī)控制
- 兩者大多數(shù)都應(yīng)用與板內(nèi)器件短距離通訊
學(xué)習(xí)資料:
參考資料1
參考資料2
參考資料3
總結(jié)
- 上一篇: 阿里云部署django项目流程【cent
- 下一篇: Hive的基本操作总结