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

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

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

串行通信SPI總線的詳解分析

硬件設(shè)計(jì)解析 ? 來源:愛搞研究的阿燦 ? 作者:愛搞研究的阿燦 ? 2023-05-05 16:40 ? 次閱讀

??SPI(Serial Peripheral Interface)總線系統(tǒng)是一種同步串行外設(shè)接口,可以是MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息,該接口一般使用4條線:串行時(shí)鐘線(SCLK)、主入從出數(shù)據(jù)線(MISO)、主出從入數(shù)據(jù)線(MOSI)和低電平有效的從機(jī)選擇線(SS);其主要特點(diǎn)包括:可以同時(shí)發(fā)出和接收船型數(shù)據(jù);可以作為主機(jī)或從機(jī)工作;發(fā)送結(jié)束中斷標(biāo)志;寫沖突保護(hù)和總線競爭保護(hù)。
SPI總線架構(gòu)示意圖:
7ac98cde-eb20-11ed-878e-dac502259ad0.png
??SPI是一個(gè)環(huán)形總線結(jié)構(gòu),有SS、SCK、SDISDO組成,在主設(shè)備和從設(shè)備之間進(jìn)行雙向傳輸,實(shí)現(xiàn)發(fā)送和接收數(shù)據(jù),最高速率可達(dá)5Mbps。由SS信號(hào)來選定主設(shè)備通信的從設(shè)備,在某時(shí)間點(diǎn)內(nèi)主設(shè)備和從設(shè)備之間可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,不需要進(jìn)行尋址操作。SPI共有4種工作模式,SP0、SP1、SP2、SP3,其中比較常用的是SP0、SP3。為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行設(shè)置。
??如果時(shí)鐘極性CPOL=0,則串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果時(shí)鐘極性CPOL=1,則串行同步時(shí)鐘的空閑狀態(tài)為高電平。
??如果時(shí)鐘相位CPHA=0,則在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果時(shí)鐘相位CPHA=1,則在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)時(shí)鐘相位和極性應(yīng)該一致。
SPI總線4中工作模式的SCK示意:
7af8134c-eb20-11ed-878e-dac502259ad0.png
??SPI主要工作時(shí)序是在SCK的控制下,兩個(gè)雙向移位寄存器進(jìn)行數(shù)據(jù)交換。
??假設(shè)下面的8位寄存器裝的是待發(fā)送的數(shù)據(jù)1010 1010,上升沿發(fā)送,下降沿接收,高位先發(fā)送。那么第一個(gè)上升沿來的時(shí)候數(shù)據(jù)將會(huì)是sdo=1,寄存器=0101 010x;下降沿到來的時(shí)候,sdi上的電平將鎖存到寄存器中去,那么這時(shí)寄存器=0101 010sdi,這樣在8個(gè)時(shí)鐘脈沖以后,兩個(gè)寄存器的內(nèi)容相互交換一次,從而完成了一個(gè)spi時(shí)序。
7b0f81c6-eb20-11ed-878e-dac502259ad0.png
7b382946-eb20-11ed-878e-dac502259ad0.png
??硬件SPI方式:
??(1)寫一個(gè)字節(jié):
??SPI_Writebyte(u8 data)
??{
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);//等待發(fā)送緩沖區(qū)為空
??SPI_I2S_SendData(SPI1,Data);
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);//等待接收到一個(gè)字節(jié)數(shù)據(jù)
??SPI_I2S_ReceiveData(SPI1);
??}
??(2)讀一個(gè)字節(jié):
??SPI_Readbyte(u8 data)
??{
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);//等待發(fā)送緩沖區(qū)為空
??SPI_I2S_SendData(SPI1,Data);
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);//等待接收到一個(gè)字節(jié)數(shù)據(jù)
??return SPI_I2S_ReceiveData(SPI1);
??}
??解析:當(dāng)不使用FIFO時(shí),只有一個(gè)中斷,接收和發(fā)送共用一個(gè),因?yàn)榘l(fā)送和接收是同時(shí)完成的:例如主機(jī)上升沿發(fā)送下降沿接收,那么從機(jī)就是上升沿接收下降沿發(fā)送,所以一串時(shí)鐘之后,主機(jī)發(fā)送完了數(shù)據(jù),從機(jī)也發(fā)送完了數(shù)據(jù)。
??軟件SPI:
7b4f5f12-eb20-11ed-878e-dac502259ad0.png
7b725814-eb20-11ed-878e-dac502259ad0.png
7b91cd52-eb20-11ed-878e-dac502259ad0.png
7ba86d28-eb20-11ed-878e-dac502259ad0.png
7bc74b94-eb20-11ed-878e-dac502259ad0.png

