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

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

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

什么是SPI?SPI通信的4種工作模式

kae1_cdebyte ? 來源:億佰特物聯(lián)網(wǎng)應(yīng)用專家 ? 2023-08-11 09:22 ? 次閱讀

什么是SPI?

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

SPI簡介?

SPI是一種高速的、全雙工的、同步的通信總線,并且至多僅需使用4根線,節(jié)約了芯片的管腳,SPI主要應(yīng)用于EEPROM、FLASH、ADC、DAC等芯片,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。

SPI設(shè)備之間采用全雙工模式通信,是一個主機(jī)和一個或者多個從機(jī)的主從模式。主機(jī)負(fù)責(zé)初始化幀,這個數(shù)據(jù)傳輸幀可以用于讀與寫兩種操作,片選線可以從多個從機(jī)選擇一個來響應(yīng)主機(jī)的請求。

SPI接口定義如下表:

wKgZomTVjWGAcQzzAAIx2cigS-E278.png

由上表也可以看出當(dāng)SPI設(shè)備間通信時,數(shù)據(jù)線應(yīng)該是MOSI連接MOSI,MISO連接MISO,SCLK與SCLK相連,而不是像串口那樣TX、RX進(jìn)行反接。當(dāng)只有單一SPI從機(jī)設(shè)備時,如果從機(jī)設(shè)備允許的話,可直接將CS/SS線固定在低電平。然而類似于MAX1242這款需要CS/SS線的下降沿來觸發(fā)的芯片,則必須將CC/SS線與主機(jī)相連。如下圖,為一主一從連接方式。

wKgZomTVjWGAHoC_AADlDIbhgCg408.png

對于多個從機(jī)設(shè)備時,則每個從機(jī)都需要一根CS/SS線來與主機(jī)相連,從而達(dá)到主機(jī)能與任一從機(jī)通信的目的。如下圖,為一主多從的連接方式。

wKgaomTVjWGAUkZ1AAKj7R4iWdk533.png

大多數(shù)從機(jī)設(shè)備都有著三態(tài)邏輯的特性,因此當(dāng)設(shè)備未被選中時,它們的MISO信號線會變成高阻抗?fàn)顟B(tài)(電氣斷開)。沒有三態(tài)輸出的設(shè)備則需外接三態(tài)緩沖器才能與其他的從機(jī)設(shè)備共享SPI總線。

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

在SPI通信中,SPI主機(jī)設(shè)備以從機(jī)設(shè)備支持的頻率通過SCLK線給到SPI從機(jī)設(shè)備,這點(diǎn)也意味著從機(jī)是無法主動向主機(jī)發(fā)送數(shù)據(jù)的,只能主機(jī)輪詢向從機(jī)發(fā)或者從機(jī)設(shè)備主動通過一個IO口來告知主機(jī)數(shù)據(jù)到達(dá)。

在SPI每個時鐘周期內(nèi),都會進(jìn)行一次全雙工數(shù)據(jù)的傳輸。主機(jī)通過MOSI線上發(fā)送1bit時,從機(jī)也會在讀取到之后通過MISO線發(fā)送1bit數(shù)據(jù)出去。這說明,即使只進(jìn)行單工通信,也會保持此通信順序。

SPI傳輸通常涉及到兩個給定了字長的移位寄存器。例如在主機(jī)、從機(jī)中的8bit的移位寄存器。它們以虛擬環(huán)形拓?fù)溥B接,數(shù)據(jù)通常先從最高有效位被移出。在時鐘沿,主機(jī)和從機(jī)都移出1bit數(shù)據(jù)從傳輸線上給到對方。在下一個時鐘邊沿來到時,雙方的接收器再對傳輸線上的該bit進(jìn)行采樣,并將其設(shè)置為移位寄存器的新的最低有效位。在寄存器位被移出和移入后,主機(jī)和從機(jī)交換了寄存器值。如果需要交換更多數(shù)據(jù),則重新加載移位寄存器并重復(fù)該過程。傳輸可以持續(xù)任意數(shù)量的時鐘周期。完成后,主機(jī)停止切換時鐘信號。如下圖,為主從機(jī)之間的交互時的移位寄存器示意圖。

wKgaomTVjWGAYv26AABC9-taNZI226.png

其中上圖的通信流程如下:

1.SPI主機(jī)首先現(xiàn)將SS或CS線拉低,以此來告知SPI從機(jī)通信開始。

2. 主機(jī)通過發(fā)送SCLK時鐘信號,來告知從機(jī)即將進(jìn)行的讀寫操作。這里的SCLK時鐘信號是由SPI的模式來決定是高電平還是低電平有效的,這點(diǎn)在稍后會進(jìn)行介紹。

3. 主機(jī)(Master)將要發(fā)送的數(shù)據(jù)寫到發(fā)送數(shù)據(jù)緩存區(qū)(Memory),緩存區(qū)經(jīng)過移位寄存器(0~7),串行移位寄存器通過MOSI信號線將字節(jié)一位一位的移出去傳送給從機(jī),同時MISO接口接收到的數(shù)據(jù)經(jīng)過移位寄存器一位一位的移到接收緩存區(qū)。

