91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

SPI通信筆記:基礎+動圖+時序圖+總結,一文吃透!

工程師看海 ? 來源:硬件筆記本 ? 作者:硬件筆記本 ? 2025-07-29 14:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原文授權自公眾號:硬件筆記本

大家好,今天咱們來詳細聊聊SPI接口,文章內容有點多,建議先收藏起來再慢慢看。

SPI現在已經成為MCU和外圍設備之間最常用的通信方式了。它是一種同步、全雙工、主從式的通信接口工作原理其實很直接:主機產生時鐘信號,從機跟著這個時鐘同步收發數據。允許雙向傳輸,可以在同一時鐘周期內進行主從設備的數據交換。

wKgZPGiIaBWAX4OmAAMyAiNf-bY767.png

這種設計讓SPI既簡單又高效,特別適合需要快速傳輸數據的場合。不過要注意的是,SPI沒有標準的通信協議,不同廠家的設備可能會有差異,所以用的時候一定要仔細看芯片手冊。

011

典型應用場景

SPI接口的核心優勢在于它的簡單性靈活性,典型應用場景包括:

1、傳感器數據采集(如溫度傳感器、IMU),例如:TMP124芯片,它是由TI推出的工業級數字溫度傳感器,主打高精度+SPI接口組合,適合對測溫有嚴苛要求的場景。

wKgZPGiIaBWAXDqtAABb1J-lRew552.png

2、存儲器讀寫(Flash、EEPROM),比如小容量的AT25040,常用來存儲配置參數和校準數據。

wKgZPGiIaBWABBpAAABBjKl3iKk304.png

3、數字信號轉換(ADC/DAC)。比如通用ADC芯片MCP4921,它是Microchip推出的低成本12位數字模擬轉換器(DAC),主打簡單易用+SPI接口組合,適合需要數字控制模擬輸出的場景。

wKgZPGiIaBWAGCh2AAAd-stUY08410.png

4、顯示驅動(OLEDTFT屏幕),例如咱們常用的0.96寸OLED屏,一般有I2C和SPI兩種接口,雖然SPI多占用兩個IO口,但速度比I2C快很多。

wKgZPGiIaBWAZHdZAAWcvFPilKg179.png

021

SPI的連接方式和工作速度

連接方式

SPI接口可以是3線式或4線式,這里主要介紹常用的4線SPI接口,4線SPI器件有四個信號:

片選(CS):片選信號,低電平有效

時鐘(SPI CLK, SCLK):時鐘信號由主機產生

MOSI:主機輸出,從機輸入

MISO主機輸入,從機輸出

wKgZPGiIaBWAG1UtAABUjYREXu8824.png

主機和從機之間的SPI連接 這里要注意一下,主機和從機的MOSI和MISO的接線,這個跟串口TX,RX不一樣,很多人容易搞錯,主機的MISO接從機的MISO,主機的MOSI接從機的MOSI,直連不交叉。 那怎么判斷哪個是主機呢?咱們產生時鐘信號的器件稱為主機。主機和從機之間傳輸的數據與主機產生的時鐘同步。另外SPI接口只能有一個主機,但可以有一個或多個從機。關注公眾號:硬件筆記本 來自主機的片選信號用于選擇從機。這通常是一個低電平有效信號,拉高時從機與SPI總線斷開連接。當使用多個從機時,主機需要為每個從機提供單獨的片選信號。

工作速度

SPI速度的典型范圍:1 MHz至100 MHz(4 Mbps至400 Mbps),具體速率取決于器件等級:

消費級IC:1-10 MHz(4-40 Mbps) 工業級器件:10-25 MHz(40-100 Mbps) 但咱們在實際應用中,會受限于外設支持(如Flash芯片可達80 MHz,傳感器通常8 MHz)

這里再插一句,對比I2C來說,I2C速度就低太多了:標準模式100Kbps,高速模式5Mbps(理論值),但是I2C會少占用兩個IO口,所以I2C速度勝在省引腳,SPI贏在速度快。

031

數據傳輸

SPI的數據傳輸,整個過程是這樣的:

首先,作為主控的設備要產生時鐘信號(SCLK),這個信號就像通信的節拍器。同時,主機要通過拉低片選信號(CS)來選中要通信的從設備,這個CS信號通常是低電平有效,所以主機要給它一個邏輯0。

SPI最厲害的地方在于它是全雙工的,這意味著主機可以通過MOSI線往外發送數據的同時,從設備也能通過MISO線往主機發送數據,兩邊是同時進行的。具體來說,主機把數據一位一位地放到MOSI線上移出去,同時又在MISO線上一位一位地收數據。

所有這些數據的發送和接收都是嚴格跟著時鐘信號的邊沿走的,你可以選擇在時鐘的上升沿或者下降沿來采樣數據。至于每次通信要傳多少位數據,這個得看具體器件的規格書,不同芯片的要求可能不一樣。

咱們來看兩張動圖

wKgZPGiIaBaAK6YJAAElvIE8UBY687.gif

wKgZPGiIaBaAIGnfAANvDuistc0786.gif

這個過程中要注意三點:

1、是時鐘必須由主機產生;

2、CS信號要提前拉低選中從機;

3、數據的收發是同步進行的,不是先發后收或者先收后發。這種設計讓SPI既簡單又高效,特別適合需要快速傳輸數據的場合。

原文授權自公眾號:硬件筆記本

041

工作模式

SPI有4種工作模式,主要通過CPOL和CPHA兩個參數來配置:

wKgZPGiIaBaAAF3GAADX6H8UT1A604.png

如下是SPI模式0的時序圖。

傳輸的開始和結束用綠色虛線表示;采樣邊沿用橙色虛線表示;移位邊沿用藍色虛線表示。當然,這些圖形僅供參考。要成功進行SPI通信,必須參閱器件的數據手冊并確保滿足器件的時序規格。

wKgZPGiIaBaAOVUpAAEroTRsMNM137.png

如下是SPI模式1的時序圖。此時:

時鐘極性為0,表示時鐘信號的空閑狀態為低電平;

時鐘相位為1,表示數據在下降沿采樣(由橙色虛線顯示),并且數據在時鐘信號的上升沿移出(由藍色虛線顯示)。

wKgZPGiIaBaAbP1FAAD9nT2P9dk815.png

如下是SPI模式2的時序圖。此時:

時鐘極性為1,表示時鐘信號的空閑狀態為高電平。

時鐘相位為1,表示數據在下降沿采樣(由橙色虛線顯示),并且數據在時鐘信號的上升沿移出(由藍色虛線顯示)。

wKgZPGiIaBaANYRQAAF6rC14DrA437.png

如下是SPI模式3的時序圖。此時:

時鐘極性為1,表示時鐘信號的空閑狀態為高電平。

時鐘相位為0,表示數據在上升沿采樣(由橙色虛線顯示),并且數據在時鐘信號的下降沿移出(由藍色虛線顯示)。

wKgZPGiIaBaAICnxAAGqzx2A8-s880.png

051

多從機配置

咱們的多個從機可與單個SPI主機一起使用。從機可以采用常規模式連接,或采用菊花鏈模式連接。

常規SPI模式:

wKgZPGiIaBaAZ3xbAADBjpjXj1Y866.png

在咱們SPI常規連接模式下,咱們主機必須為每個從設備單獨配備一個片選信號線(CS)。當主機將某個從機的CS信號拉低時,這個從機就被選中,此時MOSI和MISO線上的時鐘和數據信號就可以和這個特定的從機進行通信。關注公眾號:硬件筆記本

這里有個重要限制:同一時間只能有一個從機的CS信號被拉低,如果同時拉低多個CS信號,會導致多個從機同時在MISO線上返回數據,造成數據沖突,主機就無法分辨這些數據到底來自哪個從機。

隨著系統連接的從機數量增多,主機需要提供的片選線數量也會相應增加。比如連接8個從機就需要8根獨立的CS線,這會快速占用主機的IO口資源,從而限制了系統能夠支持的從機數量。為了解決這個問題,可以采用一些擴展技術,比如使用多路復用器(MUX)來產生片選信號。不過這種方案會增加一些硬件復雜度,需要額外添加多路復用器芯片。

