91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于SPI通訊的精講 SPI協(xié)議的特點和工作機制

嵌入式應用開發(fā) ? 來源:嵌入式應用開發(fā) ? 作者:嵌入式應用開發(fā) ? 2022-05-08 19:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、SPI協(xié)議簡介

1.1 SPI協(xié)議概括

SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在 EEPROM,F(xiàn)LASH,實時時鐘AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,比如MSP430單片機系列處理器。

1.2 SPI優(yōu)點

1):支持全雙工通信

2):通信簡單

3):數(shù)據(jù)傳輸速率快

1.3 缺點
沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù),所以跟IIC總線協(xié)議比較在數(shù)據(jù)
可靠性上有一定的缺陷。

2、 特點

2.1 采用主-從模式(Master-Slave) 的控制方式

SPI 規(guī)定了兩個 SPI 設備之間通信必須由主設備 (Master) 來控制次設備 (Slave)。 一個 Master 設備可以通過提供 Clock 以及對 Slave 設備進行片選 (Slave Select) 來控制多個 Slave 設備,SPI 協(xié)議還規(guī)定 Slave 設備的 Clock 由 Master 設備通過 SCK 管腳提供給 Slave 設備, Slave 設備本身不能產生或控制 Clock,沒有 Clock 則 Slave 設備不能正常工作。

2.2 采用同步方式(Synchronous)傳輸數(shù)據(jù)

Master 設備會根據(jù)將要交換的數(shù)據(jù)來產生相應的時鐘脈沖(Clock Pulse),時鐘脈沖組成了時鐘信號(Clock Signal) ,時鐘信號通過時鐘極性 (CPOL) 和 時鐘相位 (CPHA) 控制著兩個 SPI 設備間何時數(shù)據(jù)交換以及何時對接收到的數(shù)據(jù)進行采樣,來保證數(shù)據(jù)在兩個設備之間是同步傳輸?shù)?/strong>。

pYYBAGJ3gy-AI_ZHAABsA60gq2c387.jpg

2.3 數(shù)據(jù)交換(Data Exchanges)

SPI 設備間的數(shù)據(jù)傳輸之所以又被稱為數(shù)據(jù)交換是因為 SPI 協(xié)議規(guī)定一個 SPI 設備不能在數(shù)據(jù)通信過程中僅僅只充當一個 "發(fā)送者(Transmitter)" 或者 "接收者(Receiver)"。在每個 Clock 周期內,SPI 設備都會發(fā)送并接收一個 bit 大小的數(shù)據(jù)(不管主設備好還是從設備),相當于該設備有一個 bit 大小的數(shù)據(jù)被交換了。一個 Slave 設備要想能夠接收到 Master 發(fā)過來的控制信號,必須在此之前能夠被 Master 設備進行訪問 (Access)。所以,Master 設備必須首先通過 SS/CS pin 對 Slave 設備進行片選, 把想要訪問的 Slave 設備選上。 在數(shù)據(jù)傳輸?shù)倪^程中,每次接收到的數(shù)據(jù)必須在下一次數(shù)據(jù)傳輸之前被采樣。如果之前接收到的數(shù)據(jù)沒有被讀取,那么這些已經接收完成的數(shù)據(jù)將有可能會被丟棄,導致 SPI 物理模塊最終失效。因此,在程序中一般都會在 SPI 傳輸完數(shù)據(jù)后,去讀取 SPI 設備里的數(shù)據(jù), 即使這些數(shù)據(jù)(Dummy Data)在我們的程序里是無用的(雖然發(fā)送后緊接著的讀取是無意義的,但仍然需要從寄存器中讀出來)。

2.5 SPI只有主模式和從模式之分

SPI沒有讀和寫的說法,因為實質上每次SPI是主從設備在交換數(shù)據(jù)。也就是說,你發(fā)一個數(shù)據(jù)必然會收到一個數(shù)據(jù);你要收一個數(shù)據(jù)必須也要先發(fā)一個數(shù)據(jù)。

3、 工作機制

3.1 概述

poYBAGJ3gy-ARK0nAABdZAogIIg413.jpg

上圖只是對 SPI 設備間通信的一個簡單的描述, 下面就來解釋一下圖中所示的幾個組件:

  • SSPBUF:泛指 SPI 設備里面的內部緩沖區(qū),一般在物理上是以 FIFO 的形式,保存?zhèn)鬏斶^程中的臨時數(shù)據(jù);
  • SSPSR:泛指 SPI 設備里面的移位寄存器,它的作用是根據(jù)設置好的數(shù)據(jù)位寬(bit-width) 把數(shù)據(jù)移入或者移出 SSPBUF;
  • Controller:泛指 SPI 設備里面的控制寄存器,可以通過配置它們來設置 SPI 總線的傳輸模式。

