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

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

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

通信教程的04_SPI接口說明及原理

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-02-05 12:29 ? 次閱讀

教程由作者strongerHuang于2019年09月原創(chuàng)發(fā)布。

標(biāo)簽:串口、 SPI、 通信

版權(quán)所有:禁止商用

申明:該文檔僅供個人學(xué)習(xí)使用,轉(zhuǎn)載請公眾號聯(lián)系作者授權(quán)。

1寫在前面

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

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

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

2SPI接口

SPI總線是一種4線總線,通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少4根線,事實上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è)備產(chǎn)生;

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

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

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

2.1 一主一從

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

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

2.2 一主多從

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

A.常規(guī)

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

B.一條SS信號

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

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

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

3.1 SPI時鐘

理論上SPI的時鐘頻率可以做到很大,一般幾MHz~幾百MHz,拿常見的W25Q16來說,SPI最高支持80MHz。

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

3.2 SPI數(shù)據(jù)

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

MOSI:主機 -> 從機

MISO:從機 -> 主機

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

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

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

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

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

3.3 時鐘極性和相位

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

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

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

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

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

5

說明

1.該文檔僅供個人學(xué)習(xí)使用,版權(quán)所有,禁止商用。

2.本文由我一個人編輯并整理,難免存在一些錯誤。

3.本文收錄于公眾號『嵌入式專欄』,關(guān)注微信公眾號回復(fù)【通信教程】即可查看全系列教程。

6最后

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

    關(guān)注

    18

    文章

    5926

    瀏覽量

    135704
  • SPI接口
    +關(guān)注

    關(guān)注

    0

    文章

    258

    瀏覽量

    34288
收藏 人收藏

    評論

    相關(guān)推薦

    SPI通信協(xié)議的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信協(xié)議,即串行外圍設(shè)備接口,是一種高速、全雙工、同步通信總線,由摩托羅拉公司提出并廣泛應(yīng)用。
    的頭像 發(fā)表于 09-09 17:04 ?569次閱讀

    單片機SPI通信實現(xiàn)

    在深入探討單片機(如基于STM32、AVR、PIC等)如何通過SPI(Serial Peripheral Interface)進(jìn)行通信之前,我們先概述SPI通信的基本原理,隨后以STM
    的頭像 發(fā)表于 09-09 17:00 ?260次閱讀

    M800/M80/E80/C80系列plc接口說明

    三菱數(shù)控系統(tǒng)plc接口說明
    發(fā)表于 09-09 10:13 ?2次下載

    請問可以用FX3作為SPI的Master,通過GPIF II接口實現(xiàn)SPI通信嗎?

    你好,我有一塊 CYUSBKIT-003 電路板,我正在研究它。 1.為了學(xué)習(xí)GPIF II接口的使用,我想用FX3的GPIF II實現(xiàn)SPI通信。請問可以用FX3作為SPI的Mast
    發(fā)表于 05-29 07:46

    想搞懂通信協(xié)議?先來看一篇SPI熱熱身

    SPI是串行外設(shè)接口(SerialPeripheralInterface)的縮寫,它是一種同步串行通信接口,用于微控制器和外圍設(shè)備(如傳感器、SD卡、其他微控制器等)之間的
    的頭像 發(fā)表于 05-12 08:10 ?1399次閱讀
    想搞懂<b class='flag-5'>通信</b>協(xié)議?先來看一篇<b class='flag-5'>SPI</b>熱熱身

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-WebGL網(wǎng)頁圖形庫開發(fā)接口說明

    一、場景介紹 WebGL主要幫助開發(fā)者在前端開發(fā)中完成圖形圖像的相關(guān)處理,比如繪制彩色圖形等。目前該功能僅支持使用兼容JS的類Web開發(fā)范式開發(fā)。 二、接口說明 表1 WebGL主要接口列表 本文參考引用HarmonyOS官方開發(fā)文檔,基于API9。
    發(fā)表于 03-11 15:51

    RL78/G23 SMS自動控制SPI(主)通信應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《RL78/G23 SMS自動控制SPI(主)通信應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 01-29 10:37 ?0次下載
    RL78/G23 SMS自動控制<b class='flag-5'>SPI</b>(主)<b class='flag-5'>通信</b>應(yīng)用<b class='flag-5'>說明</b>

    i2c接口spi接口區(qū)別

    I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)都是用于設(shè)備間通信的串行接口標(biāo)準(zhǔn)。它們在很多方面有著相似之處,但也有一些
    的頭像 發(fā)表于 12-25 15:02 ?3387次閱讀

    SPI接口的相關(guān)介紹

    軸加速度傳感器,下面就由小編帶各位小伙伴詳細(xì)了解一下SPI接口。六軸加速度傳感器使用SPI總線進(jìn)行設(shè)置與數(shù)據(jù)傳輸。SPI通信原理很簡單,它
    的頭像 發(fā)表于 12-06 15:49 ?1159次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的相關(guān)介紹

    SPI通信協(xié)議原理是什么

    UART串口通信中的數(shù)據(jù)只能一位一位的傳輸,如果數(shù)據(jù)量比較大的時候,傳輸速率會受到很大影響,此時我們就可以考慮使用同步串行通信了,比如SPI。 SPI
    的頭像 發(fā)表于 11-24 17:37 ?933次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>協(xié)議原理是什么

    SPI接口知識

    電子發(fā)燒友網(wǎng)站提供《SPI接口知識.pdf》資料免費下載
    發(fā)表于 11-23 10:12 ?0次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>知識

    Xilinx FPGA IP之Block Memory Generator AXI接口說明

    之前的文章對Block Memory Generator的原生接口做了說明和仿真,本文對AXI接口進(jìn)行說明。
    的頭像 發(fā)表于 11-14 18:25 ?1580次閱讀
    Xilinx FPGA IP之Block Memory Generator AXI<b class='flag-5'>接口說明</b>

    SPI上拉合不上拉的區(qū)別 UART和SPI的主要區(qū)別

     使用SPI接口時,需要根據(jù)具體的外設(shè)和系統(tǒng)需求來配置SPI的參數(shù),如通信速度、數(shù)據(jù)位寬、主從模式等。主設(shè)備通過操作SPI相關(guān)的寄存器或調(diào)用
    的頭像 發(fā)表于 11-10 16:47 ?9165次閱讀

    單片機spi接口的使用方法有哪些(spi接口和串口的區(qū)別)

    如果單片機沒有硬件SPI模塊,或者需要額外的IO引腳來實現(xiàn)多個SPI設(shè)備的通信,可以使用軟件SPI模擬。軟件SPI通常使用GPIO口模擬
    的頭像 發(fā)表于 11-10 16:38 ?3370次閱讀

    基于STM32編寫一個SPI接口例程

    SPI是串行外設(shè)接口的縮寫,是一種高速的,全雙工,同步的通信總線
    的頭像 發(fā)表于 10-31 15:53 ?2276次閱讀
    基于STM32編寫一個<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>例程