4.從機(jī)(Slave)也將自己的串行移位寄存器(0~7)中的內(nèi)容通過MISO信號線返回給主機(jī)。同時通過MOSI信號線接收主機(jī)發(fā)送的數(shù)據(jù),這樣,兩個移位寄存器中的內(nèi)容就被交換。

SPI通信的4種工作模式

SPI通信中有4種不同的操作模式,不同的從機(jī)設(shè)備可能在出廠時就被設(shè)置好了某種模式,并且無法更改。但是SPI通信必須處于同一種模式下才能進(jìn)行。因此我們應(yīng)該對自己手里的SPI主機(jī)設(shè)備進(jìn)行模式的配置,也就是通過CPOL(時鐘極性)和CPHA(時鐘相位)來控制SPI主設(shè)備的通信模式,具體如下:

時鐘極性(CPOL)定義了SCLK時鐘線空閑狀態(tài)時的電平:

1.CPOL=0,即SCLK=0,表示SCLK時鐘信號線在空閑狀態(tài)時的電平為低電平,因此有效狀態(tài)為高電平。

2. CPOL=1,即SCLK=1,表示SCLK時鐘信號線在空閑狀態(tài)時的電平為高電平,因此有效狀態(tài)為低電平。

時鐘相位(CPHA)定義了數(shù)據(jù)位相對于時鐘線的時序(即相位):

1. CPHA=0,即表示輸出(out)端在上一個時鐘周期的后沿改變數(shù)據(jù),而輸入(in)端在時鐘周期的前沿(或不久之后)捕獲數(shù)據(jù)。輸出端保持?jǐn)?shù)據(jù)有效直到當(dāng)前時鐘周期的尾部邊緣。對于第一個時鐘周期來說,第一位的數(shù)據(jù)必須在時鐘前沿之前出現(xiàn)在MOSI線上。也就是一個CPHA=0的周期包括半個時鐘空閑和半個時鐘置位的周期。

2. CPHA=1,即表示輸出(out)端在當(dāng)前時鐘周期的前沿改變數(shù)據(jù),而輸入(in)端在時鐘周期的后沿(或不久之后)捕獲數(shù)據(jù)。輸出端保持?jǐn)?shù)據(jù)有效直到下一個時鐘周期的前沿。對于最后一個時鐘周期來說,從機(jī)設(shè)備在片選信號消失之前保持MISO信號線有效。也就是一個CHPA=1的周期包括半個時鐘置位和半個時鐘空閑的周期。

注意:此處的前沿和后沿的意思表示在每個周期中第一個出現(xiàn)的邊沿和最后一個出現(xiàn)的邊沿??偟膩碚f則為:當(dāng)時鐘為正向時鐘時,時鐘線的上升沿為前沿,時鐘的下降沿為后沿,反之。

如下表,為SPI通信的4種模式:

wKgaomTVjWGADXH4AAEQkT3qOcw790.png

下圖顯示了時鐘極性和相位的時序圖。紅線表示時鐘的前沿,藍(lán)線表示時鐘的后沿。

wKgZomTVjWGAQum5AAKENvhYhxs204.png

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

SPI的優(yōu)點(diǎn)在于它有著比I2C更高的吞吐量,不被最大時鐘速度所限制,可實(shí)現(xiàn)潛在的高速、極為簡單的硬件接口,外圍電路使用的上拉電阻是比I2C協(xié)議更少的,這意味著它具有比I2C的功耗更低、從機(jī)的時鐘來源來自主機(jī)設(shè)備,無需新增精密振蕩器、從機(jī)不需要唯一的地址、相對于并行接口而言,使用的引腳數(shù)目大大減少等優(yōu)點(diǎn)。

但同時有著一定的缺點(diǎn),例如SPI沒有帶內(nèi)尋址、當(dāng)使用多個不同模式的從機(jī)設(shè)備時,主機(jī)設(shè)備切換模式時重新初始化,會使得訪問從機(jī)設(shè)備速度變慢、SPI從機(jī)設(shè)備沒有硬件流控,只能通過主機(jī)自主的延遲下個時鐘周期到來的時間、僅能在短距離通信等缺點(diǎn)。但能在避免SPI的缺點(diǎn)的方向來應(yīng)用SPI的話,SPI的優(yōu)點(diǎn)讓它遠(yuǎn)遠(yuǎn)優(yōu)于其他協(xié)議。

審核編輯:湯梓紅

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

    關(guān)注

    33

    文章

    8360

    瀏覽量

    150537
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1681

    瀏覽量

    91059
  • 串行通信
    +關(guān)注

    關(guān)注

    4

    文章

    560

    瀏覽量

    35195
  • 通信總線
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    9831

原文標(biāo)題:【干貨】超全面!SPI通信協(xié)議詳解

