SPI协议的介绍

article/2025/9/21 11:58:57

学习内容:

学习SPI协议记录


学习清单:

提示:这里可以添加要学的内容

例如:

  1. SPI协议的介绍
  2. 三根线还是四根线
  3. 两个概念四种模式
  4. SPI时序图
  5. SPI优缺点
  6. SPI和IIC的对比

学习详细内容:

1.SPI协议的介绍

SPI是串口外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。

2.三根线还是四根线

SPI一般都是默认4线制Motorola SPI协议,即有四根线,分别是:SCLK、MOSI、MISO和CS共4根数据线,标准4线制的好处是可以实现数据的全双工传输,当只有一个主机和一个从设备时,只需要一个CS、多个从机需要多个CS。(CS片选信号有的也叫做SS线),多从机模式,通常每个从机需要一条单独的SS线,如下图所示:

CS是chip select,即从设备使能信号,由主设备控制。当总线上有多个从设备时,主设备如果需要和某个从设备通信,就将该设备的片选引脚拉低使能。

在这里插入图片描述
即通过指定使能NSS,就能与对应的从机进行通信。

以上图中的4根线分别是:

  • SCLK:Synchronous CLock,同步时钟信号,时钟频率即SPI速率,和SPI模式有关
  • MOSI:Master output slave input,主设备数据输出,从设备数据输入
  • MISO:Master input slave output,主设备数据输入,从设备数据输出
  • CS:chip select,从机设备选择,低电平有效

3线制SPI,根据不同的应用场景,主要有以下2中类型:

  • 只有3根线:SCLK,MOSI和CS,没有MISO数据线,适用于单工通讯,主机只发送或只接收从机的数据
  • 只有3根线:SCLK,SDIO和CS,这里的SDIO作为双向端口,适用于半双工通讯,比如ADI的多款ADC芯片都支持双向传输。

3.两个概念四种模式

既然是要进行数据的传输,双方就要明确从机在什么时刻去采样主机发出的数据,主机在什么时刻去读取从机发来的数据。
CPOL(Clock Polarity)时钟的极性,规约了SPI总线在空闲时,时钟信号是高电平还是低电平;

  • CPOL=0 表示时钟空闲时为低电平
  • CPOL=1 表示时钟空闲时为高电平

CPHA(Clock Phase)时钟的相位,规约SPI设备是在时钟上升沿还是下降沿触发数据采样。

  • CPHA=0 表示数据在SCLK时钟上升沿被采样,在SCLK时钟下降沿切换(有的说法叫“在时钟信号SCLK的第一个跳变沿采样”)
  • CPHA=1表示数据在SCLK时钟下降沿被采样,在SCLK时钟上升沿切换(有的说法叫“在时钟信号SCLK的第二个跳变沿采样”)

时钟极性和时钟相位的不同组合,所以有了SPI总线传输的4种模式

模式1:CPOL=0,CPHA=0

模式1的示例图:即时钟空闲时为低电平,在时钟的上升沿被采样,下降沿切换
在这里插入图片描述
模式2:CPOL=0,CPHA=1
模式3:CPOL=1,CPHA=0
模式4:CPOL=1,CPHA=1

其余三个模式也是同理

4.SPI时序图

当以模式1为工作模式时:
在这里插入图片描述
先是将CS片选信号拉低,选中要通信的从设备,然后通过MOSI和MISO这两根数据线进行通信,MOSI数据线发出了0xD2这个数据给从设备,同时从设备也通过MISO线给主设备返回了0x66这个数据。由于SPI是全双工的,所以读写时序可以一起完成。

5.SPI的优缺点

SPI的优势

  • 全双工串行通信
  • 高速数据传输速率
  • 简单的软件配置
  • 及其灵活的数据传输,不限于8位,它可以是任意大小的字
  • 非常简单的硬件结构,从站不需要唯一地址(与IIC不同),从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同),不需要收发器(与CAN不同)

