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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

超全面!SPI通信協(xié)議詳解,一篇就夠

億佰特物聯(lián)網(wǎng)應(yīng)用專(zhuān)家 ? 2022-09-30 10:18 ? 次閱讀

什么是SPI?

SPI的英文全稱(chēng)為Serial Peripheral Interface,顧名思義為串行外設(shè)接口。SPI是一種同步串行通信接口規(guī)范,主要應(yīng)用于嵌入式系統(tǒng)中的短距離通信。該接口由摩托羅拉在20世紀(jì)80年代中期開(kāi)發(fā),后發(fā)展成了行業(yè)規(guī)范。

SPI簡(jiǎn)介?

SPI是一種高速的、全雙工的、同步的通信總線,并且至多僅需使用4根線,節(jié)約了芯片的管腳,SPI主要應(yīng)用于EEPROM、FLASH、ADCDAC等芯片,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI設(shè)備之間采用全雙工模式通信,是一個(gè)主機(jī)和一個(gè)或者多個(gè)從機(jī)的主從模式。主機(jī)負(fù)責(zé)初始化幀,這個(gè)數(shù)據(jù)傳輸幀可以用于讀與寫(xiě)兩種操作,片選線可以從多個(gè)從機(jī)選擇一個(gè)來(lái)響應(yīng)主機(jī)的請(qǐng)求。SPI接口定義如下表:2bc848c2-4031-11ed-b180-dac502259ad0.png由上表也可以看出當(dāng)SPI設(shè)備間通信時(shí),數(shù)據(jù)線應(yīng)該是MOSI連接MOSI,MISO連接MISO,SCLK與SCLK相連,而不是像串口那樣TX、RX進(jìn)行反接。當(dāng)只有單一SPI從機(jī)設(shè)備時(shí),如果從機(jī)設(shè)備允許的話,可直接將CS/SS線固定在低電平。然而類(lèi)似于MAX1242這款需要CS/SS線的下降沿來(lái)觸發(fā)的芯片,則必須將CC/SS線與主機(jī)相連。如下圖,為一主一從連接方式。
2bd8d390-4031-11ed-b180-dac502259ad0.png對(duì)于多個(gè)從機(jī)設(shè)備時(shí),則每個(gè)從機(jī)都需要一根CS/SS線來(lái)與主機(jī)相連,從而達(dá)到主機(jī)能與任一從機(jī)通信的目的。如下圖,為一主多從的連接方式。2be4fe90-4031-11ed-b180-dac502259ad0.png大多數(shù)從機(jī)設(shè)備都有著三態(tài)邏輯的特性,因此當(dāng)設(shè)備未被選中時(shí),它們的MISO信號(hào)線會(huì)變成高阻抗?fàn)顟B(tài)(電氣斷開(kāi))。沒(méi)有三態(tài)輸出的設(shè)備則需外接三態(tài)緩沖器才能與其他的從機(jī)設(shè)備共享SPI總線。

數(shù)據(jù)傳輸

