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

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

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

SPI協(xié)議概括

CHANBAEK ? 來源:IOput ? 作者:Bruno ? 2023-03-27 17:36 ? 次閱讀

SPI協(xié)議概括

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

SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少4根線,事實上3根也可以(單向傳輸時)。 也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCK(時鐘),CS(片選)。

(1)SDO – 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入

(2)SDI – 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出

(3)SCLK – 時鐘信號,由主設(shè)備產(chǎn)生

(4)CS – 從設(shè)備使能信號,由主設(shè)備控制

其中CS是控制芯片是否被選中的,也就是說只有片選信號為預(yù)先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。 這就允許在同一總線上連接多個SPI設(shè)備成為可能。

接下來就負責通訊的3根線了。 通訊是通過數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)摹?這就是SCK時鐘線存在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。 數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。 完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。 這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。

要注意的是,SCK信號線只由主設(shè)備控制,從設(shè)備不能控制信號線。 同樣,在一個基于SPI的設(shè)備中,至少有一個主控設(shè)備。 這樣傳輸?shù)奶攸c:這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控設(shè)備控制,當沒有時鐘跳變時,從設(shè)備不采集或傳送數(shù)據(jù)。 也就是說,主設(shè)備通過對SCK時鐘線的控制可以完成對通訊的控制。 SPI還是一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。 不同的SPI設(shè)備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關(guān)器件的文檔。

在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。 在多個從設(shè)備的系統(tǒng)中,每個從設(shè)備需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。

最后,SPI接口的一個缺點:沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù)。

AT91RM9200的SPI接口主要由4個引腳構(gòu)成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個SPI總線的公用時鐘,MOSI、MISO作為主機,從機的輸入輸出的標志,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。 /SS是從機的標志管腳,在互相通信的兩個SPI總線的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。 在一個SPI通信系統(tǒng)中,必須有主機。 SPI總線可以配置成單主單從,單主多從,互為主從。

SPI的片選可以擴充選擇16個外設(shè),這時PCS輸出=NPCS,說NPCS0 ~ 3接4 -16譯碼器,這個譯碼器是需要外接4 -16譯碼器,譯碼器的輸入為NPCS0~3,輸出用于16個外設(shè)的選擇。

SPI協(xié)議舉例

SPI是一個環(huán)形總線結(jié)構(gòu),由ss(cs)、sck、sdi、sdo構(gòu)成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數(shù)據(jù)交換。

假設(shè)下面的8位寄存器裝的是待發(fā)送的數(shù)據(jù)10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。

那么第一個上升沿來的時候 數(shù)據(jù)將會是sdo=1;寄存器=0101010x。 下降沿到來的時候,sdi上的電平將所存到寄存器中去,那么這時寄存器=0101010sdi,這樣在 8個時鐘脈沖以后,兩個寄存器的內(nèi)容互相交換一次。 這樣就完成里一個spi時序。

舉例:

假設(shè)主機和從機初始化就緒:并且主機的sbuff=0xaa,從機的sbuff=0x55,下面將分步對spi的8個時鐘周期的數(shù)據(jù)情況演示一遍:假設(shè)上升沿發(fā)送數(shù)據(jù)

wKgaomQhYxqAJ9IfAACiP2ThRIQ245.jpg

這樣就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對于主機而言的。 其中ss引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從機的是時候,可以作為片選腳用。 根據(jù)以上分析,一個完整的傳送周期是16位,即兩個字節(jié),因為,首先主機要發(fā)送命令過去,然后從機根據(jù)主機的命令準備數(shù)據(jù),主機在下一個8位時鐘周期才把數(shù)據(jù)讀回來。

SPI 總線是Motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線SCK,一條數(shù)據(jù)輸入線MOSI,一條數(shù)據(jù)輸出線MISO; 用于CPU與各種外圍器件進行全雙工、同步串行通訊。 SPI主要特點有:可以同時發(fā)出和接收串行數(shù)據(jù); 可以當作主機或從機工作; 提供頻率可編程時鐘; 發(fā)送結(jié)束 中斷標志; 寫沖突保護; 總線競爭保護等。 下圖示出SPI總線工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式 (實線表示):

wKgZomQhYxqAAaVQAABXZRq0CxE947.jpg

SPI總線四種工作方式

SPI模塊為了和外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。 如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平; 如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。 時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。 如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣; 如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。 SPI主模塊和與之通信的外設(shè)音時鐘相位和極性應(yīng)該一致。 SPI接口時序如圖3、圖4所示。

wKgaomQhYxqAfexAAAEVX3NP8DA687.jpg

補充:

上文中最后一句話:SPI主模塊和與之通信的外設(shè)備時鐘相位和極性應(yīng)該一致。 個人理解這句話有2層意思:其一,主設(shè)備SPI時鐘和極性的配置應(yīng)該由外設(shè)來決定; 其二,二者的配置應(yīng)該保持一致,即主設(shè)備的SDO同從設(shè)備的SDO配置一致,主設(shè)備的SDI同從設(shè)備的SDI配置一致。 因為主從設(shè)備是在SCLK的控制下,同時發(fā)送和接收數(shù)據(jù),并通過2個雙向移位寄存器來交換數(shù)據(jù)。

工作原理演示如下圖:

wKgZomQhYxqALOTKAAAoyQst8l4854.jpg

上升沿主機SDO發(fā)送數(shù)據(jù)1,同時從設(shè)備SDO發(fā)送數(shù)據(jù)0; 緊接著在SCLK的下降沿的時候從設(shè)備的SDI接收到了主機發(fā)送過來的數(shù)據(jù)1,同時主機也接收到了從設(shè)備發(fā)送過來的數(shù)據(jù)0.

