stm32中常见的通信协议之SPI

article/2025/9/21 4:20:36

目录

  • 1.SPI总线
  • 2.SPI的寻址方式
  • 3.SPI的工作原理总结
  • 4.SPI的通讯过程
  • 5.SPI的极性和相位
  • 6.IIC和SPI的异同
  • 7.stm32中SPI配置中常用的寄存器
  • 8.stm32中相关库函数

1.SPI总线

SPI是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信协议;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选),SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议。
在这里插入图片描述
注: SPI总线一般不能使用多个主机,因为多个SPI通信协议的总线占用的仲裁机制会弱一些。

2.SPI的寻址方式

当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中从机设备。
在这里插入图片描述
CS使能信号的选择
比如说当主设备要和从设备2进行通信,(假如说使能信号是低电平)那么就会在从设备2的片选信号上发送0,那么在从设备1和其他从设备(如果有的话)的片选信号上就要发送1,以保证主设备和从设备2的正常通信。

如何看一个芯片上的片选信号是需要高电平使能还是低电平使能。每个芯片上对应的元器件上都会有丝印,如果丝印是CS,那么就表示高电平使能,如果丝印是CS上面加横杠,那就表示低电平使能。

3.SPI的工作原理总结

  1. 硬件上为4根线。
  2. 主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。
  3. 串行一位寄存器通过MOSI信号线将字节传送给从机,从机也将自己的串行一位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。
  4. 外设的写操作和读操作时同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个直接,就必须发送一个空字节来引发从机的传输。

4.SPI的通讯过程

SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑“1”,低电平表示逻辑“0”;一个字节传送完成后无需应答即可开始下一个字节的传送(SPI的通信方式是没有应答信号这个说法的);SPI采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。

在这里插入图片描述
SPI的通信过程中,其中时钟信号处于下降沿的时候,发送器发送数据,当时钟信号变为上升沿以后,接收器接收数据,这就是一个周期,后面不断重复这个过程,当这个周期持续8次以后,就发送了一位字节的数据;此后如果还有数据要进行发送,那么发送过程并不会中断,会继续这8个周期进行数据的发送,其中是先发高位再发低位。

5.SPI的极性和相位

SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素

CPOL表示SCLK空闲时的状态

  • CPOL=0时,空闲时SCLK为低电平
  • CPOL=1时,空闲时SCLK为高电平

CPHA表示采样时刻

  • CPHA=0时,每个周期的第一个时钟沿采样
  • CPHA=1时,每个周期的第二个时钟沿采样

由于极性和相位的组合,那么SPI就有四种工作模式,分别为以下四种:

1.CPOL=0,CPHA=0
在这里插入图片描述
第一种情况表示时钟线在空闲的时候是低电平,并且在下降沿的时候,发送器发送数据,在上升沿的时候,接收器接收数据。

2.CPOL=0,CPHA=1
在这里插入图片描述
第二种情况表示时钟线在空闲的时候是低电平,并且在上升沿的时候,发送器发送数据,在下降沿的时候,接收器接收数据。

3.CPOL=1,CPHA=0
在这里插入图片描述
第三种情况表示时钟线在空闲的时候是高电平,并且在上升沿的时候,发送器发送数据,在下降沿的时候,接收器接收数据。

4.CPOL=1,CPHA=1
在这里插入图片描述
第四种情况表示时钟线在空闲的时候是高电平,并且在下降沿的时候,发送器发送数据,在上升沿的时候,接收器接收数据。

需要说明的是,对于一个特定的从设备来说,一般在出厂时就会将其设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和该从设备保持一致,否则是无法进行通信的;所以我们需要对主设备CPOL和CPHA进行配置。

6.IIC和SPI的异同

相同点:
1.均采用串行、同步的方式。
2.均采用TTL电平,传输距离和应用场景类似。
3.均采用主从方式工作。

不同点:
1.IIC为半双工,SPI为全双工。
2.IIC有应答机制,SPI无应答机制。
3.IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送片选信号来寻址。
4.IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调。

7.stm32中SPI配置中常用的寄存器

在这里插入图片描述

8.stm32中相关库函数

主要是在spi.h中的库函数
关于spi在stm32中具体配置和使用,我在后期会单独写一篇博客。

总结: 以上内容就是我对于spi总线协议知识的了解,希望各位大佬能帮我指正出错误,不胜感激!!!


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

相关文章

【通信协议】一文搞懂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 近几年随着大数据、数据挖掘、人…

2020 年最牛逼的 10 门编程语言

先看再点赞,给自己一点思考的时间,微信搜索【沉默王二】关注这个有颜值却假装靠才华苟且的程序员。 本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题。 对于很多初学编程的人来说,尤其是马上要入…

世界上到底有多少种编程语言?

最近,网站上看到一个很有意思的问题:世界上到底有多少种编程语言? 查遍网络之后,仍然没有找到准确答案,只知道几千的数量是有的,但是我们常用的也就几十来个,其中最常见的便是Java、Python、C、…

世界上最难的5种编程语言

世界上最难的5种编程语言 每个程序员都熟悉许多编程语言。许多编程语言都是高级的,它们的语法是人类可读的。然而,也有一些低级语言,对于一个人来说,读起来很困难,但是可以理解。然而,您是否遇到过一种既不…

2018年最流行的十大编程语言,有你用的吗?

对于编程界的初学者来说,最大的困难是决定从何处入手,或者应掌握哪种语言才能在职场上平步青云。有时,专业程序员也面临学习一门新语言似乎更卓有成效的情形。 无论是什么原因,下面列出了世界上最流行的编程语言,以便了…

5月编程排行榜出炉,最佳编程语言是谁?

技术的发展日新月异,作为开发者,应该时刻关注这些变化,不断学习才能跟上时代步伐。 编程语言层出不穷,关于“ 最佳编程语言 ”的争论也从未停止,网友们各抒己见...... 网友A: 人生苦短,我选Pyt…

十大热门编程语言的介绍

小编给大家分享一篇关于现阶段十大热门编程语言的文章:经过流行的搜索引擎,如谷歌,必应,雅虎,维基百科,亚马逊,YouTube和百度,用于计算评级;得出十大热门编程语言排行榜的…

GitHub2022年十大热门编程语言榜单

全球知名代码托管平台 GitHub发布的2022年GitHub Octoverse年度报告公布了全球最流行的十大编程语言,其中JavaScript蝉联第一,Python位列次席。 编程是技术革新的核心,对于所有的编程开发人员来说,对世界范围内编程语言发展和趋势…

2021年十大热门编程语言

几乎可以肯定,每个人都知道,在当今数字先进的世界中,技术是如何快速变化的。经常通过定期更新和改进来观察替代技术之间的相互超越已成为一种正常现象。在这一切之中,一个领域因技术世界的如此多变的性质而受到很大的影响&#xf…

十大编程语言,每一个都不容易学,但每一个又很有用,黑客必备

一定要注意,您选择的编程将在很大程度上取决于您要定位的系统类型和计划使用的漏洞。因此,根据您的策略,任何语言都会很棒。 1. C语言 它被称为“所有编程语言之母”,也是Hacking社区中的关键语言。今天,我们拥有的大…

抖音照片图集怎么制作,如何将图片做成视频上传抖音?

抖音最近被很多人当做茶余饭后不可或缺的娱乐项目,丰富了很多人的业余生活,也成就了很多抖音人,经常在抖音上会看到很多不是直接拍摄的视频,而是通过图片图集的方式展示出来的视频,图片中还可以配上相应的文字&#xf…