RM新时代网站-首页

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

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

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

SPI可以像I2C掛多個(gè)設(shè)備嗎?

strongerHuang ? 來源:strongerHuang ? 2023-05-14 10:10 ? 次閱讀

最近看到有小伙伴在討論:SPI可以像I2C掛多個(gè)設(shè)備嗎?

簡(jiǎn)單來說,就是一主多從。

其實(shí),SPI是在I2C發(fā)展之后才起來的,自然在設(shè)計(jì)的時(shí)候,會(huì)考慮這個(gè)情況。

本文就給大家講講關(guān)于SPI接口的那些內(nèi)容。

SPI 介紹

SPI:Serial Peripheral Interface,是串行外設(shè)接口。

SPI是由摩托羅拉于 1985 年前后開發(fā),是一種適用于短距離、設(shè)備到設(shè)備通信的同步串行接口。

從那時(shí)起,這種接口就已成為許多半導(dǎo)體制造商,特別是微控制器MCU)和微處理器(MPU)采用的事實(shí)標(biāo)準(zhǔn)。

SPI 接口

SPI總線是一種4線總線,通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以。

MOSI:Master Output Slave Input,主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入;

MISO:Master Input Slave Output,主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出;

SCLK:Serial Clock,時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生;

SS:Slave Select,從設(shè)備選擇信號(hào),由主設(shè)備控制;

ab543d24-f0aa-11ed-90ce-dac502259ad0.png

上面的SS信號(hào),也可以理解為CS信號(hào),一般是低電平有效,所以也是NSS(非)信號(hào);

CS:Chip Select,片選信號(hào)(從設(shè)備使能/選擇信號(hào)),由主設(shè)備控制;

一主一從

最基本的SPI通信就是一主一從,比如:一個(gè)STM32作為主機(jī),一個(gè)W25Q16(SPI Flash)作為從機(jī)。還有兩個(gè)MCU之間進(jìn)行SPI通信等。

ab65a3e8-f0aa-11ed-90ce-dac502259ad0.png

上圖例子是主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)(0x53),從機(jī)應(yīng)答一個(gè)字節(jié)數(shù)據(jù)(0x46)。

一主多從

SPI可以一主一從(一個(gè)主機(jī),一個(gè)從機(jī)),但也可以一主多從。一主多從常見有兩種連接方式。

A.常規(guī)

通常,每個(gè)從機(jī)都需要一條單獨(dú)的SS線,要與指定的從機(jī)通信,將該從機(jī)的SS線設(shè)為低電平,并將其余的保持為高電平即可。

ab82beb0-f0aa-11ed-90ce-dac502259ad0.png

B.一條SS信號(hào)

某些應(yīng)用只需要一條NSS即可(比如:移位寄存器),對(duì)于這種布局,數(shù)據(jù)從一個(gè)從設(shè)備移位到另一個(gè)從設(shè)備。

ab95e742-f0aa-11ed-90ce-dac502259ad0.png

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

SPI的通信比較簡(jiǎn)單,一個(gè)時(shí)鐘傳輸一位數(shù)據(jù)(主機(jī) -> 從機(jī),或者從機(jī) -> 主機(jī))。

SPI時(shí)鐘

理論上SPI的時(shí)鐘頻率可以做到很大,一般幾MHz~幾百M(fèi)Hz,拿常見的W25Q16來說,SPI最高支持80MHz。

SPI通信速率要結(jié)合實(shí)際情況,不能超過主機(jī)或從機(jī)支持的最大時(shí)鐘頻率。

SPI數(shù)據(jù)

SPI的數(shù)據(jù)分兩個(gè)方向:

MOSI:主機(jī) -> 從機(jī)

MISO:從機(jī) -> 主機(jī)

SPI通信有一個(gè)“缺點(diǎn)”:沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。

可以理解為:不知道是什么時(shí)候主機(jī)發(fā)給從機(jī),什么時(shí)候從機(jī)發(fā)給主機(jī),到底該發(fā)多少字節(jié)數(shù)據(jù)等。

此時(shí),需要通信的主機(jī)和從機(jī)達(dá)成約定,一般由主機(jī)進(jìn)行控制讀寫的操作。

