STM32单片机学习(27) —— SPI相关概念

文章目录

概述

我们已经学习过两种STM32通信接口了,它们就是I2C总线通信以及USART串口通信。

接下来我们再来学习一种全新的通信方式------SPI通信。

首先,我们要先建立一种正确的认知------SPI 并不是比 串口 / I2C 更高级的通信方式,只是设计的思路不同,解决的问题不同罢了。

在《SPI相关概念》这一文中,我们所讲的内容,既和单片机的SPI外设没有关系,也和与单片机进行SPI通信的从机设备没有关系。

本文仅仅涉及与SPI通信本身、通信协议本身相关的一些设定和概念。

SPI通信的核心特性

SPI是什么呢?

SPI(Serial Peripheral Interface,串行外设接口)是Motorola(摩托罗拉)公司于1980年代中期提出的同步、全双工、主从模式的串行通信协议。

SPI具有以下核心特性:

  1. **串行通信。**数据仍然是1个bit位,1个bit位的串行发送和接收的。
  2. **同步通信。**通信双方通过共享的时钟信号实现时序同步,而不是依赖波特率。
  3. 严格的主从模式通信。
    1. SPI 采用固定主从结构,一主多从,仅允许主机发起通信。
    2. SPI没有I2C通信那一套"主机切换"的复杂设计,SPI通信就是一台固定主机和多台从机通信。
    3. 在本课程中,我们就固定STM32单片机为主机,不需要考虑主机的切换
  4. **全双工通信。**主机和从机可以同时收发数据。
  5. **总线式物理接线。**多设备都将自身挂载在总线上,但SPI通信在总线外还需要依赖其它信号线。
  6. **在总线外,基于独立的"片选线"机制来确定通信的从机。**从机设备越多,片选线就越多。
  7. **无寻址、无应答机制。**说人话就是:SPI通信不管对方是谁,不管收到没有,只依照时钟信号驱动进行通信。
  8. 同一时刻,只有一台从机与主机通信,且不支持广播模式。
  9. 引脚资源占用多,但通信速率相比较于其它通信协议提升显著。
    1. SPI通信,相比较于串口、I2C等通信协议,通信速率快是其最显著的特点与优势!
    2. 当然SPI的这种优势是用"高资源占用"为代价换取的。
  10. **SPI比I2C功能更少,但灵活性显著高于I2C,很多地方都不像I2C一样是完全规定死的。**主要体现在两方面:
    1. 时序结构可灵活配置,拥有多样化的时序结构,以适配不同的从机设备。
    2. 数据帧格式也非常灵活,需要从设备根据自身情况定义,不同的从设备通信的数据帧格式会大不相同。
  11. 数据传输是以时钟信号为驱动的双向移位过程,每一个时钟周期内,主机和从机都会同时发送 1 bit、接收 1 bit。
    1. 标准SPI通信是真正意义上的,必须同时发和同时收,没有单纯的发送和接收过程。
    2. 当然,在发送数据时,自身接收到的数据可能无意义,但必须接收。
    3. 同样的,在接收数据时,自身发送的数据也可能无意义,但必须发送。
    4. SPI 通信本质上是在时钟信号驱动下,主从双方移位寄存器进行同步移位操作,从而完成串行数据的交换。
    5. SPI通信的过程是数据交换的过程!

总的来讲,SPI通信把所有的资源都用来提高通信速度了,所以摒弃了很多冗余的信息,所以在学习它时,始终牢记,每一个因素都是为了提升它的速度这样去理解

上述这11条,基本囊括了SPI通信的绝大部分特性,有些特性我们已经学过搞明白了,但有些则还比较陌生。

下面我们就逐一来介绍这些特性。

SPI通信专为短距离高速通信设计,是一种用于微控制器与外设芯片(如Flash存储器、传感器、显示屏等)之间进行数据传输的通信方式。

从使用场景来说,它和I2C通信非常类似,但它们各有各的优缺点,有些外设使用I2C通信更好,有些外设则使用SPI通信更好。