7bde3f02-eb20-11ed-878e-dac502259ad0.png
??軟件SPI方式和硬件SPI方式的區(qū)別:
??1.硬件SPI效率高些,編寫程序時(shí)只需把要發(fā)送的數(shù)據(jù)寫到寄存器中,硬件自動(dòng)進(jìn)行發(fā)送;軟件SPI需要根據(jù)時(shí)序?qū)崿F(xiàn)時(shí)鐘拉高拉低,串行數(shù)據(jù)輸出等。
??2.硬件SPI必須要求處理器支持該功能;而軟件SPI不需要特定要求,一般的IO口就可以使用
??3.硬件SPI傳輸速度可以達(dá)到3Mbps,軟件SPI傳輸速度一般700K左右。
??總結(jié):在使用SPI時(shí),根據(jù)實(shí)際情況選擇使用硬件SPI,還是軟件SPI,注意在使用時(shí)確保時(shí)序的準(zhǔn)確性。


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

    關(guān)注

    146

    文章

    16665

    瀏覽量

    347752
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1673

    瀏覽量

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

    關(guān)注

    17

    文章

    1666

    瀏覽量

    90718
  • SPI總線
    +關(guān)注

    關(guān)注

    4

    文章

    101

    瀏覽量

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

    關(guān)注

    4

    文章

    555

    瀏覽量

    35165
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IIC總線SPI總線通信詳解

    IIC總線SPI總線通信介紹
    發(fā)表于 12-23 07:02

    串行通信中的IIC總線工作原理是什么

    數(shù)據(jù)輸出線)。1-wire:即單線總線,又叫單總線(只有一條線)I2C:同步串行2線方式進(jìn)行通信(一條時(shí)鐘線,一條數(shù)據(jù)線)SPI:同步
    發(fā)表于 12-08 07:52

    基于SPI串行總線的語音接口電路的軟硬件設(shè)計(jì)

    摘要:使用SPI串行總線可以達(dá)到MCU與語音芯片串行通信的目的。通過對(duì)PIC單片機(jī)與ISD4003的連接電路和軟件控制的設(shè)計(jì),實(shí)現(xiàn)現(xiàn)場語音分
    發(fā)表于 05-08 09:29 ?24次下載

    串行總線分析功能之總線觸發(fā)與總線分析

    串行總線分析功能分為兩個(gè)部分,總線觸發(fā)和總線分析。DLM2000支持標(biāo)準(zhǔn)的CAN/LIN/I2
    發(fā)表于 04-07 15:14 ?1581次閱讀
    <b class='flag-5'>串行</b><b class='flag-5'>總線</b><b class='flag-5'>分析</b>功能之<b class='flag-5'>總線</b>觸發(fā)與<b class='flag-5'>總線</b><b class='flag-5'>分析</b>

    CAN總線通信詳解

    CAN總線通信詳解。
    發(fā)表于 03-30 16:46 ?0次下載

    SPI通信總線的原理及工作過程簡單分析

    SPI, 串行外圍設(shè)備接口。高速的,全雙工的,同步通信總線。有四個(gè)引腳:SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCLK(時(shí)鐘),CS(片選)。
    的頭像 發(fā)表于 03-08 09:39 ?3.2w次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b><b class='flag-5'>總線</b>的原理及工作過程簡單<b class='flag-5'>分析</b>

    一文介紹SPI串行總線

    SPI協(xié)議是由摩托羅拉公司提出的通訊協(xié)議(SerialPeripheralInterface),即串行外圍設(shè)備接口,是一種高速全雙工的通信總線
    發(fā)表于 07-16 17:58 ?2851次閱讀
    一文介紹<b class='flag-5'>SPI</b><b class='flag-5'>串行</b><b class='flag-5'>總線</b>

    基于SPI串行總線接口的Verilog實(shí)現(xiàn)

    與各種外圍接口器件以串行方式進(jìn)行通信、交換信息。本文簡述了SPI總線的特點(diǎn),介紹了其4條信號(hào)線,SPI
    的頭像 發(fā)表于 05-29 10:16 ?4913次閱讀
    基于<b class='flag-5'>SPI</b><b class='flag-5'>串行</b><b class='flag-5'>總線</b>接口的Verilog實(shí)現(xiàn)

    串行總線SPI、IIC、UART

    三種常用的串行數(shù)據(jù)傳輸總線一、SPI1.1 概念SPI(Serial Peripheral Interface - 串行外設(shè)接口)是一種用于
    發(fā)表于 12-06 19:21 ?2次下載
    <b class='flag-5'>串行</b><b class='flag-5'>總線</b>:<b class='flag-5'>SPI</b>、IIC、UART

    SPI總線詳解

    SPI英文全稱(Serial Perripheral Interface),即串行外圍設(shè)備接口,是一種同步全雙工串行接口,MCU可以通過SPI方式與各種外圍設(shè)備進(jìn)行高速數(shù)據(jù)
    發(fā)表于 12-22 19:16 ?12次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>總線</b><b class='flag-5'>詳解</b>

    SPI總線協(xié)議及詳解

    串行外圍設(shè)備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)
    發(fā)表于 12-22 19:18 ?17次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>總線</b>協(xié)議及<b class='flag-5'>詳解</b>

    SPI總線協(xié)議及SPI時(shí)序圖詳解

    SPI,是英語Serial Peripheral Interface的縮寫,顧名思義就是串行外圍設(shè)備接口。SPI,是一種高速的,全雙工,同步的通信
    發(fā)表于 02-11 15:41 ?31次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>總線</b>協(xié)議及<b class='flag-5'>SPI</b>時(shí)序圖<b class='flag-5'>詳解</b>

    常用串行總線——SPI協(xié)議(上)

    SPI(Serial Perripheral Interface, 串行外圍設(shè)備接口)** 是 Motorola 公司推出的一種同步串行接口技術(shù)。SPI
    的頭像 發(fā)表于 01-21 17:00 ?1312次閱讀
    常用<b class='flag-5'>串行</b><b class='flag-5'>總線</b>——<b class='flag-5'>SPI</b>協(xié)議(上)

    常用串行總線——SPI協(xié)議(下)

    SPI(Serial Perripheral Interface, 串行外圍設(shè)備接口)** 是 Motorola 公司推出的一種同步串行接口技術(shù)。SPI
    的頭像 發(fā)表于 01-21 17:03 ?880次閱讀
    常用<b class='flag-5'>串行</b><b class='flag-5'>總線</b>——<b class='flag-5'>SPI</b>協(xié)議(下)

    SPI總線的定義和特點(diǎn)

    SPI總線(Serial Peripheral Interface),全稱為串行外圍設(shè)備接口,是由Motorola公司提出并定義的一種同步、串行、高速的
    的頭像 發(fā)表于 09-03 14:05 ?191次閱讀