比如下面這個(gè)讀寫SPI Flash數(shù)據(jù)的操作:

abab0ca8-f0aa-11ed-90ce-dac502259ad0.jpg

前面1字節(jié)是指令,緊接著再3字節(jié)(24位)地址,都是由主機(jī)發(fā)送給從機(jī)。 之后,主機(jī)讀取數(shù)據(jù)(由從機(jī)發(fā)送出來)。

時(shí)鐘極性和相位

除了設(shè)置時(shí)鐘頻率外,主機(jī)還必須配置與數(shù)據(jù)有關(guān)的時(shí)鐘極性和相位。

abc7cb5e-f0aa-11ed-90ce-dac502259ad0.jpg

CPOL確定時(shí)鐘的極性,極性可以通過簡(jiǎn)單的逆變器進(jìn)行轉(zhuǎn)換。

CPHA確定相對(duì)于時(shí)鐘脈沖的數(shù)據(jù)位的時(shí)序(即相位)。

一般集成有SPI外設(shè)的處理器,都有SPI相關(guān)的配置寄存器,拿STM32來說,參考手冊(cè)里面有詳細(xì)介紹SPI配置的信息。

建議大家結(jié)合時(shí)序圖理解,不要死記硬背。

審核編輯:湯梓紅

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

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151310
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17123

    瀏覽量

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

    關(guān)注

    33

    文章

    8575

    瀏覽量

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

    關(guān)注

    17

    文章

    1706

    瀏覽量

    91498
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1484

    瀏覽量

    123616

