<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

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

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

??SPI(Serial Peripheral Interface)總線系統是一種同步串行外設接口,可以是MCU與各種外圍設備以串行方式進行通信以交換信息,該接口一般使用4條線:串行時鐘線(SCLK)、主入從出數據線(MISO)、主出從入數據線(MOSI)和低電平有效的從機選擇線(SS);其主要特點包括:可以同時發出和接收船型數據;可以作為主機或從機工作;發送結束中斷標志;寫沖突保護和總線競爭保護。
SPI總線架構示意圖:
7ac98cde-eb20-11ed-878e-dac502259ad0.png
??SPI是一個環形總線結構,有SS、SCK、SDI、SDO組成,在主設備和從設備之間進行雙向傳輸,實現發送和接收數據,最高速率可達5Mbps。由SS信號來選定主設備通信的從設備,在某時間點內主設備和從設備之間可以實現點對點通信,不需要進行尋址操作。SPI共有4種工作模式,SP0、SP1、SP2、SP3,其中比較常用的是SP0、SP3。為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行設置。
??如果時鐘極性CPOL=0,則串行同步時鐘的空閑狀態為低電平;如果時鐘極性CPOL=1,則串行同步時鐘的空閑狀態為高電平。
??如果時鐘相位CPHA=0,則在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;如果時鐘相位CPHA=1,則在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。SPI主模塊和與之通信的外設時鐘相位和極性應該一致。
SPI總線4中工作模式的SCK示意:
7af8134c-eb20-11ed-878e-dac502259ad0.png
??SPI主要工作時序是在SCK的控制下,兩個雙向移位寄存器進行數據交換。
??假設下面的8位寄存器裝的是待發送的數據1010 1010,上升沿發送,下降沿接收,高位先發送。那么第一個上升沿來的時候數據將會是sdo=1,寄存器=0101 010x;下降沿到來的時候,sdi上的電平將鎖存到寄存器中去,那么這時寄存器=0101 010sdi,這樣在8個時鐘脈沖以后,兩個寄存器的內容相互交換一次,從而完成了一個spi時序。
7b0f81c6-eb20-11ed-878e-dac502259ad0.png
7b382946-eb20-11ed-878e-dac502259ad0.png
??硬件SPI方式:
??(1)寫一個字節:
??SPI_Writebyte(u8 data)
??{
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);//等待發送緩沖區為空
??SPI_I2S_SendData(SPI1,Data);
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);//等待接收到一個字節數據
??SPI_I2S_ReceiveData(SPI1);
??}
??(2)讀一個字節:
??SPI_Readbyte(u8 data)
??{
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);//等待發送緩沖區為空
??SPI_I2S_SendData(SPI1,Data);
??While(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);//等待接收到一個字節數據
??return SPI_I2S_ReceiveData(SPI1);
??}
??解析:當不使用FIFO時,只有一個中斷,接收和發送共用一個,因為發送和接收是同時完成的:例如主機上升沿發送下降沿接收,那么從機就是上升沿接收下降沿發送,所以一串時鐘之后,主機發送完了數據,從機也發送完了數據。
??軟件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方式的區別:
??1.硬件SPI效率高些,編寫程序時只需把要發送的數據寫到寄存器中,硬件自動進行發送;軟件SPI需要根據時序實現時鐘拉高拉低,串行數據輸出等。
??2.硬件SPI必須要求處理器支持該功能;而軟件SPI不需要特定要求,一般的IO口就可以使用
??3.硬件SPI傳輸速度可以達到3Mbps,軟件SPI傳輸速度一般700K左右。
??總結:在使用SPI時,根據實際情況選擇使用硬件SPI,還是軟件SPI,注意在使用時確保時序的準確性。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16058

    瀏覽量

    344154
  • 時鐘
    +關注

    關注

    10

    文章

    1481

    瀏覽量

    130355
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1618

    瀏覽量

    89763
  • SPI總線
    +關注

    關注

    4

    文章

    100

    瀏覽量

    27455
  • 串行通信
    +關注

    關注

    4

    文章

    539

    瀏覽量

    35035
收藏 人收藏

    評論

    相關推薦

    IIC總線SPI總線通信詳解

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

    SPI總線串行外圍設備接口是什么

    SPI總線串行外圍設備接口,是一種高速的、全雙工、同步的通信總線。只占用四根線,(省線)
    發表于 07-19 08:51

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

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

    基于SPI串行總線的語音接口電路的軟硬件設計

    摘要:使用SPI串行總線可以達到MCU與語音芯片串行通信的目的。通過對PIC單片機與ISD4003的連接電路和軟件控制的設計,實現現場語音分
    發表于 05-08 09:29 ?24次下載

    串行總線分析功能之總線觸發與總線分析

    串行總線分析功能分為兩個部分,總線觸發和總線分析。DLM2000支持標準的CAN/LIN/I2
    發表于 04-07 15:14 ?1475次閱讀
    <b class='flag-5'>串行</b><b class='flag-5'>總線</b><b class='flag-5'>分析</b>功能之<b class='flag-5'>總線</b>觸發與<b class='flag-5'>總線</b><b class='flag-5'>分析</b>

    對三種總線SPI、UART、I2C分析理解

    SPI(Serial Peripheral Interface,串行外設接口) SPI是一種高速、全雙工、同步、串行通信
    發表于 11-15 12:32 ?8048次閱讀

    單片機串行通信SPI通信教程

    單片機串行通信SPI通信
    發表于 12-20 12:18 ?11次下載

    一文介紹SPI串行總線

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

    基于SPI串行總線接口的Verilog實現

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

    串行總線SPI、IIC、UART

    三種常用的串行數據傳輸總線一、SPI1.1 概念SPI(Serial Peripheral Interface - 串行外設接口)是一種用于
    發表于 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,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現
    發表于 12-22 19:18 ?17次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>總線</b>協議及<b class='flag-5'>詳解</b>

    基于STM32 HAL庫的SPI通信原理分析與調試

    一、 SPI原理分析SPI串行外設接口(Serial Peripheral Interface)的縮寫。 Motorola 公司推出的一種同步串行
    發表于 12-22 19:22 ?15次下載
    基于STM32 HAL庫的<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>原理<b class='flag-5'>分析</b>與調試

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

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

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

    什么是SPI?SPI的英文全稱為SerialPeripheralInterface,顧名思義為串行外設接口。SPI是一種同步串行
    的頭像 發表于 09-30 10:18 ?1491次閱讀
    超全面!<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>協議<b class='flag-5'>詳解</b>,一篇就夠

    超全面!SPI通信協議詳解

    什么是SPI?SPI的英文全稱為SerialPeripheralInterface,顧名思義為串行外設接口。SPI是一種同步串行
    的頭像 發表于 08-14 10:06 ?2326次閱讀
    超全面!<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>協議<b class='flag-5'>詳解</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>