色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

STM32基礎(chǔ)知識:SPI總線概述

CHANBAEK ? 來源:上下求索電子er ? 作者:上下求索電子er ? 2023-10-26 14:26 ? 次閱讀

SPI總線概述

1 基本概念

串行外設(shè)接口(Serial Peripheral Interface)的簡稱也叫做SPI,是一種高速、全雙工同步通信的一種接口,串行外設(shè)接口一般是需要4根線來進(jìn)行通信(NSS、MISO、MOSI、SCK),但是如果打算實(shí)現(xiàn)單向通信也可以只使用3根線(NSS、MISO/MOSI、SCK),就可以利用這種機(jī)制實(shí)現(xiàn)一對多或者一對一的通信。

2 引腳定義

通常SPI通過4個(gè)引腳與外部器件相連:

  • MISO (Master Input Slave Output):主設(shè)備輸入/從設(shè)備輸出引腳 。該引腳在從模式下發(fā)送數(shù)據(jù),在主模式下接收數(shù)據(jù)。
  • MOSI (Master Output Slave Input):主設(shè)備輸出/從設(shè)備輸入引腳。 該引腳在主模式下發(fā)送數(shù)據(jù),在從模式下接收數(shù)據(jù)。
  • SCK (Serial Clock):串行時(shí)鐘 ,作為主設(shè)備的輸出,從設(shè)備的輸入.
  • NSS (Negative Slave Select):低電平有效的從器件選擇。 這是一個(gè)可選的引腳,用來選擇主/從設(shè)備。它的功能是用來作為“片選引腳”,讓主設(shè)備可以單獨(dú)地與特定從設(shè)備通訊,避免數(shù)據(jù)線上的沖突。

圖片
SPI總線:單一主機(jī)對單一從機(jī)

圖片
SPI總線:單一主機(jī)對復(fù)合從機(jī)

SPI總線采用的 環(huán)形結(jié)構(gòu) ,利用的是主從模式(主機(jī)→從機(jī))進(jìn)行數(shù)據(jù)的傳輸,由于是同步通信,所以在主機(jī)發(fā)送數(shù)據(jù)的同時(shí)也會收到從機(jī)發(fā)送的數(shù)據(jù)。

圖片

MOSI腳相互連接,MISO腳相互連接。這樣,數(shù)據(jù)在主和從之間串行地傳輸(MSB位在)。通信總是由主設(shè)備發(fā)起。主設(shè)備通過MOSI腳把數(shù)據(jù)發(fā)送給從設(shè)備,從設(shè)備通過MISO引腳回傳數(shù)據(jù)。這意味全雙工通信的數(shù)據(jù)輸出和數(shù)據(jù)輸入是用同一個(gè)時(shí)鐘信號同步的;時(shí)鐘信號由主設(shè)備通過SCK腳提供。

NSS的說明:主機(jī)的NSS引腳在空閑狀態(tài)下應(yīng)處于高電平(VDD),主機(jī)發(fā)送數(shù)據(jù)時(shí),主機(jī)的NSS應(yīng)為輸出模式,從機(jī)的NSS為輸入模式,當(dāng)主機(jī)的NSS引腳拉低,從設(shè)備的NSS引腳可以檢測到低電平,該設(shè)備被選中。

從SPI的結(jié)構(gòu)框圖中可以看到NSS也是外部引腳的名稱,其實(shí)控制SPI收發(fā)數(shù)據(jù)是通過內(nèi)部的NSS信號實(shí)現(xiàn)的,而這個(gè)內(nèi)部的NSS信號源可以由SPI_CR1寄存器的SSM(Software slave management)位來配置。

  • 軟件NSS模式,SSM=1 :可以通過設(shè)置SPI_CR1寄存器的SSM位來使能這種模式。在這種模式下NSS引腳可以用作它用,而內(nèi)部NSS信號電平可以通過寫SPI_CR1的SSI位來驅(qū)動(dòng)。
    圖片
    圖片
    SSM :軟件從設(shè)備管理。當(dāng)SSM被置位時(shí),NSS引腳上的電平由SSI位的值決定。
    0:禁止軟件從設(shè)備管理;
    1:啟用軟件從設(shè)備管理。
  • 硬件NSS模式,SSM=0:內(nèi)部NSS信號電平由NSS引腳電平?jīng)Q定。在這種“硬件模式”下要用SPI_CR2的SSOE(Software Save Output Enable)位來控制NSS作為輸入還是輸出,當(dāng)SSOE=0時(shí),NSS引腳被配置為輸入;當(dāng)SSOE=0時(shí),NSS引腳被配置為輸出。

3 工作模式

注意:由于SPI外設(shè)是 全雙工同步通信 ,所以時(shí)鐘信號就由SCK引腳來生成, SCK引腳只能由主設(shè)備控制,從設(shè)備是無法控制的 ,所以SCK引腳輸出的脈沖信號的極性和相位就需要進(jìn)行配置。