菊花鏈模式:

wKgZPGiIaBeAYcLLAACk0cxnIFk342.png

在SPI菊花鏈連接方式下,所有從設備共享同一個片選信號(CS),從一個從機傳播到下一個從機。具體工作過程是:主機發出時鐘信號(SCLK)后,數據首先傳輸到第一個從機,第一個從機將數據提供給第二個從機,這樣依次傳遞下去。所有從機都使用同一個時鐘信號進行同步。

這種連接方式的特點是數據傳輸需要更多的時鐘周期。如下圖,比如在一個8位數據寬度的系統中,如果要讓第三個從機收到數據,就需要24個時鐘脈沖(3個從機×8位),而在常規SPI模式下只需要8個時鐘脈沖。這是因為數據需要依次通過每個從機,每個從機都會對數據進行處理和轉發。

wKgZPGiIaBeAcBTlAAFbK052Pfo446.png

菊花鏈配置:數據傳播

需要注意的是,不是所有SPI設備都支持菊花鏈模式。在使用這種連接方式前,必須仔細查看所用芯片的技術手冊,確認其是否支持菊花鏈功能。有些芯片可能只支持常規的獨立片選模式。此外,菊花鏈模式雖然節省了片選信號線,但會降低通信效率,因此要根據實際應用需求權衡選擇。

061

總結

SPI接口雖然簡單,但在實際應用中需要注意很多細節:

1、接線要正確(直連不交叉);

2、模式要匹配(看器件手冊);

3、多從機時要合理選擇連接方式。

記住這些要點,就能用好SPI接口啦!如果遇到問題,最靠譜的辦法就是查閱器件的數據手冊。

原文授權自公眾號:硬件筆記本 特此鳴謝!

掃碼關注,看更多技術文章