在SPI通信中,SPI主機(jī)設(shè)備以從機(jī)設(shè)備支持的頻率通過(guò)SCLK線給到SPI從機(jī)設(shè)備,這點(diǎn)也意味著從機(jī)是無(wú)法主動(dòng)向主機(jī)發(fā)送數(shù)據(jù)的,只能主機(jī)輪詢(xún)向從機(jī)發(fā)或者從機(jī)設(shè)備主動(dòng)通過(guò)一個(gè)IO口來(lái)告知主機(jī)數(shù)據(jù)到達(dá)。在SPI每個(gè)時(shí)鐘周期內(nèi),都會(huì)進(jìn)行一次全雙工數(shù)據(jù)的傳輸。主機(jī)通過(guò)MOSI線上發(fā)送1bit時(shí),從機(jī)也會(huì)在讀取到之后通過(guò)MISO線發(fā)送1bit數(shù)據(jù)出去。這說(shuō)明,即使只進(jìn)行單工通信,也會(huì)保持此通信順序。SPI傳輸通常涉及到兩個(gè)給定了字長(zhǎng)的移位寄存器。例如在主機(jī)、從機(jī)中的8bit的移位寄存器。它們以虛擬環(huán)形拓?fù)溥B接,數(shù)據(jù)通常先從最高有效位被移出。在時(shí)鐘沿,主機(jī)和從機(jī)都移出1bit數(shù)據(jù)從傳輸線上給到對(duì)方。在下一個(gè)時(shí)鐘邊沿來(lái)到時(shí),雙方的接收器再對(duì)傳輸線上的該bit進(jìn)行采樣,并將其設(shè)置為移位寄存器的新的最低有效位。在寄存器位被移出和移入后,主機(jī)和從機(jī)交換了寄存器值。如果需要交換更多數(shù)據(jù),則重新加載移位寄存器并重復(fù)該過(guò)程。傳輸可以持續(xù)任意數(shù)量的時(shí)鐘周期。完成后,主機(jī)停止切換時(shí)鐘信號(hào)。如下圖,為主從機(jī)之間的交互時(shí)的移位寄存器示意圖。2bf68afc-4031-11ed-b180-dac502259ad0.png其中上圖的通信流程如下:
1.SPI主機(jī)首先現(xiàn)將SS或CS線拉低,以此來(lái)告知SPI從機(jī)通信開(kāi)始。2.主機(jī)通過(guò)發(fā)送SCLK時(shí)鐘信號(hào),來(lái)告知從機(jī)即將進(jìn)行的讀寫(xiě)操作。這里的SCLK時(shí)鐘信號(hào)是由SPI的模式來(lái)決定是高電平還是低電平有效的,這點(diǎn)在稍后會(huì)進(jìn)行介紹。3.主機(jī)(Master)將要發(fā)送的數(shù)據(jù)寫(xiě)到發(fā)送數(shù)據(jù)緩存區(qū)(Memory),緩存區(qū)經(jīng)過(guò)移位寄存器(0~7),串行移位寄存器通過(guò)MOSI信號(hào)線將字節(jié)一位一位的移出去傳送給從機(jī),同時(shí)MISO接口接收到的數(shù)據(jù)經(jīng)過(guò)移位寄存器一位一位的移到接收緩存區(qū)。4.從機(jī)(Slave)也將自己的串行移位寄存器(0~7)中的內(nèi)容通過(guò)MISO信號(hào)線返回給主機(jī)。同時(shí)通過(guò)MOSI信號(hào)線接收主機(jī)發(fā)送的數(shù)據(jù),這樣,兩個(gè)移位寄存器中的內(nèi)容就被交換。

SPI通信的4種工作模式

SPI通信中有4種不同的操作模式,不同的從機(jī)設(shè)備可能在出廠時(shí)就被設(shè)置好了某種模式,并且無(wú)法更改。但是SPI通信必須處于同一種模式下才能進(jìn)行。因此我們應(yīng)該對(duì)自己手里的SPI主機(jī)設(shè)備進(jìn)行模式的配置,也就是通過(guò)CPOL(時(shí)鐘極性)和CPHA(時(shí)鐘相位)來(lái)控制SPI主設(shè)備的通信模式,具體如下:時(shí)鐘極性(CPOL)定義了SCLK時(shí)鐘線空閑狀態(tài)時(shí)的電平:1.CPOL=0,即SCLK=0,表示SCLK時(shí)鐘信號(hào)線在空閑狀態(tài)時(shí)的電平為低電平,因此有效狀態(tài)為高電平。2.CPOL=1,即SCLK=1,表示SCLK時(shí)鐘信號(hào)線在空閑狀態(tài)時(shí)的電平為高電平,因此有效狀態(tài)為低電平。時(shí)鐘相位(CPHA)定義了數(shù)據(jù)位相對(duì)于時(shí)鐘線的時(shí)序(即相位):1.CPHA=0,即表示輸出(out)端在上一個(gè)時(shí)鐘周期的后沿改變數(shù)據(jù),而輸入(in)端在時(shí)鐘周期的前沿(或不久之后)捕獲數(shù)據(jù)。輸出端保持?jǐn)?shù)據(jù)有效直到當(dāng)前時(shí)鐘周期的尾部邊緣。對(duì)于第一個(gè)時(shí)鐘周期來(lái)說(shuō),第一位的數(shù)據(jù)必須在時(shí)鐘前沿之前出現(xiàn)在MOSI線上。也就是一個(gè)CPHA=0的周期包括半個(gè)時(shí)鐘空閑和半個(gè)時(shí)鐘置位的周期。2.CPHA=1,即表示輸出(out)端在當(dāng)前時(shí)鐘周期的前沿改變數(shù)據(jù),而輸入(in)端在時(shí)鐘周期的后沿(或不久之后)捕獲數(shù)據(jù)。輸出端保持?jǐn)?shù)據(jù)有效直到下一個(gè)時(shí)鐘周期的前沿。對(duì)于最后一個(gè)時(shí)鐘周期來(lái)說(shuō),從機(jī)設(shè)備在片選信號(hào)消失之前保持MISO信號(hào)線有效。也就是一個(gè)CHPA=1的周期包括半個(gè)時(shí)鐘置位和半個(gè)時(shí)鐘空閑的周期。注意:此處的前沿和后沿的意思表示在每個(gè)周期中第一個(gè)出現(xiàn)的邊沿和最后一個(gè)出現(xiàn)的邊沿。總的來(lái)說(shuō)則為:當(dāng)時(shí)鐘為正向時(shí)鐘時(shí),時(shí)鐘線的上升沿為前沿,時(shí)鐘的下降沿為后沿,反之。如下表,為SPI通信的4種模式:2c0eae2a-4031-11ed-b180-dac502259ad0.png下圖顯示了時(shí)鐘極性和相位的時(shí)序圖。紅線表示時(shí)鐘的前沿,藍(lán)線表示時(shí)鐘的后沿。
2c209e64-4031-11ed-b180-dac502259ad0.png