I2C和SPI的简单对比

我们刚刚学完I2C通信,现在要学习SPI通信,恰好两种通信方式有很多类似的地方,将它们做一个简单对比,有利于我们学习SPI通信。

对于I2C通信而言,无论硬件电路、软件协议还是通信时序控制,它们的设计都是比较复杂的。

I2C通过这些复杂的、精心的设计,利用最少的硬件资源,实现了最多的软件功能,可以说:

"I2C通信是一个非常具有性价比的通信方式,资源占用少,但功能却非常完善"。

但I2C通信也并非没有缺点。

I2C最大的缺点源自于其硬件电路的开漏接法,使得其**"低电平 -> 高电平"**的过程会比较缓慢,进而拖累了整体的通信速率。

大多数情况下的I2C通信,也就能够支持400kHz的时钟线频率,这个通信速率还是比较慢的。

总之:

"I2C通信通过精打细算的精心设计,用最少的硬件资源,实现了最多的软件功能,但缺点是通信速率较慢。"

那么SPI通信呢?

如果确实需要用一句话来概括SPI通信,那么我会说:

"SPI通信通过简单粗暴的设计,用更多的硬件资源,甚至是资源浪费,实现了速率更高、更简单也更直接的通信。"

SPI学习的补充说明

后,关于SPI的学习,需要补充说明的是:

本文中讲解的SPI通信指的是标准的、传统意义上的SPI通信,不考虑各种SPI的变种、扩展或"魔改"版本。

比如上文提到的SPI通信的一主多从模式、采用单一固定主机,标准SPI就是这么设计的,但如果考虑SPI的各种变种扩展版本,则会有所不同。

实际的应用中也大多使用标准SPI通信协议,所以我们专心学习标准SPI通信即可。

在本章节中,我们来学习一些SPI相关的最基本概念。

SPI硬件电路设计

SPI和I2C通信同样都是总线通信协议,而且SPI采用固定一主机、多从机的通信方式。

在下文中我们统一把STM32单片机作为这个固定主机。

SPI通信的总线电路设计,如下图所示:

显然SPI的总线设计要比I2C复杂一些,使用的引脚也会更多,下面来详细介绍一下这几条通信线。

SPI的四条通信线

在标准SPI通信中,一般都需要至少四条通信线**(有些简化的SPI通信可能使用更少的通信线)**,如下表格所示:

通信线简称 全称 功能
SLK/SCK/SCL Serial Clock 主机输出时钟信号,从机接收。用于同步数据传输
MOSI/DI Master Out Slave In 数据线,用于主机发送数据,从机接收数据
MISO/DO Master In Slave Out 数据线,用于从机发送数据,主机接收数据
SS/CS/NSS Slave Select/Chip Select 片选线,用于主机确认和哪一台从机通信

SPI的三条通信总线:

  1. SLK线,时钟信号线,SPI和时钟信号线和I2C的时钟信号线作用完全一致。
    1. 它的简写丝印由于硬件生产厂商不同,有很多的简写。如:SLK/SCK/SCL等。
    2. SPI通信中,由STM32单片机生成同步时钟信号,从机接收此信号。
    3. 单片机通过生成并发送时钟信号,从而控制数据传输的时序和速率。
  2. MOSI线,数据线,用于主机发送数据,从机接收数据。
    1. 很多外设的生产厂商出于简化考虑,会直接使用丝印**"DI"**,即"Data Input"表示此引脚为数据输入口。
    2. 和串口、I2C通信一样,主机发送数据仍然遵循"TTL"电平原则。即高电平表示发送数据"1",低电平表示发送数据"0"。
  3. MISO线,数据线,用于从机发送数据,主机接收数据。
    1. 很多外设的生产厂商出于简化考虑,会直接使用丝印**"DO"**,即"Data Output"表示此引脚为数据输出口。
    2. 和串口、I2C通信一样,从机发送数据仍然遵循"TTL"电平原则。即高电平表示发送数据"1",低电平表示发送数据"0"。