3.1 時(shí)鐘信號的相位和極性

SPI_CR寄存器的CPOL(時(shí)鐘極性位)和CPHA(時(shí)鐘相位位),能夠組合成四種可能的時(shí)序關(guān)系。

  • 時(shí)鐘極性CPOL :指的是在SPI總線空閑狀態(tài)下(不傳輸任何數(shù)據(jù))SCK引腳的默認(rèn)的電平狀態(tài)。SCK空閑狀態(tài)下的電平可以由SPI_CR1寄存器的CPOL位來進(jìn)行設(shè)置。主設(shè)備的時(shí)鐘極性要根據(jù)從設(shè)備來設(shè)置。
    • 如果CPOL被清‘0’,SCK引腳在空閑狀態(tài)保持低電平;
    • 如果CPOL被置’1’,SCK引腳在空閑狀態(tài)保持高電平。
  • 時(shí)鐘相位CPHA :指的是在傳輸數(shù)據(jù)時(shí)選擇脈沖信號的邊沿(上升沿或者下降沿)來進(jìn)行數(shù)據(jù)的采集或者修改。該位可以由SPI_CR1寄存器的CPHA位來進(jìn)行設(shè)置。主設(shè)備的時(shí)鐘相位要根據(jù)從設(shè)備來設(shè)置。
    • 如果CPHA位被置’1’,SCK時(shí)鐘的第二個(gè)邊沿(CPOL位為0時(shí)就是下降沿,CPOL位為’1’時(shí)就是上升沿)進(jìn)行數(shù)據(jù)位的采樣,數(shù)據(jù)在第二個(gè)時(shí)鐘邊沿被鎖存。
    • 如果CPHA位被清’0’,SCK時(shí)鐘的第一邊沿(CPOL位為’0’時(shí)就是下降沿,CPOL位為’1’時(shí)就是上升沿)進(jìn)行數(shù)據(jù)位采樣,數(shù)據(jù)在第一個(gè)時(shí)鐘邊沿被鎖存。
CPOLCPHA模式說明
00該模式指的是SCK引腳在空閑狀態(tài)下為低電平,并且在第一個(gè)時(shí)鐘邊沿(上升沿)采集數(shù)據(jù),在第二個(gè)時(shí)鐘邊沿(下降沿)來修改數(shù)據(jù)。
01該模式指的是SCK引腳在空閑狀態(tài)下為低電平,并且在第二個(gè)時(shí)鐘邊沿(下降沿)采集數(shù)據(jù),在第一個(gè)時(shí)鐘邊沿(上升沿)來修改數(shù)據(jù)。
10該模式指的是SCK引腳在空閑狀態(tài)下為高電平,并且在第一個(gè)時(shí)鐘邊沿(下降沿)采集數(shù)據(jù),在第二個(gè)時(shí)鐘邊沿(上升沿)來修改數(shù)據(jù)。
11該模式指的是SCK引腳在空閑狀態(tài)下為高電平,并且在第二個(gè)時(shí)鐘邊沿(上升沿)采集數(shù)據(jù),在第一個(gè)時(shí)鐘邊沿(下降沿)來修改數(shù)據(jù)。

通過這兩位可以得到四種不同的組合,就被作為SPI總線的工作模式( 模式0~模式3 ),到底要選擇哪種模式,主機(jī)的工作模式必須根據(jù)從設(shè)備的數(shù)據(jù)手冊的說明進(jìn)行設(shè)置。

在實(shí)際的開發(fā)過程中,使用最多是模式0模式3 ,比如2.4G無線通信模塊NRF24L01采用模式0來通信。

圖片

3.2 數(shù)據(jù)幀格式

  • 根據(jù)SPI_CR1寄存器中的LSBFIRST位,輸出數(shù)據(jù)位時(shí)可以MSB(高位先出)在先也可以LSB(低位先出)在先。主機(jī)的數(shù)據(jù)格式必須要根據(jù)從機(jī)的數(shù)據(jù)格式進(jìn)行設(shè)置。
  • 根據(jù)SPI_CR1寄存器的DFF位,每個(gè)數(shù)據(jù)幀可以是8位或是16位。所選擇的數(shù)據(jù)幀格式對發(fā)送和/或接收都有效。

圖片

DFF :數(shù)據(jù)幀格式 (Data frame format)

  • 0:使用8位數(shù)據(jù)幀格式進(jìn)行發(fā)送/接收;
  • 1:使用16位數(shù)據(jù)幀格式進(jìn)行發(fā)送/接收。
    注:只有當(dāng)SPI禁止(SPE=0)時(shí),才能寫該位,否則出錯(cuò)

