新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 全雙工,同步傳輸的SPI通訊原理是如何工作的?

        全雙工,同步傳輸的SPI通訊原理是如何工作的?

        作者:電子電路設計 時間:2024-04-22 來源:今日頭條 收藏

        概念

        本文引用地址:http://www.104case.com/article/202404/457895.htm

        (Serial Peripheral interface, 串行外設接口)是微處理控制單元(MCU)和外圍IC(如傳感器、ADC、DAC、驅動芯片和外部存儲設備等)之間進行通信的同步串行端口,其通信速率一般可以從幾千bps到幾百Mbps甚至更高, 具體的通信速率取決于主設備和從設備的規格和性能,以及他們之間的協商和支持能力。


        Source:An Introduction to SPI Communications Protocol

        SPI是一種全雙工,同步,主從式接口,涉及兩個主要角色:主設備(Master)和從設備(Slave)。SPI接口可以是3線式或4線式,這里重點介紹常用的4線SPI接口。4線SPI接口有四個信號:時鐘信號(SCLK),片選信號(SS/CS),主設備輸出從設備輸入信號(MOSI)和主設備輸入從設備輸出信號(MISO),如下所示:


        Source: SPI Protocol - Serial Peripheral Interface - javatpoint

        其中,

        SCLK(Serial Clock):時鐘信號線,由主設備提供,用于同步數據傳輸。

        MOSI(Master Out, Slave In):主設備輸出,從設備輸入,用于主設備向從設備發送數據。

        MISO(Master In, Slave Out):主設備輸入,從設備輸出,用于從設備向主設備發送數據。

        SS(Slave Select):從設備選擇信號線,由主設備控制,用于選擇要與主設備通信的從設備。

        SPI原理

        利用四線SPI接口可以構建不同SPI模式(拓撲方式),比如單主單從,單主多從和菊花鏈等模式,接下來就結合不同SPI模式來分別介紹SPI工作原理。

        1)單主單從模式

        單主單從模式,即主設備的SCLK、MOSI和MISO連接到從設備的相應引腳。從設備與主設備之間只有一組SCLK、MOSI和MISO線連接,如下所示:


        Source: Basics of the SPI Communication Protocol (circuitbasics.com)

        其基本原理是:

        首先是時鐘同步,主設備產生SCLK,控制數據傳輸的時序。時鐘信號由主設備提供,并在主設備和從設備之間同步傳輸。


        Source: Basics of the SPI Communication Protocol

        然后是片選信號,主設備將SS/CS引腳切換到低電壓狀態,從而激活了從設備。


        Source: Basics of the SPI Communication Protocol

        最后是數據傳輸過程,主設備通過MOSI線向從設備發送數據。從設備接收到數據后,將其通過MISO線傳輸給主設備。主設備和從設備之間的數據傳輸是同時進行的。


        Source: Introduction to SPI Interface | Analog Devices

        2)單主多從模式

        單主多從模式,即主設備的SCLK和MOSI連接到每個從設備的相應引腳,從設備的MISO連接到主設備的MISO引腳,每個從設備有獨立的SS引腳與主設備連接,主設備通過選擇SS來選擇要與之通信的從設備。


        Source: Basics of the SPI Communication Protocol

        其基本原理與單主單從模式的幾乎相同,唯一區別是當某個從設備的SS處于低電平時,該從設備與主設備進行通信,其他從設備的SS處于高電平狀態。

        3)菊花鏈模式

        菊花鏈模式,即主設備的MOSI和SCLK連接到第一個從設備的MOSI和SCLK。從第一個從設備的MISO連接到第二個從設備的MOSI,以此類推,直到最后一個從設備的MISO。


        Source: Basics of the SPI Communication Protocol

        其工作原理是:

        首先,主設備提供SCLK,控制數據傳輸的時序。時鐘信號由主設備產生,并在整個菊花鏈中進行傳遞,從設備根據時鐘信號的邊沿進行數據的傳輸和接收。

        然后,主設備通過MOSI線將數據發送到第一個從設備,第一個從設備接收到數據后,將其通過MISO線傳輸給第二個從設備,這樣,數據從一個從設備級聯傳輸到下一個從設備,直到傳輸到最后一個從設備。

        每個從設備都需要有一個獨立的SS,主設備通過控制相應的SS選擇要與之通信的從設備,只有被選中的從設備才會響應主設備的數據傳輸。

        在菊花鏈模式下,當數據從一個從設備傳播到下一個從設備時,傳輸數據所需的時鐘周期數量與從設備在菊花鏈中的位置成正比。在一個8位系統中,第3個從設備上的數據需要24個時鐘脈沖,而在常規的SPI模式中只需要8個時鐘脈沖,下圖顯示了通過菊花鏈傳播的時鐘周期和數據。


        Source: Introduction to SPI Interface | Analog Devices

        SPI核心思想

        SPI的核心思想是,每個設備都有一個移位寄存器,它可以用來發送或接收一個字節的數據。這兩個移位寄存器以環形方式連接在一起,一個寄存器的輸出到另一個寄存器的輸入,反之亦然。主設備控制共同的時鐘信號,確保每個寄存器在另一個寄存器移出一個比特時,正好移入一個比特。


        Source: What Could Go Wrong: SPI | Hackaday

        SPI數據傳輸

        4.1采樣和移位

        根據上面內容可知SPI通信,主設備必須發送SCLK信號,并通過使能SS信號(低電平)選擇從設備。然后主設備和從設備可以分別通過MOSI和MISO線路同時發送數據。在SPI通信期間,數據的發送(串行移出到MOSI/SDO總線上,即移位)和接收(采樣或讀入總線(MISO/SDI)上的數據,即采樣)同時進行。

        > Sample(采樣)

        采樣是指主設備或從設備在時鐘的上升沿或下降沿時讀取數據位的操作。采樣的目的是在合適的時機獲取正確的數據位,以確保數據的準確傳輸。

        > Shift(移位)

        移位是指數據位從發送器移動到接收器的過程,以實現數據的傳輸。移位是SPI通信中的關鍵步驟之一,確保數據的逐位傳輸和同步。

        4.2時鐘極性和時鐘相位

        具體何時進行采樣和移位操作,可以通過設置時鐘極性和時鐘相位來實現。

        > 時鐘極性(Clock Polarity,CPOL)

        在空閑狀態期間,CPOL位設置時鐘信號的極性。

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

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

        空閑狀態是指傳輸開始時CS為高電平且在向低電平轉變的期間,以及傳輸結束時CS為低電平且在向高電平轉變的期間,如下所示:

        > 時鐘相位(Clock Phase,CPHA)

        CPHA位選擇時鐘相位。根據CPHA位的狀態,使用時鐘上升沿或下降沿來采樣和/或移位數據。

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

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

        主設備必須根據從設備的要求選擇時鐘極性和時鐘相位,根據上述CPOL和CPHA位的選擇,有四種SPI模式可用,如下所示:

        SPI模式

        CPOL

        CPHA

        空閑狀態

        采樣,移位

        0

        0

        0

        低電平

        采樣上升沿,移位下降沿

        1

        0

        1

        低電平

        采樣下降沿,移位上升沿

        2

        1

        0

        高電平

        采樣下降沿,移位上升沿

        3

        1

        1

        高電平

        采樣上升沿,移位下降沿


        對應到數據位,以CPOL = 0,CPHA = 0為例,綠色虛線表示片選使能,橙色虛線表示采樣,藍色虛線表示移位,如下所示:


        Source: Introduction to SPI Interface | Analog Devices

        4.3傳輸位序

        先發送高bit(MSB),還是先發送低bit(LSB)。如下圖所示,若采用MSB first,那么MOSI發送的數據為01000011, 即0x43。


        Source: Basics of the SPI Communication Protocol

        若采用LSB first,那么MISO接收到0x43后,發送形式如下所示:


        Source: Basics of the SPI Communication Protocol

        4.4 數據長度

        注意上面的各圖演示的都是傳輸8位數據,實際上SPI可以根據設備所支持的情況傳輸不同位數的數據,比如Aurix TC2xx系列最高支持32位數據傳輸。


        總的來說,SPI數據傳輸取決于具體配置,選取哪種模式,何時采樣,數據有多少位,是MSB還是LSB first,當然除此之外,實際實現這個功能還需要考慮更多因素。




        關鍵詞: SPI

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 芦溪县| 洪湖市| 汤阴县| 十堰市| 芦溪县| 新闻| 塔河县| 盐池县| 吴川市| 宾川县| 清河县| 镇平县| 浮梁县| 南岸区| 西峡县| 保康县| 原阳县| 安远县| 镇江市| 巨野县| 北安市| 藁城市| 金川县| 花垣县| 四平市| 历史| 益阳市| 应用必备| 克拉玛依市| 安徽省| 四平市| 沙坪坝区| 巴彦县| 修文县| 霸州市| 长宁区| 博罗县| 邻水| 辽阳市| 黄山市| 崇明县|