我们已经学过I2C和串口通信了,通信是否支持全双工或半双工,本质上由通信的电路结构决定。

SPI 使用两条独立的单向数据总线(MOSI 和 MISO)分别负责主机发送和接收,以及从机接收和发送。

所以,SPI 支持主从设备在同一时刻、同时进行数据发送与接收,属于全双工通信协议。

串口通信同样采用发送线(TX)和接收线(RX)分离的结构,因此也具备全双工通信能力

而 I²C 通信中,通信双方共用一条双向数据线(SDA),同一时刻只能由一端进行数据发送,因此 I²C 属于半双工通信协议。

另外,对于STM32单片机主机而言

  1. 接入MOSI总线的对应引脚,需要输出高低电平,u送一此引脚需要设置为推挽输出模式。

    SPI通信主要采用硬件SPI实现,需要使用固定的SPI外设,基于固定的SPI通信引脚。

    如果采用硬件SPI实现,那么MOSI引脚显然需要设置为复用推挽输出模式

  2. 接入的MISO总线对应的引脚,需要设置为浮空输入模式(如果采用硬件SPI,也是使用固定引脚)

  3. 如果采用硬件SPI,那么单片机的SCK引脚也是固定引脚,需要设置为复用推挽输出模式

SPI不是典型的总线式涉及,因为除了三条总线外,它还有额外的信号线

SPI通信的片选线

SPI通信的片选线比较特殊,下面单独讲解一下它。

SS/CS线,称之为片选线(Chip Select,CS)或者从机选择线(Slave Select,SS)

  1. 所谓"片选",即选择芯片的意思,SPI通信本质上还是芯片之间的通信,选择从机就是选择某个芯片,所以称之为"片选"。
  2. SS和CS都是常见的称呼,在SPI通信中它们意思相同。
  3. 每个从机都有一条独立的片选线和主机相连接,由主机的引脚输出高低电平来决定是否与此从机通信。

所以STM32单片机在作为主机时,需要选择任一GPIO引脚来连接从机的片选引脚。

通过片选线,主机引脚输出高低电平决定与某台从机通信。

那么到底是输出低电平表示与从机通信,还是高电平呢?

低电平选中

标准SPI通信规定,CS线为低电平有效,主机通过拉低某条CS线的电平,表示与此从设备进行通信。

但SPI并未定死此规定,某些特殊的硬件也可以自行设定为高电平有效。

但这不属于标准SPI的设计,如果遇到这样的设备,需要查阅其硬件手册了解相关信息。

总之,我们可以默认CS线低电平表示与此从机通信,常见的硬件都是这么设定的,只有极少数特殊硬件需要查阅手册、区别对待。

在很多文档/原理图中,SPI的片选线都会直接标记为"NSS"。

其中的"N"表示低电平有效(Negative/Negated),这也进一步说明SPI通信中的片选普遍都是低电平选中的模式。

不支持广播通信

SPI 是否支持与多台从机,进行同时的通信呢?

在 I2C 通信中,协议标准中定义了一个特殊的广播地址 0x00,主机通过它可以向所有从机广播数据。具体来说是:

  1. 从机们只需要按照时序读取SDA数据线上的高低电平,就可以同时接收主机发送的数据了。
  2. 在广播模式下,主机并不关心从机的应答,从机也不需要应答。
  3. 同时I2C还规定,任何通信都由主机主动发起。所以I2C通信,不存在多台从机同时发送数据给主机的情况。

那么SPI通信时,也和这类似吗?

答案是:No,SPI不支持广播通信。

SPI选择从机通信的方式和I2C完全不同,SPI是通过硬件片选线实现的从机选择。

对于SPI通信来说,同一时刻仅会拉低某台从机的片选线,从而使得该从机处于激活状态。