原文標(biāo)題:SPI可以像I2C掛多個(gè)設(shè)備嗎?

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SPI總線及I2C總線工作原理

    SPI總線及I2C總線工作原理,本內(nèi)容詳細(xì)介紹了SPI總線和I2C總線的工作原理和比較
    發(fā)表于 12-08 16:55 ?0次下載

    CAN、I2S、I2C、SPI、SSP總線的介紹和比較

    CAN、I2S、I2CSPI、SSP總線的介紹和比較。
    發(fā)表于 07-14 16:20 ?53次下載

    spii2c總線有什么區(qū)別

    SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫。I2C總線是一個(gè)真正的多主機(jī)總線,總線上多個(gè)主機(jī)初始化傳輸,可以通過傳輸檢測(cè)和仲裁來防止數(shù)據(jù)被破壞
    發(fā)表于 12-06 11:39 ?4.1w次閱讀
    <b class='flag-5'>spi</b>與<b class='flag-5'>i2c</b>總線有什么區(qū)別

    淺談I2C總線,I2C接口和SPI接口的作用相同

    SDA 和 SCL 都是雙向的。SPI 總線有兩根單獨(dú)的線,分別用于兩個(gè)方向的通信,而 I2C 總線不同,它使用同一根線來完成主機(jī)發(fā)送數(shù)據(jù)和接收從機(jī)響應(yīng)。另外,與 SPI 總線具有多個(gè)
    的頭像 發(fā)表于 03-21 10:24 ?2.5w次閱讀
    淺談<b class='flag-5'>I2C</b>總線,<b class='flag-5'>I2C</b>接口和<b class='flag-5'>SPI</b>接口的作用相同

    I2C總線是如何工作的

    I2C結(jié)合了SPI和UART的優(yōu)點(diǎn)。使用I2C,您可以多個(gè)設(shè)備連接到單個(gè)主
    發(fā)表于 09-13 15:46 ?2284次閱讀

    樹莓派怎樣連接多個(gè)I2C設(shè)備

     簡(jiǎn)單。 i2c是一輛公共汽車??偩€的目的是與多個(gè)設(shè)備通信。將設(shè)備并行連接到同一i2c總線。您可以
    的頭像 發(fā)表于 11-13 09:27 ?1.9w次閱讀
    樹莓派怎樣連接<b class='flag-5'>多個(gè)</b><b class='flag-5'>I2C</b><b class='flag-5'>設(shè)備</b>

    I2C總線的工作原理以及優(yōu)缺點(diǎn)解析

    如果您正在使用OLED顯示器,氣壓傳感器或陀螺儀/加速度計(jì)模塊的項(xiàng)目,您可能會(huì)發(fā)現(xiàn)正在使用I2C總線。 I2C總線簡(jiǎn)介 I2C結(jié)合了SPI和UART的優(yōu)點(diǎn)。使用
    發(fā)表于 11-28 09:13 ?1.5w次閱讀
    <b class='flag-5'>I2C</b>總線的工作原理以及優(yōu)缺點(diǎn)解析

    I2C系列的合集,可以系統(tǒng)學(xué)習(xí)I2C協(xié)議

    這篇文章給大家?guī)砹?b class='flag-5'>I2C系列的合集,可以系統(tǒng)學(xué)習(xí)I2C協(xié)議。大家趕緊看看吧! 1、I2C總線:何時(shí)使用I2C緩沖器 本文討論了使用
    的頭像 發(fā)表于 09-23 15:28 ?3143次閱讀

    詳細(xì)介紹GPIO、I2CSPI通訊原理以及物理層原理

    6. I2C接口工作模式7. 硬件拉高拉低的過程8. 一對(duì)多9. 開發(fā)流程三. SPI1. 什么是SPI?2. SPI優(yōu)與缺點(diǎn)3.
    發(fā)表于 12-05 12:51 ?21次下載
    詳細(xì)介紹GPIO、<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>通訊原理以及物理層原理

    I2C總線能多少設(shè)備

    I2C 總線能多少設(shè)備? 7-bit address :2 的 7 次方,能 128 個(gè)設(shè)備
    的頭像 發(fā)表于 07-25 09:45 ?4060次閱讀
    <b class='flag-5'>I2C</b>總線能<b class='flag-5'>掛</b>多少<b class='flag-5'>設(shè)備</b>

    I2CSPI的區(qū)別是什么 速率對(duì)比

    high 應(yīng)用 重要數(shù)據(jù) 大量數(shù)據(jù) 流控 yes no 設(shè)備地址 yes no 常規(guī)用途 命令 數(shù)據(jù) ? I2CSPI 的速率如下: ? I2C模式 速度 標(biāo)準(zhǔn) 100KHz
    的頭像 發(fā)表于 07-27 10:55 ?3679次閱讀

    如何解決I2C器件死鎖的問題?

    如何解決I2C器件死鎖的問題? I2C總線是一種流行的串行通信協(xié)議,在許多嵌入式系統(tǒng)中使用。I2C可以連接多個(gè)從屬
    的頭像 發(fā)表于 09-12 11:18 ?2437次閱讀

    I2C總線能多少設(shè)備 I2C架構(gòu)

    I2C總線能多少設(shè)備? 理論上: 7-bit address :2 的 7 次方,能 128 個(gè)設(shè)備
    的頭像 發(fā)表于 09-28 14:20 ?2918次閱讀
    <b class='flag-5'>I2C</b>總線能<b class='flag-5'>掛</b>多少<b class='flag-5'>設(shè)備</b> <b class='flag-5'>I2C</b>架構(gòu)

    UART、SPI、I2C比較 串口通信介紹

    ,較少用于遠(yuǎn)距離通信。 SPI實(shí)現(xiàn)要簡(jiǎn)單一些,UART需要固定的波特率,就是說兩位數(shù)據(jù)的間隔要相等,而SPI則無所謂,因?yàn)樗怯袝r(shí)鐘的協(xié)議。 I2C的速度比SPI慢一點(diǎn),協(xié)議比
    的頭像 發(fā)表于 11-09 18:06 ?1389次閱讀
    UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比較 串口通信介紹

    SPII2C通信協(xié)議:應(yīng)用與區(qū)別

    /DAC芯片等場(chǎng)合。SPII2C在連接方式、傳輸速率和設(shè)備支持等方面有顯著差異,但隨著物聯(lián)網(wǎng)和智能設(shè)備的發(fā)展,它們都將在嵌入式系統(tǒng)中發(fā)揮重要作用。
    的頭像 發(fā)表于 04-22 16:45 ?1795次閱讀
    RM新时代网站-首页