SPI的缺点

  • 没有硬件从机应答信号(主机可能在不知情的情况下无处发送)
  • 通常仅支持一个主设备
  • 需要更多的引脚(与IIC不同)
  • 没有定义硬件级别的错误检查协议
  • 与RS-232与CAN总线相比,只能支持非常短的距离

6.SPI和IIC的对比

  • SPI是全双工,而IIC是半双工
  • IIC支持多主机多从机,SPI只能有一个主机
  • 从GPIO占用上来看,IIC占用更少的GPIO,更节省资源
  • SPI的数据位宽更灵活,可以根据需要选择多位数数据宽度
  • SPI协议没有响应机制,主机无法得知从机是否接收到所发的数据,如果不采用一些方法的话可能会导致数据丢帧
  • 正是因为没有复杂的响应机制,SPI协议可以做到非常高的速率,每一个SCLK都可以进行数据的传输,通过引入CRC校验等校验方法,可以即高速传输数据,又能保持数据的准确度。
  • IIC通过期间地址来选择从机,从机数量的增加不会导致GPIO的增加,而SPI通过CS片选信号选择从机,每增加一个从机就要多占用一个GPIO,当然也可以通过加入译码器来实现多从机控制
  • 两者大多数都应用与板内器件短距离通讯

学习资料:

参考资料1
参考资料2
参考资料3


http://chatgpt.dhexx.cn/article/iTxuIRQk.shtml

相关文章

SPI 通信协议

文章目录 【 1. 概述 】【 2. 原理 】1. 全双工特征下的传输特点2. 二线式、三线式的SPI3. SPI 模式CPOL(Clock Polarity),时钟极性CPHA (Clock Phase),时钟相位通信模式_时序 4. 通信过程5. 底层数据传输演示 【 3. SPI底层驱动 】 【 1. 概述 】 SPI …

SPI通信协议基础

文章目录 引言正文串行与并行通信SPI通信简介SPI如何运作?时钟从机选择多个从机MOSI和MISOSPI数据传输步骤 SPI的优缺点优点缺点 好文推荐参考 引言 当您将微控制器连接到传感器,显示器或其他模块时,您是否考虑过这两种设备如何相互通信&…

SPI、I2C、UART(即串口)三种串行总线详解

以下内容均来源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI、I2C、UART三种串行总线的原理、区别及应用_嵌入式Linux,的博客-CSDN博客 RS-232 和 UART 之间有什么区别? - 知乎…

uart、spi、i2c通信协议详解

文章目录 前言一、uart(串口)介绍使用rs232、rs485拓展 二、I2C介绍1.宏观流程2.时序上3.典型操作 三、spi(串行外设接口)介绍使用1.宏观上2.微观上 总结1.i2c和spi对比 前言 之前对于各种通信协议学习了就忘,学了就忘…

普通GPIO模拟SPI通信协议(软件SPI)

在工作中偶尔会遇到SPI不够用的情况,而我们又要去使用SPI通信协议,此时就需要我们自己去模拟SPI通信协议。我们知道SPI通信协议有四种模式,它们分别如下所示: 下面是我基于ATSAM4SD16B芯片在Atmel Studio上用普通GPIO模拟的SPI…

SPI 协议

一. 概念 1. 通常SPI通信要求4根线,分别是MOSI(mast output salve input), MISO, CLK, CS。 2. 当发送和接受数据的工作都准备好了,只要有时钟CLK,就发送数据,没有时钟就不发送,而且一个时钟周期发送一位(bit)数据,所…

SPI通信协议(SPI总线)学习

转载自:https://www.cnblogs.com/deng-tao/p/6004280.html 1、什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总…

SPI通信

1 SPI的简介及基本特点 1 SPI的简单介绍 最近工作中使用了SPI通信方式来做TM4C129和STM32之间的通信,为了更好地解决问题就学习了SPI原理的相关内容,完成了项目之后,也对这种通信方式有了较为深入的了解,现在来对SPI的使用方法进…