SPI通信在同一时刻只能和某一台从机通信,SPI不支持广播通信形式,不支持同时和多台从机通信。

总之,在我们的学习中,选择硬件SPI通信实现,基于固定的单片机SPI外设,和固定的引脚

这里需要注意,我们之前在初始化GPIO引脚时,速度经常使用2MHz就足够了,这里的速度代表的是,引脚输出电平的反转速率。而SPI的通信速度是比较快的,所以我们需要用更高的速度来适配SPI,所以如果引脚设置为输出模式,应该设置为50MHz来适配SPI的高速通信

SPI通信的时序结构(重点)

在前面的总结中,我们提到过:**SPI在时序结构上表现为灵活多变可配置。**我们就来看一看,SPI的通信时序,是如何的灵活多变可配置。

SPI通信的比特序

到目前为止,我们学习过的通信方式,全部都是串行通信

既然是串行通信,那么在通信过程中,bit 位的发送顺序,也就是比特序,就是一个必须首先关注的重要问题。

在这里我们不妨再复习总结一下------比特序:

比特序,用于在串行通信中,描述一个数据单元内部,bit位逐位发送的顺序。

比特序有两种最常见的形式:

  1. LSB First ,即Least Significant Bit First,最低有效位优先。此时数据会从一个数据单元内部的最低有效位,发送到最高有效位结束。
  2. MSB First ,即Most Significant Bit First,最高有效位优先。此时数据会从一个数据单元内部的最高有效位,发送到最低有效位结束。

具体来说,I2C和串口通信,它们的比特序是固定的:

  1. I2C通信的比特序是MSB First,固定从数据的最高有效位发送到最低有效位。
  2. 串口通信的比特序是LSB First,固定从数据的最低有效位发送到最高有效位。

那么SPI通信的比特序呢?

在回答这个问题之前,我们先回到一句之前提到过的话:

SPI 的一个显著特点是:时序灵活多变、可配置。

既然是灵活多变可配置的时序,那么比特序显然也是可配置的:

既然比特序有两种选择,那么SPI的比特序那就交给程序员自己选择,自己配置吧。

所以:

SPI通信的比特序是由程序员自己配置的,可以选择LSB First,也可以选择MSB First。

实际工程中,SPI的比特序多数会选择MSB First。

通信空闲状态,SPI时钟极性

在I2C和串口通信时,我们知道:

接线完成后,通信并不是立刻开始的,而是先处于一种"空闲状态"。

因此,任何一种通信协议,都必须明确规定:当通信处于空闲状态时,信号线应该处于什么样的电平状态。

例如:

  1. I2C通信规定,当SCL和SDA总线都处于高电平状态时,表示通信处于空闲状态。任一总线被拉低,都表示通信开始,或通信处于正在进行时。
  2. 串口通信规定,当信号线持续处于 高电平 时,表示通信处于空闲状态。

那么SPI呢,它是如何表示通信的空闲状态呢?

在回答这个问题之前,我们仍然需要记住 SPI 的一个显著特点:

SPI的时序灵活多变、可配置。

所以,SPI 通信的空闲状态同样不是固定不变的,也是允许进行配置选择的。

SPI和I2C同属于同步通信,但与I2C不同的是,SPI仅通过一条时钟信号线来确定通信的空闲状态。

这里就需要引入SPI一个重要的概念------SPI极性或者叫SPI时钟极性。

SPI 极性(Clock Polarity,CPOL)用于规定:当 SPI 总线处于空闲状态时,时钟信号 SCK 的电平状态。

SPI极性是可配置的,具体来说有两个选择:

  1. CPOL = 0,规定当SCK时钟信号线为低电平时,表示通信处于空闲状态。通信开始时,时钟信号翻转到高电平。
  2. CPOL = 1,规定当SCK时钟信号线为高电平时,表示通信处于空闲状态。通信开始时,时钟信号翻转到低电平。

采样时机,SPI时钟相位

关于采样采样时机这两个概念,我们在前面已经涉及过了

