精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-05-08 19:55 ? 次閱讀

1、SPI協議簡介

1.1 SPI協議概括

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

1.2 SPI優點

1):支持全雙工通信

2):通信簡單

3):數據傳輸速率快

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

2、 特點

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

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

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

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

pYYBAGJ3gy-AI_ZHAABsA60gq2c387.jpg

2.3 數據交換(Data Exchanges)

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

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

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

3、 工作機制

3.1 概述

poYBAGJ3gy-ARK0nAABdZAogIIg413.jpg

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

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

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

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

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

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

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

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

(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:表示空閑時是低電平。

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

poYBAGJ3gzCAAourAABid430hVU004.jpg

3.3.2 SPI總線的相位

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

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

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

pYYBAGJ3gzCAXlP_AABFD8L2-hk301.jpg

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

3.4 SPI總線傳輸的四種模式

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

poYBAGJ3gzCAGT7KAAAnILvp2Nw470.jpg

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

例如:
CPOL=0,CPHA=0:此時空閑態時,SCLK處于低電平,數據采樣是在第1個邊沿,也就是
SCLK由低電平到高電平的跳變,所以數據采樣是在上升沿,數據發送是在下降沿。

CPOL=0,CPHA=1:此時空閑態時,SCLK處于低電平,數據發送是在第1個邊沿,也就是
SCLK由低電平到高電平的跳變,所以數據采樣是在下降沿,數據發送是在上升沿。

CPOL=1,CPHA=0:此時空閑態時,SCLK處于高電平,數據采集是在第1個邊沿,也就是
SCLK由高電平到低電平的跳變,所以數據采集是在下降沿,數據發送是在上升沿。

CPOL=1,CPHA=1:此時空閑態時,SCLK處于高電平,數據發送是在第1個邊沿,也就是
SCLK由高電平到低電平的跳變,所以數據采集是在上升沿,數據發送是在下降沿。

pYYBAGJ3gzCAYAfLAAECKXAh6zw827.jpgpoYBAGJ3gzCAalErAACNrCmseMA588.jpg

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

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

    關注

    17

    文章

    1700

    瀏覽量

    91320
  • SPI協議
    +關注

    關注

    0

    文章

    18

    瀏覽量

    8356
收藏 人收藏

    評論

    相關推薦

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

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

    探討一下SPI通訊協議

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

    基于SPI協議的SD卡讀寫機制與實現方法

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

    軟件模擬SPI協議

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

    SPI協議

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

    SPI通訊協議介紹

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

    SPI通信協議講解

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

    spi協議介紹

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

    SPI通訊協議必備知識。

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

    FPGA實現的SPI協議(一)----SPI驅動

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

    STM32學習筆記(15)——SPI協議

    STM32學習筆記(15)——SPI協議一、SPI協議簡介1. 物理層2. 協議層(1) 通訊
    發表于 12-22 19:34 ?16次下載
    STM32學習筆記(15)——<b class='flag-5'>SPI</b><b class='flag-5'>協議</b>

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

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

    一文看懂SPI協議

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

    什么是SPI機制

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