通常情況下,我們只需要對上圖所描述的四個管腳(pin) 進行編程即可控制整個 SPI 設備之間的數(shù)據(jù)通信:

  • SCK:主要的作用是 Master(主)設備往 Slave(從)設備傳輸時鐘信號, 控制數(shù)據(jù)交換的時機以及速率;
  • SS/CS:用于 Master(主)設備片選 Slave (從)設備,使被選中的 Slave(從)設備能夠被 Master(主)設備所訪問;
  • SDO/MOSI:在 Master(主)上面也被稱為 Tx-Channel,作為數(shù)據(jù)的出口,主要用于 SPI 設備發(fā)送數(shù)據(jù);
  • SDI/MISO:在 Master(主)上面也被稱為 Rx-Channel,作為數(shù)據(jù)的入口,主要用于SPI 設備接收數(shù)據(jù);

SPI 設備在進行通信的過程中,Master 設備和 Slave 設備之間會產生一個數(shù)據(jù)鏈路回環(huán)(Data Loop),就像上圖所畫的那樣, 通過 SDO 和 SDI 管腳, SSPSR 控制數(shù)據(jù)移入移出 SSPBUF,Controller 確定 SPI 總線的通信模式,SCK 傳輸時鐘信號。

SDI(數(shù)據(jù)輸入)、SDO(數(shù)據(jù)輸出)、SCK(時鐘)、CS(片選)

(1)、SDO/MOSI – 主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入;

(2)、SDI/MISO – 主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出;

(3)、SCK – 時鐘信號,由主設備產生;

(4)、CS/SS – 從設備使能信號,由主設備控制。當有多個從設備的時候,因為每個從設備上都有一個片選引腳接入到主設備機中,當我們的主設備和某個從設備通信時將需要將從設備對應的片選引腳電平拉低或者是拉高。

pYYBAGJ3gzCAc8-zAABiGJNvPUs575.jpg

3.2 SPI相關的縮寫或說法

SPI的極性Polarity和相位Phase,最常見的寫法是CPOLCPHA,不過也有一些其他寫法,簡單總結如下:

  • CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時鐘)極性
  • CKPHA (Clock Phase) = CPHA = PHA = Phase = (時鐘)相位
  • SCK=SCLK=SPI的時鐘
  • Edge=邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者下降沿(falling edge)對于一個時鐘周期內,有兩個edge,分別稱為:
  • Leading edge=前一個邊沿=第一個邊沿,對于開始電壓是1,那么就是1變成0的時候,對于開始電壓是0,那么就是0變成1的時候;
  • Trailing edge=后一個邊沿=第二個邊沿,對于開始電壓是1,那么就是0變成1的時候(即在第一次1變成0之后,才可能有后面的0變成1),對于開始電壓是0,那么就是1變成0的時候;

3.3 SPI總線的極性和相位

CPOL配置SPI總線的極性,CPHA配置SPI總線的相位。

3.3.1 SPI總線的極性

極性,會直接影響SPI總線空閑時的時鐘信號是高電平還是低電平。

CPOL = 1:表示空閑時是高電平;

CPOL = 0:表示空閑時是低電平。

由于數(shù)據(jù)傳輸往往是從跳變沿開始的,也就表示開始傳輸數(shù)據(jù)的時候,是下降沿還是上升沿。如下圖:

poYBAGJ3gzCAAourAABid430hVU004.jpg

3.3.2 SPI總線的相位

一個時鐘周期會有2個跳變沿。而相位,直接決定SPI總線從那個跳變沿開始采樣數(shù)據(jù)。

CPHA = 0:表示從第一個跳變沿開始采樣;

CPHA = 1:表示從第二個跳變沿開始采樣。

pYYBAGJ3gzCAXlP_AABFD8L2-hk301.jpg

至于跳變沿究竟是上升沿還是下降沿,這取決于 CPOL。記住, CPHA 只決定是哪個跳變沿采樣。

3.4 SPI總線傳輸?shù)乃姆N模式

CPOL 和 CPHA 的不同組合,形成了SPI總線的不同模式。

poYBAGJ3gzCAGT7KAAAnILvp2Nw470.jpg

時鐘極性CPOL是用來配置SCLK的電平出于哪種狀態(tài)時是空閑態(tài)或者有效態(tài),時鐘相位CPHA
是用來配置數(shù)據(jù)采樣是在第幾個邊沿:
CPOL=0,表示當SCLK=0時處于空閑態(tài),所以有效狀態(tài)就是SCLK處于高電平時。
CPOL=1,表示當SCLK=1時處于空閑態(tài),所以有效狀態(tài)就是SCLK處于低電平時。
CPHA=0,表示數(shù)據(jù)采樣是在第1個邊沿,數(shù)據(jù)發(fā)送在第2個邊沿。
CPHA=1,表示數(shù)據(jù)采樣是在第2個邊沿,數(shù)據(jù)發(fā)送在第1個邊沿。

例如:
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ā)送是在下降沿。

pYYBAGJ3gzCAYAfLAAECKXAh6zw827.jpgpoYBAGJ3gzCAalErAACNrCmseMA588.jpg