wKgZPGiIaBeAaXdeAAB8M7_Wfjg826.jpg

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

    關注

    17

    文章

    1806

    瀏覽量

    96316
  • 通信接口
    +關注

    關注

    3

    文章

    252

    瀏覽量

    31504
  • SPI接口
    +關注

    關注

    0

    文章

    266

    瀏覽量

    35624
  • SPI通信
    +關注

    關注

    0

    文章

    37

    瀏覽量

    11694
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    AD7193如何通過spi時序來進行模擬spi通信編程?

    本人準備應用AD7193,現在直無法實現AD7193 的spi通信,請問如何通過spi時序
    發表于 12-21 07:36

    如何看時序,如何用時序

    如何看時序,如何用時序?求些詳細的資料。
    發表于 01-21 12:29

    什么是SPISPI通信過程?是怎樣的

    目錄SPI主線協議——ESP32學習筆記零、前言、什么是SPI?二、通信過程?三、極性和相位四、總結
    發表于 02-17 06:52

    求分享下FlexIO時序嗎?

    引腳:FlexIO_D6 來自主控端的 SPI 固定為模式 3(即 CPOL = 1 和 CPHA = 1)。所以 uC FlexIO 將支持模式 3。 可以分享下 FlexIO 時序
    發表于 05-04 08:17

    AD9945與STM32之間通過SPI通信通信時序怎么寫?

    我最近做個CCD的項目,需要用到AD9945,因為他的頻率高,但是AD9945怎么與STM32F103外部引腳連接,他輸出的12位并行數據接到哪里?還有AD9945與STM32之間通過SPI通信
    發表于 12-05 08:28

    時序和類的關系

    時序是在軟件系統設計中直接和程序代碼相關聯的,準確地說,程序代碼是由類直接產生,而時序
    發表于 10-29 11:21 ?7027次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>圖</b>和類<b class='flag-5'>圖</b>的關系

    什么是時序_時序怎么看_教你如何看懂時序

    時序在有些教材上,又被翻譯為順序,兩者在表述上雖然有些差別,但是大體都是準確的,可能稱之為時序
    發表于 12-11 19:31 ?17.1w次閱讀
    什么是<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通信筆記

    SPI通信概述SPI,Serial Peripheral Interface,串行外設接口。1、總線構成:時鐘線SCK(主機用于控制通信
    發表于 12-09 17:21 ?5次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>通信筆記</b>

    SPI主線協議——ESP32學習筆記

    目錄SPI主線協議——ESP32學習筆記零、前言、什么是SPI?二、通信過程?三、極性和相位四、總結
    發表于 12-22 19:23 ?18次下載
    <b class='flag-5'>SPI</b>主線協議——ESP32學習<b class='flag-5'>筆記</b>

    SPI總線協議及SPI時序詳解

    的管腳,同時為PCB的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議。 SPI個環形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序
    發表于 02-11 15:41 ?31次下載
    <b class='flag-5'>SPI</b>總線協議及<b class='flag-5'>SPI</b><b class='flag-5'>時序</b><b class='flag-5'>圖</b>詳解

    關于紅外通信原理時序介紹

    關于紅外通信原理時序介紹,幫助單片機寫代碼程序
    發表于 06-26 09:25 ?0次下載

    PLC時序的理解

    學習PLC編程的過程中,經常接觸到個概念,就是時序,開始的時候,跳過了時序的學習,今天在這里補上
    的頭像 發表于 04-25 11:31 ?1.5w次閱讀
    PLC<b class='flag-5'>時序</b><b class='flag-5'>圖</b>的理解

    UML時序詳解

    本篇介紹了UML時序的基礎知識,并通過visio繪制個物聯網設備WIFI配網的UML時序實例,來介紹UML
    的頭像 發表于 05-16 09:09 ?3047次閱讀
    UML<b class='flag-5'>時序</b><b class='flag-5'>圖</b>詳解

    SPI子系統之SPI時序

    ,硬件設計必須注意信號質量風險,軟件開發人員也要會看波形。 這里的參數,spi 驅動不需要設置,但是半導體廠商提供的 spi 控制器驅動中,可以修改這些參數
    的頭像 發表于 07-27 10:51 ?5240次閱讀
    <b class='flag-5'>SPI</b>子系統之<b class='flag-5'>SPI</b><b class='flag-5'>時序</b><b class='flag-5'>圖</b>

    10張:秒懂各種常用通信協議原理

    這絕對是個寶藏級別的,這些顯示電子系統中信號波形的,有助于幫助我們理解傳輸的機理。Chrent1、
    的頭像 發表于 11-07 08:06 ?1400次閱讀
    10張<b class='flag-5'>動</b><b class='flag-5'>圖</b>:秒懂各種常用<b class='flag-5'>通信</b>協議原理
    主站蜘蛛池模板: 噜噜噜狠狠夜夜躁 | 日本黄色短视频 | 久久精品人人爽人人爽快 | aa视频免费 | 欧美日韩在线成人看片a | 久久天天躁狠狠躁夜夜不卡 | 天天爽夜夜爽8888视频精品 | 四虎在线永久免费视频网站 | 色视频网站在线观看 | 久久精品国产精品亚洲婷婷 | 亚洲欧美视频 | 黄到让你下面湿的视频 | 成人xx视频免费观看 | 国产中出视频 | 欧美熟夫 | 手机在线完整视频免费观看 | videossexotv极度另类高清 | 特黄色一级毛片 | 久草色香蕉 | 羞羞色男人的天堂伊人久久 | 四虎影视在线观看 | 久久极品| 久操精品在线观看 | 特一级黄 | 四虎影院最新网站 | 乌克兰毛片 | 精品一区二区三区视频 | 午夜视频福利在线 | 天天操伊人 | 一级特黄a视频 | 国产激情视频一区二区三区 | www.碰| 国产三级在线免费 | 四虎海外在线永久免费看 | 亚洲福利一区福利三区 | 国产婷婷色一区二区三区深爱网 | 美女丝袜长腿喷水gif动态图 | 国产成人亚洲毛片 | 狠狠躁| 手机看片欧美日韩 | 4438x成人网最大色成网站 |