详解SPI通信协议

一、SPI简介 SPI,即Serial Peripheral Interface的英文缩写。从字面意思看就是串行外部设备接口,是一种全双工、高速、同步的通信总线。 SPI最早是摩托罗拉公司开发的全双工同步串行总线,用于微控制器(MCU)连接外部设…

stm32中常见的通信协议之SPI

目录 1.SPI总线2.SPI的寻址方式3.SPI的工作原理总结4.SPI的通讯过程5.SPI的极性和相位6.IIC和SPI的异同7.stm32中SPI配置中常用的寄存器8.stm32中相关库函数 1.SPI总线 SPI是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信协议;SPI采用主…

【通信协议】一文搞懂SPI

SPI总线简介 SPI(Serial Peripheral Interface)是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。 接口定义 SPI接口共有4根信号线,分别是:片选信号、时钟信号、串行输出信号、串行…

SPI 通信协议 最详细解读!!!

SPI(Serial Peripheral Interface,串行外围接口)是一种高速、全双工、同步的通信总线,主要应用在EEPROM、FLASH、实时时钟、AD转换器上,以及数字信号处理器和数字信号解码器之间。 信号线 SPI有四根信号线:…

SPI 通信协议详解

SPI通信协议详解 写在最前: 本文讲述了SPI通信协议的基本内容包括如下 SPI的基础知识SPI的读写时序 本文重点参考 英文维基百科 中文维基百科 百度百科 注意: 倘若读者有足够的耐心和英文水平,强烈建议自行去英文维基百科去阅读相关知识。 相关链接: SPI…

通信协议篇——SPI通信

通信协议篇——SPI通信 1.简介 SPI(Serial Peripheral Interface)是一种高速、同步、全双工串行通信总线,采用主从机通信模式,主要应用在EEPROM,FLASH,实时时钟,AD转换器等。 2.原理 通信方…

SPI接口通信协议详解:SPI时序、2线、3线、4线SPI及4种常用工作模式

简介 SPI通信原理比I2C要简单,它主要是主从方式通信。这种模式通常只有一个主机和一个或者多个从机,标准的SPI是4根线,分别是SSEL(片选,也写作 SCS)、SCLK(时钟,也写作SCK)、MOSI(主机输出从机输入Master Output/Slav…

详解UART、I2C、SPI常用通信协议(全是细节)

前言 UART、I2C和SPI是我们在嵌入式开发中比较常见的通信协议了,没有最好的通信协议,每个通信协议都有自己的优缺点。如果想要通信速度快,SPI 将是理想的选择;如果用户想要连接多个设备而不是过于复杂,I2C 将是理想的选…

【总线】SPI 通信协议

目录 SPI总线协议概述 串行与并行通信 SPI通信介绍 SPI的工作原理 时钟 从属选择 多个从机 常规方法 菊花链方法 MOSI 和 MISO SPI 数据传输的步骤 SPI 的优缺点 优点 缺点 文章参考 SPI总线协议概述 SPI是许多不同设备使用的通用通信协议。例如,SD卡…

SPI通信协议详解,一篇就够!

一、什么是SPI? SPI 的英文全称为 Serial Peripheral Interface,顾名思义为串行外设接口。SPI 是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩托罗拉在20世纪80年代中期开发,后发展成了行业规范。 …

2021年游戏项目的十大编程语言:C++、Java、C#均上榜

在这个技术驱动的世界里,游戏行业是全球增长最快的行业之一。在每一款华丽精美的电子游戏背后,都有一种编程语言,为用户提供优质的体验。游戏开发者利用顶级的编程语言来构建游戏。不同的游戏项目使用了不同的编程语言,这取决于游…

2021 编程语言排行榜

点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! IEEE Spectrum 发布了 2021 年编程语言排行榜,官方的标题是:Python 在新技术领域依然是主导地位。 Python 近几年随着大数据、数据挖掘、人…