二、SPI协议

总述

SPI(Serial Peripheral Interface)是一种高速的、全双工、同步的串行通信总线
全双工体现在主从设备间通信时发送数据和接收数据是单独的数据线,能够同时接收和发送数据;
同步体现在主从设备间有时钟线,主设备提供时钟信号通常用于在微控制器和外部设备之间进行通信。
SPI通常由一个主设备(例如微控制器)和一个或多个从设备(例如传感器、存储器等)组成。Spi分为Standard SPI、Dual SPI和Queued SPI,这里主要介绍一下标准SPI。

1.SPI接口

在这里插入图片描述

(1)SCLK:时钟线;
(2)MOSI(master output slave input):主设备输出,从设备输入,单向传输;
(3)MISO(master input slave output):主设备输入,从设备输出,单向传输;
(4)CS(chipselect):片选信号,用于主片选中从片;

2.通信原理

SPI主设备和从设备都有一个串行移位寄存器,主设备通过向它的SPI串行寄存器写入一个字节来发起一次传输。
在这里插入图片描述
SPI数据通信的流程可以分为以下几步:

1、主设备发起信号,将CS/SS拉低,启动通信。
2、主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿或下降沿,因为SPI有四种模式,后面会讲到),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。
3、主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
4、从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

这里有一点需要着重说明一下:SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。若只进行写操作,主机只需忽略接收到的字节(虚拟数据);反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

2. SPI的四种工作模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)相位(CPHA):表示设备从数据线采样的时刻;
(2)极性(CPOL):表示时钟线空闲时的状态;

关于模式选择:

(1)实际的电路中,SPI协议中的主设备就是主控,从设备是外设;
(2)主控的SPI控制中,模式是可以配置的,但是从设备的模式是在出厂的时候就定死了;
总结:查阅外设的数据手册,知道外设的SPI模式,主设备去适配从设备的模式;

4. SPI协议 对比 UART协议(上一篇文章刚介绍过uart协议,这里来对比一下)

  1. 通信模式
    uart和spi都是全双工通信,发送数据和接收数据有独立的通道,互不影响。
  2. 通信线数量
    SPI通常需要四根线(SCLK、MOSI、MISO、CS),但也可以通过使用更多数据线来实现更高的速度(如Quad SPI)。
    UART只需要两根线(TX和RX)来进行数据传输。
  3. 时钟同步
    在SPI中,数据传输是由时钟信号同步的,因此通信双方需要共享一个时钟源。
    在UART中,数据传输是异步的,没有共享的时钟信号,因此通信双方使用各自的时钟源,并且需要通过波特率(波特率)来协调数据传输速度。
  4. 速度
    由于SPI是同步通信,因此可以实现较高的数据传输速率,特别是在Quad SPI等高速模式下。
    UART通常具有较低的最大传输速率,通常受限于波特率的选择和串口控制器的性能
  5. 应用场景:
    SPI通常用于与外部存储器(如Flash存储器)、传感器、显示器等外围设备的高速通信
    UART通常用于与计算机、嵌入式设备、传感器等进行简单的串行通信,例如调试信息输出、数据传输等。
  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值