SPI協(xié)議心得

SPI接口時鐘配置心得:

在主設(shè)備這邊配置SPI接口時鐘的時候一定要弄清楚從設(shè)備的時鐘要求,因為主設(shè)備這邊的時鐘極性和相位都是以從設(shè)備為基準的。 因此在時鐘極性的配置上一定要搞清楚從設(shè)備是在時鐘的上升沿還是下降沿接收數(shù)據(jù),是在時鐘的下降沿還是上升沿輸出數(shù)據(jù)。 但要注意的是,由于主設(shè)備的SDO連接從設(shè)備的SDI,從設(shè)備的SDO連接主設(shè)備的SDI,從設(shè)備SDI接收的數(shù)據(jù)是主設(shè)備的SDO發(fā)送過來的,主設(shè)備SDI接收的數(shù)據(jù)是從設(shè)備SDO發(fā)送過來的,所以主設(shè)備這邊SPI時鐘極性的配置(即SDO的配置)跟從設(shè)備的SDI接收數(shù)據(jù)的極性是相反的,跟從設(shè)備SDO發(fā)送數(shù)據(jù)的極性是相同的。

下面這段話是Sychip Wlan8100 Module Spec上說的,充分說明了時鐘極性是如何配置的:“The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock.” (主設(shè)備在時鐘的下降沿發(fā)送數(shù)據(jù),從設(shè)備在時鐘的上升沿接收數(shù)據(jù)。 因此主設(shè)備這邊SPI時鐘極性應(yīng)該配置為下降沿有效。 )

又如,下面這段話是摘自LCD Driver IC SSD1289:“SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.” (從設(shè)備SSD1289在時鐘的上升沿接收數(shù)據(jù),而且是按照從高位到地位的順序接收數(shù)據(jù)的。 因此主設(shè)備的SPI時鐘極性同樣應(yīng)該配置為下降沿有效。 )

時鐘極性和相位配置正確后,數(shù)據(jù)才能夠被準確的發(fā)送和接收。 因此應(yīng)該對照從設(shè)備的SPI接口時序或者Spec文檔說明來正確配置主設(shè)備的時鐘。

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

    關(guān)注

    4295

    文章

    22776

    瀏覽量

    393242
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8257

    瀏覽量

    149956
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    5880

    瀏覽量

    135317
  • 時鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1673

    瀏覽量

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

    關(guān)注

    17

    文章

    1669

    瀏覽量

    90733
收藏 人收藏

    評論

    相關(guān)推薦

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

    1、SPI協(xié)議簡介 1.1 SPI協(xié)議概括 SPI,是英語Serial Peripheral i
    的頭像 發(fā)表于 05-08 19:55 ?9609次閱讀
    關(guān)于<b class='flag-5'>SPI</b>通訊的精講 <b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>的特點和工作機制

    SPI協(xié)議概括

    1.1.SPI協(xié)議概括  SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設(shè)備接口。是Motorola首先在其MC68HCXX系列處理器
    發(fā)表于 12-13 06:04

    SPI協(xié)議相關(guān)資料推薦

    1.SPI協(xié)議簡介1.1.SPI協(xié)議概括  SPI,是英語Serial Peripheral i
    發(fā)表于 01-24 07:06

    基于SPI協(xié)議的SD卡讀寫

    基于SPI協(xié)議的SD卡讀寫,SD卡的協(xié)議分析。
    發(fā)表于 01-06 14:24 ?0次下載

    SPI總線協(xié)議介紹

    這是SPI協(xié)議的介紹,很有用的哦,歡迎大家下載。
    發(fā)表于 04-13 14:21 ?17次下載

    基于FPGA與MCU通信的SPI協(xié)議設(shè)計

    typora-copy-images-to: typora_picture基于FPGA與MCU通信的SPI協(xié)議設(shè)計1. SPI總線協(xié)議介紹及硬件設(shè)計1.1
    發(fā)表于 11-05 15:35 ?14次下載
    基于FPGA與MCU通信的<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>設(shè)計

    基于FPGA的SPI協(xié)議及設(shè)計實現(xiàn)

    基于FPGA的SPI協(xié)議及設(shè)計實現(xiàn)博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨詢,歡迎大家前來投稿,謝謝!引言介紹在電子通信領(lǐng)域里采用的通信協(xié)議有IIC,SPI
    發(fā)表于 11-05 19:05 ?23次下載
    基于FPGA的<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>及設(shè)計實現(xiàn)

    SPI協(xié)議詳解

    1.SPI協(xié)議簡介1.1.SPI協(xié)議概括  SPI,是英語Serial Peripheral i
    發(fā)表于 11-29 12:06 ?16次下載
    <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 ?32次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>

    通信協(xié)議SPI

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

    spi協(xié)議介紹

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

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

    1、什么是SPI協(xié)議SPI(Serial Peripheral Interface,串行外圍設(shè)備接口)通訊協(xié)議,是 Motorola 公司提出的一種同步串行接口技術(shù),是一種高速、全雙工
    發(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>驅(qū)動

    一文看懂SPI協(xié)議

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

    SPI協(xié)議相關(guān)的內(nèi)容

    今天分享SPI協(xié)議相關(guān)的內(nèi)容。
    的頭像 發(fā)表于 09-05 10:50 ?1004次閱讀

    SPI協(xié)議知識講解

    電子發(fā)燒友網(wǎng)站提供《SPI協(xié)議知識講解.ppt》資料免費下載
    發(fā)表于 11-16 10:41 ?2次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>知識講解