在这里,我们先对这两个概念再做一次简要的复习和总结。

  1. 采样:接收端在某一确定时刻,对信号线上的电平状态进行读取,并将其判定为逻辑 0 或逻辑 1 的过程。
  2. 采样时机:通信协议所规定的,接收端执行采样操作的具体时刻、时间点。

我们先回顾一下以往学过的通信方式,它们各自是如何规定采样时机的。

  1. 串口通信以起始位为时间基准,用波特率确定一个bit所占用的时间,然后在每个bit的中点附近进行多次采样,最终投票判决结果。
  2. I2C 通信中,接收端在 SCL 时钟为高电平的工作时间内采集数据,通常会选择在这一段工作时间的中点完成采样。

那么SPI通信呢?SPI 通信的数据采样时机又是如何规定的呢?

和"通信空闲状态"一样,SPI通信的采样时机也是灵活可配置的。

并且相比串口和 I2C,SPI 的采样时机设计也更加"独特"。

同样的,SPI通信的采样时机,也有一个专业的术语,这就是SPI时钟相位

SPI 时钟相位(Clock Phase,CPHA)用于规定SPI通信的采样时机,具体来说是:在一个 SPI 时钟周期内,数据应该在第几边沿被采样。

时钟相位仍然有两种选择:

  1. CPHA = 0,表示数据采样时机是在时钟周期的第一边沿采集。
  2. CPHA = 1,表示数据采样时机是在时钟周期的第二边沿采集。

SPI四种时钟模式(重点)

在上面我们讲到了时钟的两种相位选择,提到了第一和第二边沿采集。

那么什么是"第一边沿"、"第二边沿"呢?

为了讲清楚这个问题,我们需要把时钟极性和时钟相位结合在一起,进行排列组合。

如此,我们得到了四种SPI时钟模式(SPI Clock Mode,简称SPI Mode):

  1. Mode0,模式0,CPOL = 0,CPHA = 0,低电平空闲状态,第一边沿采集。
  2. Mode1,模式1,CPOL = 0,CPHA = 1,低电平空闲状态,第二边沿采集。
  3. Mode2,模式2,CPOL = 1,CPHA = 0,高电平空闲状态,第一边沿采集。
  4. Mode3,模式3,CPOL = 1,CPHA = 1,高电平空闲状态,第二边沿采集。

接下来,我们将以Model0为例对SPI 时钟模式 展开讲解。

Mode0,模式0

首先,我们来看下面这张 SPI 时序图:

这张时序图没有带上任何数据线,因为我们现在还不需要考虑数据收发的问题。

那么你在上述图中能看出什么问题呢?

如果你搞懂了上面讲的内容,你应该至少能够看出下面几条:

  1. 从机1的NSS1线低电平,表示从机1与主机进行通信。
  2. 从机2和从机3的NSS线全程拉高,表示它们作为从机没有和主机进行通信。当然SPI在同一时刻,只能有一台从机和主机进行通信。
  3. SCK时钟信号线在一开始,处于低电平状态,说明通信的空闲状态是:低电平空闲。
  4. 所以SPI通信选择的时钟极性是0,低电平空闲。

那么时钟相位呢?哪里是第一边沿,哪里是第二边沿?

实际上,只要时钟极性确定了,那么第几边沿,也就确定了。如下图所示:

在模式0,低电平空闲状态,第一边沿采集,其时钟信号的波形就如上图所示,并且采样时机是红色箭头。

现在,我们已经明确了 数据采样发生在什么时刻,那么下一个问题自然就出现了:

在进行数据采样时,对数据线有没有要求?

当然是有要求的。

在理想情况下,和I2C通信类似,接收端在时钟边沿进行数据采样时,数据线在该边沿附近处于"电平稳定区间的中点"。

换句话说:采样数据的边沿来临时,数据最好已经稳定一段时间了,而不是正在变化。

接下来,我们在时序图中加入数据线,得到如下所示的波形。