SPI協(xié)議的優(yōu)缺點(diǎn)

SPI的優(yōu)點(diǎn)在于它有著比I2C更高的吞吐量,不被最大時(shí)鐘速度所限制,可實(shí)現(xiàn)潛在的高速、極為簡(jiǎn)單的硬件接口,外圍電路使用的上拉電阻是比I2C協(xié)議更少的,這意味著它具有比I2C的功耗更低、從機(jī)的時(shí)鐘來(lái)源來(lái)自主機(jī)設(shè)備,無(wú)需新增精密振蕩器、從機(jī)不需要唯一的地址、相對(duì)于并行接口而言,使用的引腳數(shù)目大大減少等優(yōu)點(diǎn)。但同時(shí)有著一定的缺點(diǎn),例如SPI沒(méi)有帶內(nèi)尋址、當(dāng)使用多個(gè)不同模式的從機(jī)設(shè)備時(shí),主機(jī)設(shè)備切換模式時(shí)重新初始化,會(huì)使得訪問(wèn)從機(jī)設(shè)備速度變慢、SPI從機(jī)設(shè)備沒(méi)有硬件流控,只能通過(guò)主機(jī)自主的延遲下個(gè)時(shí)鐘周期到來(lái)的時(shí)間、僅能在短距離通信等缺點(diǎn)。但能在避免SPI的缺點(diǎn)的方向來(lái)應(yīng)用SPI的話,SPI的優(yōu)點(diǎn)讓它遠(yuǎn)遠(yuǎn)優(yōu)于其他協(xié)議。

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

    關(guān)注

    18

    文章

    5951

    瀏覽量

    135800
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CAN總線與其他串行通信協(xié)議比較

    CAN總線與其他串行通信協(xié)議相比,具有其獨(dú)特的特點(diǎn)和優(yōu)勢(shì)。以下是對(duì)CAN總線與UART、I2C、SPI等常見(jiàn)串行通信協(xié)議的比較: 、基本特性比較
    的頭像 發(fā)表于 11-12 09:56 ?97次閱讀

    PROFINET通信協(xié)議是什么

    PROFINET通信協(xié)議種專(zhuān)為工業(yè)自動(dòng)化領(lǐng)域設(shè)計(jì)的基于以太網(wǎng)的實(shí)時(shí)通信協(xié)議。以下是對(duì)PROFINET通信協(xié)議的詳細(xì)解析,包括其定義、特點(diǎn)、體系結(jié)構(gòu)、工作原理、
    的頭像 發(fā)表于 09-25 18:13 ?835次閱讀

    SPI通信協(xié)議的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信協(xié)議,即串行外圍設(shè)備接口,是種高速、全雙工、同步通信總線,由摩托羅拉公司提出并廣泛應(yīng)用。
    的頭像 發(fā)表于 09-09 17:04 ?810次閱讀

    簡(jiǎn)單認(rèn)識(shí)UART通信協(xié)議

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)通信協(xié)議種常見(jiàn)的串行通信協(xié)議,廣泛應(yīng)用于計(jì)算機(jī)、嵌入式系統(tǒng)、傳感器、無(wú)線
    的頭像 發(fā)表于 07-25 18:07 ?1299次閱讀

    can的通信協(xié)議主要由什么完成

    CAN(Controller Area Network)是種基于消息的通信協(xié)議,主要用于汽車(chē)和工業(yè)領(lǐng)域。它是種局域網(wǎng)技術(shù),允許多個(gè)設(shè)備在同網(wǎng)絡(luò)上進(jìn)行
    的頭像 發(fā)表于 06-16 10:29 ?521次閱讀

    RS485通信協(xié)議的特性和應(yīng)用范圍

    隨著工業(yè)自動(dòng)化和物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,數(shù)據(jù)通信協(xié)議的重要性日益凸顯。RS485通信協(xié)議作為種廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域的串行通信協(xié)議,其穩(wěn)定性和可靠性得到了廣泛的認(rèn)可。本文將對(duì)RS48
    的頭像 發(fā)表于 05-23 16:27 ?1557次閱讀

    高速串行通信協(xié)議詳解

    隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)通信已成為現(xiàn)代社會(huì)不可或缺的部分。在數(shù)據(jù)通信中,串行通信作為種基本的通信
    的頭像 發(fā)表于 05-16 16:45 ?724次閱讀

    想搞懂通信協(xié)議?先來(lái)看SPI熱熱身

    SPI是串行外設(shè)接口(SerialPeripheralInterface)的縮寫(xiě),它是種同步串行通信接口,用于微控制器和外圍設(shè)備(如傳感器、SD卡、其他微控制器等)之間的通信。
    的頭像 發(fā)表于 05-12 08:10 ?1533次閱讀
    想搞懂<b class='flag-5'>通信協(xié)議</b>?先來(lái)看<b class='flag-5'>一</b><b class='flag-5'>篇</b><b class='flag-5'>SPI</b>熱熱身

    SPI和I2C通信協(xié)議:應(yīng)用與區(qū)別

    本文深入解析了SPI和I2C這兩種通信協(xié)議的特點(diǎn)、工作原理和應(yīng)用場(chǎng)景。SPI適用于高速數(shù)據(jù)傳輸,常用于存儲(chǔ)器芯片和顯示器驅(qū)動(dòng)等領(lǐng)域;I2C適用于低速控制和傳感器數(shù)據(jù)傳輸,常用于溫度傳感器和ADC
    的頭像 發(fā)表于 04-22 16:45 ?1587次閱讀

    UART串口通信協(xié)議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是通信接口協(xié)議,用于實(shí)現(xiàn)串口通信。它是
    的頭像 發(fā)表于 03-19 17:26 ?1194次閱讀

    串行通信協(xié)議的帶寬是指什么?

    SPI和I2C等串行通信協(xié)議,兩者帶寬不樣,這里的帶寬是指什么,傳輸速率還是其他什么?如果要求很高的傳輸速率,那么要求發(fā)送端要能很快的發(fā)送數(shù)據(jù),要有很短的上升沿下降沿時(shí)間,高低位電平也維持很短
    發(fā)表于 02-08 18:04

    工業(yè)控制通信協(xié)議的報(bào)文幀分別是什么樣的?

    工業(yè)控制常用到不同的通信協(xié)議,MODBUS,CAN,CANOPEN,PROFIBUS,PROFINET,ETNERNET,ETHERCAT,SPI,PPI,工業(yè)以太網(wǎng)等等,協(xié)議,就是兩臺(tái)設(shè)備交換數(shù)據(jù)
    發(fā)表于 01-19 14:46

    有關(guān)通信協(xié)議時(shí)些問(wèn)題?

    抗干擾就加強(qiáng)濾波,要求輸入信號(hào)隔離就加隔離芯片或其他方式,總之這段電路不應(yīng)該太夏雜吧,遠(yuǎn)不如芯片內(nèi)部的信號(hào)處理電路?最后請(qǐng)推薦幾本有關(guān)串行通信協(xié)議方面硬件方面的書(shū),還有個(gè)問(wèn)題,這些通信協(xié)議
    發(fā)表于 01-14 00:58

    介紹下I2C和SPI兩種常見(jiàn)的通信協(xié)議之間區(qū)別

    在與ECU或者嵌入式相關(guān)的工作中, 我們肯定會(huì)接觸到各種通信協(xié)議, 很多協(xié)議有很多類(lèi)似的地方, 也容易混淆. 本文來(lái)介紹下兩種常見(jiàn)的通信協(xié)議之間的區(qū)別.
    的頭像 發(fā)表于 11-30 16:50 ?3204次閱讀
    介紹<b class='flag-5'>一</b>下I2C和<b class='flag-5'>SPI</b>兩種常見(jiàn)的<b class='flag-5'>通信協(xié)議</b>之間區(qū)別

    SPI通信協(xié)議原理是什么

    Peripheral Interface,也就是串行外設(shè)接口,同樣是通信協(xié)議,在很多芯片中都有集成。 相比之前學(xué)習(xí)的UART串口通信,他多了兩根線,其中個(gè)是時(shí)鐘信號(hào),另
    的頭像 發(fā)表于 11-24 17:37 ?982次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>通信協(xié)議</b>原理是什么