需要注意的是:我們的主設備能夠控制時鐘,因為SPI通信并不像UART或者IIC通信那樣有專門的通信周期,有專門的通信起始信號,有專門的通信結束信號;所以SPI協(xié)議能夠通過控制時鐘信號線,當沒有數(shù)據(jù)交流的時候我們的時鐘線要么是保持高電平要么是保持低電平。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1885

    瀏覽量

    101225
  • SPI協(xié)議
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8834
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Java的SPI機制詳解

    作者:京東物流 楊葦葦 1.SPI簡介 SPI(Service Provicer Interface)是Java語言提供的一種接口發(fā)現(xiàn)機制,用來實現(xiàn)接口和接口實現(xiàn)的解耦。簡單來說,就是系統(tǒng)只需要定義
    的頭像 發(fā)表于 03-05 11:35 ?1353次閱讀
    Java的<b class='flag-5'>SPI</b><b class='flag-5'>機制</b>詳解

    SPI是什么?SPI特點有哪些呢

    SPI是什么?SPI特點有哪些呢?STM32的SPI工作機制有哪些呢?
    發(fā)表于 11-03 07:14

    探討一下SPI通訊協(xié)議

    來到SPI通訊協(xié)議了。廢話兩句,“SPI很重要”,這是我在學校時候聽那些單片機開發(fā)工程師說的。出來實習,到后來工作,確實如此,
    發(fā)表于 02-17 07:30

    基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法

    基于SPI協(xié)議的SD卡讀寫機制與實現(xiàn)方法。
    發(fā)表于 03-25 11:21 ?27次下載
    基于<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>的SD卡讀寫<b class='flag-5'>機制</b>與實現(xiàn)方法

    軟件模擬SPI協(xié)議

    軟件模擬SPI協(xié)議什么是SPISPI的通訊模式通訊協(xié)議詳細程序簡寫程序結語最近在學習51單片機的內容,為了防止自己學過就忘,在這里寫一些平時
    發(fā)表于 12-22 19:14 ?14次下載
    軟件模擬<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>

    SPI協(xié)議

    目錄SPI協(xié)議簡介SPI物理層SPI協(xié)議SPI協(xié)議
    發(fā)表于 12-22 19:17 ?37次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>

    SPI通訊協(xié)議介紹

    來到SPI通訊協(xié)議了。廢話兩句,“SPI很重要”,這是我在學校時候聽那些單片機開發(fā)工程師說的。出來實習,到后來工作,確實如此,
    發(fā)表于 12-22 19:18 ?11次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>通訊</b><b class='flag-5'>協(xié)議</b>介紹

    SPI通信協(xié)議講解

    SPI通信協(xié)議講解SPI通信概念SPI通信SPI 物理層協(xié)議
    發(fā)表于 12-22 19:19 ?26次下載
    <b class='flag-5'>SPI</b>通信<b class='flag-5'>協(xié)議</b>講解

    spi協(xié)議介紹

    文章目錄前言一、SPI介紹1.SPI總線2.尋址方式二、通信原理1.通信過程2.極性和相位3.四種工作模式三、SPI與I2C的異同1.相同點2.不同點總結前言
    發(fā)表于 12-22 19:21 ?19次下載
    <b class='flag-5'>spi</b><b class='flag-5'>協(xié)議</b>介紹

    SPI通訊協(xié)議必備知識。

    SPI被廣泛地使用在 ADC、LCD 等設備與 MCU 間,要求通訊速率較高的場合,也是學習STM32必需要掌握的知識。...
    發(fā)表于 12-22 19:21 ?13次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>通訊</b><b class='flag-5'>協(xié)議</b>必備知識。

    FPGA實現(xiàn)的SPI協(xié)議(一)----SPI驅動

    1、什么是SPI協(xié)議SPI(Serial Peripheral Interface,串行外圍設備接口)通訊協(xié)議,是 Motorola 公司提
    發(fā)表于 12-22 19:29 ?19次下載
    FPGA實現(xiàn)的<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>(一)----<b class='flag-5'>SPI</b>驅動

    STM32入門(二十六)----SPI—讀寫串行FLASH

    SPI—讀寫串行FLASHSPI協(xié)議SPI物理層的特點SPI協(xié)議
    發(fā)表于 12-29 19:35 ?4次下載
    STM32入門(二十六)----<b class='flag-5'>SPI</b>—讀寫串行FLASH

    一文看懂SPI協(xié)議

    作者:王超首發(fā):電子電路開發(fā)學習都有哪些內容?SPI協(xié)議簡介4線還是3線?4種工作模式多種傳輸速率SPI協(xié)議的時序
    發(fā)表于 01-25 18:35 ?38次下載
    一文看懂<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>

    什么是SPI機制

    1、前言 在之前的 JVM 分析系列之類加載 提到過 Java SPI 機制,主要是類加載器反雙親委派的實現(xiàn)(第三方包不在指定jdk路徑,一般類加載器無法加載,需要特殊
    的頭像 發(fā)表于 10-08 15:03 ?2303次閱讀
    什么是<b class='flag-5'>SPI</b><b class='flag-5'>機制</b>