在Mode0的前提下,分析这张时序图,过程如下所示:

  1. NSS线拉低,表示主机选中从机进行通信,但此时观察SCK总线还处于低电平空闲状态,所以第一个bit数据还未发送。
  2. Mode0时,时钟线低电平表示空闲状态,所以当时钟线出现第一个上升沿时,才表示发送第一个bit数据。
  3. 当时钟信号线上的"时钟周期"消失,呈现完全低电平的状态,就表示通信已经回归空闲状态。
  4. 分析SPI通信的过程,只分析拥有完整时钟周期的部分,其余没有时钟周期的部分,都表示通信处于空闲状态,未收发数据。
  5. 当然在最终,NSS片选线被重新拉高,表示主机断开与从机联系,通信彻底结束了。
  6. 这张图上,一共存在8个完整时钟周期,也就是说通过MOSI数据线,主机一共向从机发送了8个bit数据。
  7. 从机会在所有的第一边沿采集数据,也就是上升沿采集数据,一共有8个上升沿,所以从机会收到主机发送的8个bit数据。

最终我们可以得出:

主机给从机发送了8个bit数据,按照接收的顺序是:1011 1000,也就是说,主机给从机发送了一个字节数据:0xB8

是这样吗?

当然不是。

从机按照顺序接收的数据是:1011 1000,这是没有问题的。

但这并不意味着,主机发送的数据就是:1011 1000(0xB8)

因为Mode0,只约定了时钟极性和相位,比特序还没有约定。

所以:

  1. 如果通信双方约定的比特序是MSB First,那么主机发送的数据就是0xB8,即1011 1000
  2. 如果通信双方约定的比特序是LSB First,那么主机发送的数据就是0x1D,即0001 1101

扩展:

实际上从这张时序图中,我们还能得出SPI通信的一些重要特点,总结在下面:

  1. NSS片选线的低电平时间段,意味着主机和从机正在进行通信。
  2. 在NSS拉低生效的时间段内,SCK上每产生一个时钟周期,就表示收发一个bit数据。
  3. 在一次SPI通信的过程中,允许传输任意的bit数量,甚至可以传输非8整数倍的bit数量。这就是SPI通信数据帧的灵活之处!
  4. 片选线的状态决定一次通信的开始与结束,时钟信号的时钟周期数量决定了实际收发bit数据的数量。

Mode1,模式1

在已经搞懂 SPI Mode 0 的前提下,Mode 1 的理解其实就会变得非常自然。

Mode1和Mode0的差距仅限于第几边沿采样,Mode0第一边沿采样,Mode1则第二边沿采样。

如下图所示:

时钟信号中的绿色箭头就是第二边沿,Mode1时,在这些下降沿进行数据采样。

再看下面一个带数据线的时序图:

主机通信MOSI线,发数据给从机,一共发了8个bit,依照顺序是:0111 0011。那么:

  1. 如果约定MSB First比特序,那么主机给从机发送的1个字节数据是0x73,即0111 0011
  2. 如果约定LSB First比特序,那么主机给从机发送的1个字节数据是0xCE,即1100 1110

Mode2,模式2

模式2,时钟信号高电平表示通信空闲,并且在第一边沿进行数据采集。

不带数据线,时序图如下图所示:

图中的红色箭头,就是第一边沿,也就是全部下降沿,mode2在此时进行数据采样。

再看下面一个带数据线的时序图:

如此,从机接收到的比特序列是:0111 0011

如果采用MSB First比特序,那么主机发送的1个字节数据就是0111 0011,即0x73

如果采用LSB First比特序,那么主机发送的1个字节数据就是1100 1110,即0xCE

Mode3,模式3

模式3,时钟信号高电平表示通信空闲,并且在第二边沿进行数据采集。

在下图中:

图中的绿色箭头,就是第二边沿,也就是全部上升沿,mode3在此时进行数据采样。

再看一个带数据线的时序图:

如此,从机接收到的比特序列是:0111 0110

如果采用MSB First比特序,那么主机发送的1个字节数据就是0111 0110,即0x76

如果采用LSB First比特序,那么主机发送的1个字节数据就是0110 1110,即0x6E

注意/扩展:

Mode 3 的最后一张时序图中,我们刻意做了一个与前面不同的设定

  1. 在通信尚未开始时,MOSI 数据线保持为高电平
  2. 在通信结束之后,MOSI 数据线最终停留在低电平

这个设定和之前的时序图不同,这合理吗?是不是有问题啊?

进而,我们就要提出一个非常重要的问题:

前面我们所讲述的时钟极性以及相位,这两个概念都是描述时钟信号线的,它们决定了通信开始传输数据,还决定了采样机制。

那么:SPI通信协议,有没有对数据线在通信时的电平做什么约束呢?

比如:数据线高电平时表示通信未开始?

有没有这种设计呢?

答:完全没有。

  1. 对于SPI通信而言,主机拉低片选线(NSS拉低),代表主从机通信关系建立,通信正式开始。
  2. 通信开始不意味着立刻传输数据,只有SCK时钟信号线上出现了第一个有效边沿时,第一个bit数据才开始传输。
  3. SPI的模式决定了接收端在何时进行数据采样。
  4. 在接收端进行数据采样时,数据线上的高低电平是有效的:
    1. 并且最好是保持一段时间后的稳定电平。
    2. 而不是刚刚变化过来,或马上要变化的不稳定电平。
  5. 除此之外的任何时刻,SPI通信都不关心数据线的电平状态。通信未开始,或已结束时的数据线电平状态就更不需要关心了。

总结与补充

到此为止,关于 SPI 通信本身 、以及 SPI 通信协议相关的设定与概念,我们已经全部讲清楚了。

再回过头来看,在本章节一开始,我们曾对 SPI 通信做过 11 条总体性的总结。

其中有一部分内容,随着前面 串口 和 I2C 的学习,其实大家已经具备了相应的理解基础,因此没有再单独赘述。

在本章节中,我们重点讲解了 SPI 通信------通信时序的灵活可配置性。

相信到现在为止,你已经对这一点有所理解了。

那么,在这 11 条总结中,还有哪些问题是目前还需要进一步讲解、加深理解的呢?

主要有以下三个问题:

  1. 第一,SPI通信为什么显著的优势是快?
  2. 第二,SPI通信的本质是主从双方的移位寄存器移位所导致的数据交换,这是什么意思呢?
  3. 第三,SPI通信的数据帧格式与从机有关,那具体是什么情况呢?

这些问题会在后续的学习中逐步理解

相关推荐
z2005093016 小时前
【linux学习】linux下进程状态和环境变量的解析
linux·运维·学习
振南的单片机世界16 小时前
影子寄存器:改ARR下个周期才生效,波形不突变
arm开发·stm32·单片机·嵌入式硬件
芯岭技术16 小时前
XL2411蓝牙透传模组,通过MCU发送简单的串口AT指令,就能完成配网、数据传输等操作
单片机·嵌入式硬件
lunzi_082616 小时前
【学习笔记】《Python编程 从入门到实践》第1章:Python环境搭建与Hello World(完整版)
笔记·python·学习
210Brian17 小时前
蓝桥杯单片机学习笔记(十四) V2026大模板源代码
单片机·学习·蓝桥杯
大卡片17 小时前
TIM控制器原理
单片机·嵌入式硬件
Tech_D17 小时前
微米级的精准魔法:激光微加工,解锁高端制造新可能
人工智能·单片机·机器人·自动化·制造
咸甜适中17 小时前
rust语言学习笔记Trait(十)PartialOrd、Ord(大小比较)
笔记·学习·rust
小+不通文墨17 小时前
在树莓派中用*C语言*实现MQTT通信
c语言·经验分享·笔记·嵌入式硬件·学习