文章出處:【微信號:cdebyte,微信公眾號:億佰特物聯(lián)網(wǎng)應(yīng)用專家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    SPI通信4工作模式

    SPI的英文全稱為Serial Peripheral Interface,顧名思義為串行外設(shè)接口。SPI是一同步串行通信接口規(guī)范,主要應(yīng)用于嵌入式系統(tǒng)中的短距離
    發(fā)表于 09-30 11:10 ?9480次閱讀

    超詳細(xì)的SPI原理和通信模式

    SPI分為主、從兩模式,一個SPI通訊系統(tǒng)需要包含一個(且只能是一個)主設(shè)備,一個或多個從設(shè)備。提供時鐘的為主設(shè)備(Master),接收時鐘的設(shè)備為從設(shè)備(Slave),
    發(fā)表于 02-29 12:33 ?3647次閱讀
    超詳細(xì)的<b class='flag-5'>SPI</b>原理和<b class='flag-5'>通信</b><b class='flag-5'>模式</b>

    SPI模式

    SPI模式
    發(fā)表于 12-15 21:51 ?2次下載

    SPI通信原理 SPI的接線實(shí)例

    以主從方式來工作,這種模式通常是:一個主設(shè)備和一個或多個從設(shè)備,由主設(shè)備發(fā)起通信。需要至少 4 根線,然而事實(shí)
    的頭像 發(fā)表于 12-01 14:04 ?1.8w次閱讀

    SPI通信分析

    SPI通信分析許久不更,想你們了。SPI 模式的配置SPI通信配置STM官方的芯片手冊中對于
    發(fā)表于 12-22 19:12 ?2次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>分析

    SPI通信簡介

    目錄(?)[-]SPI簡介SPI特點(diǎn)1采用主-從模式Master-Slave 的控制方式2采用同步方式Synchronous傳輸數(shù)據(jù)3數(shù)據(jù)交換Data Exchanges4
    發(fā)表于 12-22 19:14 ?9次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>簡介

    簡析SPI,對SPI的簡單代碼編寫,模擬SPI

    結(jié)構(gòu):CLK、CS、MISO、MOSI6、SPI有四工作模式,由時鐘極性(CPOL)和時鐘相位(CPHA)決定SPI0和
    發(fā)表于 12-22 19:15 ?13次下載
    簡析<b class='flag-5'>SPI</b>,對<b class='flag-5'>SPI</b>的簡單代碼編寫,模擬<b class='flag-5'>SPI</b>

    SPI通信協(xié)議

    SPI接口簡介SPI內(nèi)部結(jié)構(gòu)SPI工作原理SPI特征SPI的四
    發(fā)表于 12-22 19:17 ?5次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>協(xié)議

    通信協(xié)議:SPI

    STM32模擬SPI通信協(xié)議SPI的簡介:SPI是串行外設(shè)接口的縮寫,是一高速的,全雙工、同步的串行
    發(fā)表于 12-22 19:20 ?22次下載
    <b class='flag-5'>通信</b>協(xié)議:<b class='flag-5'>SPI</b>

    SPI接口通信協(xié)議詳解:SPI時序、2線、3線、4SPI4常用工作模式

    簡介SPI通信原理比I2C要簡單,它主要是主從方式通信。這種模式通常只有一個主機(jī)和一個或者多個從機(jī),標(biāo)準(zhǔn)的SPI
    發(fā)表于 12-22 19:20 ?23次下載
    <b class='flag-5'>SPI</b>接口<b class='flag-5'>通信</b>協(xié)議詳解:<b class='flag-5'>SPI</b>時序、2線、3線、<b class='flag-5'>4</b>線<b class='flag-5'>SPI</b>及<b class='flag-5'>4</b><b class='flag-5'>種</b>常用<b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    通信協(xié)議(SPI

    一、SPI簡介SPI(Serial Peripheral Interface)是串行外設(shè)接口的縮寫,SPI是高速的,**全雙工**、**同步**的串行通信總線;
    發(fā)表于 12-22 19:33 ?6次下載
    <b class='flag-5'>通信</b>協(xié)議(<b class='flag-5'>SPI</b>)

    SD卡系列之spi模式---spi通信

    SD卡操作分為SPI模式與SDIO模式,這里選擇SPI模式,DSP為SPI主機(jī),SD卡為從機(jī),本
    發(fā)表于 12-22 19:35 ?16次下載
    SD卡系列之<b class='flag-5'>spi</b><b class='flag-5'>模式</b>---<b class='flag-5'>spi</b><b class='flag-5'>通信</b>

    spi工作模式有幾種

    SPI工作模式 SPI 有四工作
    的頭像 發(fā)表于 07-27 10:35 ?1.6w次閱讀
    <b class='flag-5'>spi</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>有幾種

    CW32的SPI單工模式主從通信介紹

    CW32的SPI單工模式主從通信介紹
    的頭像 發(fā)表于 10-24 15:50 ?696次閱讀
    CW32的<b class='flag-5'>SPI</b>單工<b class='flag-5'>模式</b>主從<b class='flag-5'>通信</b>介紹

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

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