LSBFIRST :幀格式 (Frame format)

  • 0:先發(fā)送MSB;
  • 1:先發(fā)送LSB。
    注:當(dāng)通信在進(jìn)行時(shí)不能改變該位的值。

4 通信速率

圖片

5 使用流程

The SPI HAL driver can be used as follows:

  (#) **Declare a SPI_HandleTypeDef handle structure**, for example:
      `SPI_HandleTypeDef  hspi`;

  (#)**Initialize the SPI low level resources** by implementing the `HAL_SPI_MspInit()` API:
      (##) **Enable the SPIx interface clock**
      (##) **SPI pins configuration**
          (+++) Enable the clock for the SPI GPIOs
          (+++) Configure these SPI pins as alternate function push-pull
      (##) **NVIC configuration if you need to use interrupt process**
          (+++) Configure the SPIx interrupt priority
          (+++) Enable the NVIC SPI IRQ handle
      (##) **DMA Configuration if you need to use DMA process**
          (+++) Declare a DMA_HandleTypeDef handle structure for the transmit or receive Stream/Channel
          (+++) Enable the DMAx clock
          (+++) Configure the DMA handle parameters
          (+++) Configure the DMA Tx or Rx Stream/Channel
          (+++) Associate the initialized hdma_tx(or _rx)  handle to the hspi DMA Tx or Rx handle
          (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on the DMA Tx or Rx Stream/Channel

  (#) **Program the Mode, BidirectionalMode , Data size, Baudrate Prescaler, NSS
      management, Clock polarity and phase, FirstBit and CRC configuration in the hspi Init structure.**

  (#) **Initialize the SPI registers by calling the** `HAL_SPI_Init() API`:
      (++) This API configures also the low level Hardware GPIO, CLOCK, CORTEX...etc)
          by calling the customized HAL_SPI_MspInit() API.

簡述如下:

  • 聲明一個(gè) SPI_HandleTypeDef 句柄結(jié);
  • 通過 HAL_SPI_MspInit() 初始化 SPI 低級資源;
    • 使能 SPIx 接口時(shí)鐘
    • SPI 引腳配置
    • 如果需要使用中斷進(jìn)程,配置NVIC
    • 如果需要使用DMA進(jìn)程,配置DMA
  • 在hspi初始化結(jié)構(gòu)體中配置Mode, BidirectionalMode , Data size, Baudrate Prescaler, NSS, management, Clock polarity and phase, FirstBit and CRC
  • 通過調(diào)用 HAL_SPI_Init()初始化 SPI 寄存器:
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8687

    瀏覽量

    151674
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10923

    瀏覽量

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

    關(guān)注

    4

    文章

    104

    瀏覽量

    27627
  • 同步通信
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    9171
收藏 人收藏

    評論

    相關(guān)推薦

    STM32單片機(jī)中的C語言基礎(chǔ)知識

    C語言是單片機(jī)開發(fā)中的必備基礎(chǔ)知識,本文列舉了部分STM32學(xué)習(xí)中比較常見的一些C語言基礎(chǔ)知識
    發(fā)表于 09-21 17:21 ?4601次閱讀

    SPI總線協(xié)議的基礎(chǔ)知識

    SPI,是英語 Serial Peripheral Interface 的縮寫顧名思義就是串行外圍設(shè)備接口。SPI是一種高速的,全雙工,同步的通信總線, 并且在芯片的管腳上只占用四根線。
    發(fā)表于 06-07 15:40 ?6759次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>總線</b>協(xié)議的<b class='flag-5'>基礎(chǔ)知識</b>

    CAN協(xié)議基礎(chǔ)知識

    CAN協(xié)議基礎(chǔ)知識I2C.SPI總線多用于短距離傳輸,協(xié)議簡單,數(shù)據(jù)量少,主要用于IC之間的通訊,而 CAN 總線則不同,CAN(Controller Area Network)
    發(fā)表于 08-19 06:24

    MATLAB基礎(chǔ)知識MATLAB的簡介,編程環(huán)境和基本操作的詳細(xì)概述

    MATLAB基礎(chǔ)知識MATLAB的簡介,編程環(huán)境和基本操作的詳細(xì)概述
    的頭像 發(fā)表于 06-02 10:18 ?7619次閱讀
    MATLAB<b class='flag-5'>基礎(chǔ)知識</b>MATLAB的簡介,編程環(huán)境和基本操作的詳細(xì)<b class='flag-5'>概述</b>

    S7300數(shù)值及BCD基礎(chǔ)知識概述

    本文主要介紹了S7300數(shù)值及BCD基礎(chǔ)知識概述.
    發(fā)表于 06-27 08:00 ?1次下載
    S7300數(shù)值及BCD<b class='flag-5'>基礎(chǔ)知識</b><b class='flag-5'>概述</b>

    電子元器件基礎(chǔ)知識概述(含圖片)

    本文主要介紹了電子元器件基礎(chǔ)知識概述(含圖片)。
    發(fā)表于 06-26 08:00 ?0次下載
    電子元器件<b class='flag-5'>基礎(chǔ)知識</b><b class='flag-5'>概述</b>(含圖片)

    單片機(jī)原理及應(yīng)用教程之單片機(jī)基礎(chǔ)知識概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)原理及應(yīng)用教程之單片機(jī)基礎(chǔ)知識概述包括了:1. 單片機(jī)概述,2. 單片機(jī)學(xué)習(xí)的預(yù)備知識,3. Proteus應(yīng)用簡介。
    發(fā)表于 04-16 08:00 ?23次下載
    單片機(jī)原理及應(yīng)用教程之單片機(jī)<b class='flag-5'>基礎(chǔ)知識</b><b class='flag-5'>概述</b>

    SPI總線驅(qū)動(dòng)的C語言源代碼詳細(xì)概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是SPI總線驅(qū)動(dòng)的C語言源代碼詳細(xì)概述
    的頭像 發(fā)表于 09-26 11:36 ?7455次閱讀

    單片機(jī)基礎(chǔ)知識學(xué)習(xí)筆記

    單片機(jī)基礎(chǔ)知識學(xué)習(xí)筆記有關(guān)總線1.IIC總線2.SPI總線
    發(fā)表于 11-14 16:51 ?26次下載
    單片機(jī)<b class='flag-5'>基礎(chǔ)知識</b>學(xué)習(xí)筆記

    全面介紹PCIe總線基礎(chǔ)知識

    全面介紹PCIe總線基礎(chǔ)知識
    發(fā)表于 12-14 11:49 ?0次下載

    STM32SPI相關(guān)知識

    STM32SPI相關(guān)知識一、前言本人使用的是stm32f103的開發(fā)板,F(xiàn)lash芯片是W25Q64。本章介紹SPI的相關(guān)通訊
    發(fā)表于 12-22 19:33 ?7次下載
    <b class='flag-5'>STM32</b>的<b class='flag-5'>SPI</b>相關(guān)<b class='flag-5'>知識</b>

    CAN總線基礎(chǔ)知識詳細(xì)講解

    CAN總線基礎(chǔ)知識詳細(xì)講解。
    發(fā)表于 04-02 17:44 ?14次下載

    CAN總線基礎(chǔ)知識

    CAN總線是一種常用的總線,對于剛開始接觸CAN總線的,面對著各式各樣的資料,可能不知道從何看起,今天科普一下CAN總線基礎(chǔ)知識。CAN2
    的頭像 發(fā)表于 02-09 15:43 ?4150次閱讀

    STM32中C語言的基礎(chǔ)知識

    C語言是單片機(jī)開發(fā)中的必備基礎(chǔ)知識,本文列舉了部分STM32學(xué)習(xí)中比較常見的一些C語言基礎(chǔ)知識,希望能對大家有所幫助。
    的頭像 發(fā)表于 04-27 17:42 ?1334次閱讀
    <b class='flag-5'>STM32</b>中C語言的<b class='flag-5'>基礎(chǔ)知識</b>

    SPI協(xié)議基礎(chǔ)知識

    電子發(fā)燒友網(wǎng)站提供《SPI協(xié)議基礎(chǔ)知識.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 10:32 ?1次下載
    <b class='flag-5'>SPI</b>協(xié)議<b class='flag-5'>基礎(chǔ)知識</b>
    主站蜘蛛池模板: rio 快播| 国产在线观看99| 精子网久久国产精品| 无码国产欧美日韩精品| 纯肉腐文高H总受男男| 农民下乡在线观看3| 69日本xxⅹxxxxx18| 欧美18在线| old胖老太fat bbw青年| 青青草原网址| 午夜无码片在线观看影院| 亚洲中字慕日产2020| 91久久偷偷做嫩草影院免费看 | 精品国产午夜肉伦伦影院| 久久久99精品成人片中文| 男子扒开美女尿口做羞羞的事| 日本高清加勒比| 亚洲国产成人精品久久久久| 又硬又粗又大一区二区三区视频| 99精品在线播放| 国产福利一区二区精品| 九色终合九色综合88| 欧美日韩第一区| 亚洲 日本 欧美 中文字幕| 真实伦 乱| 古装性艳史电影在线看| 寂寞夜晚在线视频观看| 奶头从情趣内衣下露了出来AV| 色AV色婷婷97人妻久久久| 亚洲视频一区在线| av天堂电影网| 荷兰少归BVBV| 欧美性喷潮xxxx| 亚洲国产精品无码中文字幕| 91精品婷婷国产综合久久8| 国产成人免费高清在线观看| 久久精品免视看国产| 日日摸夜夜嗷嗷叫日日拍| 亚洲一级毛片免费在线观看| qvod电影网| 精品国产免费观看久久久|