stm32 之SPI通信协议

本文为大家介绍 SPI 通信协议的基础知识。

文章目录

  • 前言
  • 一、SPI协议的概念
  • 二、SPI总线架构
  • 三、SPI通讯时序
      • 1. 起始,停止 信号
      • 2.CPOL(时钟极性)/CPHA(时钟相位)
  • 四, I2C 总线 和SPI 总线比较
      • 相同点:
      • 不同点:
  • 总结

前言


一、SPI协议的概念

​ SPI(Serial Peripheral Interface)协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种 高速全双工的通信总线。采用主从模式架构,支持多从机模式应用。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行 方式进行通信以交换信息。

SPI总线可直接与各个厂家生产的多种标准外围器件相连,包括FLASH、 RAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。

二、SPI总线架构

​ SPI 协议通常使用四根信号线进行通信,分别是SCK,MOSI,MISO,CS。但是,在特定情况下只使用三根信号线,这被称为“三线SPI”或“3线SPI”。在这种配置下,SS信号线被省略,通常是因为只有一个从设备需要与主设备通信

SPI信号线 :

  • SCK(Serial Clock):时钟信号线,由主设备产生,用于同步数据传输。

  • MOSI(Master Output Slave Input):主设备输出,从设备输入的数据线。

  • MISO(Master Input Slave Output):主设备输入,从设备输出的数据线。

  • CS(Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、 CS,以下用 NSS 表示。当有多个 SPI 从设 备与 SPI 主机相连时,设备的其它信号线 SCK、MOSI 及 MISO 同时并联到相同的 SPI 总线上,而每个从设备都有独立的这一条 CS 信号线, 本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线
    在这里插入图片描述

三线 SPI ,单主机单从机:
在这里插入图片描述

三、SPI通讯时序

1. 起始,停止 信号

起始信号:
在图中的标号 1 处,NSS 信号线由高变低,是 SPI 通讯的起始信号。 NSS 是每个从机各自独占的信 号线,当从机检在自己的 NSS 线检测到起始信号后,就知道自己被主机选中了,开始准备与主机通讯。

停止信号:
在图中的标号 6 处,NSS 信号由低变高,是 SPI 通讯的停止信号。表示本次通讯结束,从机的选中状态被取。
在这里插入图片描述

2.CPOL(时钟极性)/CPHA(时钟相位)

​ SPI 一共有四种通讯模式,它们的主要区 别是:总线空闲时 SCK 的时钟状态以及数据采样时刻。为方便说明,在此引入“时钟极性CPOL”和 “时钟相位 CPHA”的概念。

  • 时钟极性 CPOL :是指 SPI 通讯设备处于空闲状态时, SCK 信号线的电平信号(即 SPI 通讯开始 前、 NSS 线为高电平时 SCK 的状态)。 CPOL=0 时, SCK 在空闲状态时为低电平,CPOL=1 时,则相反。

  • 时钟相位 CPHA :是指数据的采样的时刻,当 CPHA=0 时, MOSI 或 MISO 数据线上的信号将 会在 SCK 时钟线的“奇数边沿” 被采样。当 CPHA=1 时,数据线在 SCK 的“偶数边沿” 采样

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

四, I2C 总线 和SPI 总线比较

相同点:

  • 串行通信:
    I2C 和 SPI 都是串行通信协议,允许在数字设备之间以串行方式传输数据。

  • 同步通信:
    I2C 和 SPI 都是同步通信协议,需要时钟信号来同步数据传输。

  • 主从结构:
    两种协议都支持主从结构,主设备控制通信并提供时钟信号,而从设备响应并提供数据。

  • 多设备支持:
    .两种总线都支持连接多个设备,尽管 SPI 通常更适合连接较少数量的设备。

不同点:

  • 线数:
    I2C 使用两根线(数据线 SDA 和时钟线 SCL),而 SPI 通常使用四根线(MOSI、MISO、时钟和片选)。

  • 速度:
    通常情况下,SPI 比 I2C 更快,因为 SPI 通常可以使用更高的时钟频率。

  • 传输方式:
    .I2C 使用两根线共享数据和时钟信号,而 SPI 使用分开的数据和时钟线,使得 SPI 可以实现全双工通信。

  • 片选机制:
    在 SPI 中,片选信号由主设备控制,并用于选择与之通信的从设备。而在 I2C 中,地址机制用于选择从设备。

  • 硬件复杂性:
    由于 SPI 使用更多的线路和片选机制,它通常比 I2C 在硬件上更复杂,需要更多的引脚和硬件支持。

  • 应用场景:
    由于 SPI 速度更快、更适合高速数据传输,因此通常用于连接高速外围设备,如存储器、传感器等。而 I2C 通常用于连接低速外围设备,如温度传感器、EEPROM 等。


总结

下一篇文章为大家介绍 串口 UART 通信协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/530821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二叉树的前序遍历、中序遍历、后序遍历

二叉树的前序遍历、中序遍历、后序遍历 一、递归算法的三个要素二、144. 二叉树的前序遍历三、94. 二叉树的中序遍历四、145. 二叉树的后序遍历 一、递归算法的三个要素 1、确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在…

【单片机】PMS5003,PM2.5传感器数据读取处理

文章目录 传感器介绍数据处理解析pm2.5的代码帮助、问询 传感器介绍 PMS5003是一款基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集 并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而 换算成为质量浓度,并以通用数字接口形式输出。本传感器可…

LangChain-15 Manage Prompt Size 管理上下文大小,用Agent的方式询问问题,并去百科检索内容,总结后返回

背景描述 这一节内容比较复杂: 涉及到使用工具进行百科的检索(有现成的插件)有AgentExecutor来帮助我们执行后续由于上下文过大, 我们通过计算num_tokens,来控制我们的上下文 安装依赖 pip install --upgrade --qu…

SpringBoot整合RabbitMQ-应答模式

一、应答模式 RabbitMQ 中的消息应答模式主要包括两种:自动应答(Automatic Acknowledgement)和手动应答(Manual Acknowledgement)。(一般交换机发送消息,RabbitMQ只有在接收到消费者的确认后才…

常见性能测试工具对比

在性能测试工作中,我们常常会遇到好几个工具,但是每一个工具都有自己的优势,一时间不知道怎么选择。 今天我们就将性能测试常用的工具进行对比,这样大家在选择工具的时候心里就有底啦! 阿里云PTS 性能测试PTS&#xff…

基于springboot实现常州地方旅游管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现旅游管理系统演示 摘要 随着旅游业的迅速发展,传统的旅游信息查询方式,已经无法满足用户需求,因此,结合计算机技术的优势和普及,针对常州旅游,特开发了本基于Bootstrap的常州地方旅游管…

C++初阶:6.string类

string类 string不属于STL,早于STL出现 看文档 C非官网(建议用这个) C官网 文章目录 string类一.为什么学习string类?1.C语言中的字符串2. 两个面试题(暂不做讲解) 二.标准库中的string类1. string类(了解)2. string类的常用接口说明(注意下面我只讲解…

ONNX系列: ONNX模型修改

ONNX 模型修改 当我们熟悉了ONNX模型各个层级的结构后,我们便可以针对各个结构来对模型进行修改,从而使其更好的适配后端运行时或者特定硬件平台的编译器。对模型的修改通常可以概括为"增删改查"的操作。"增"是增加相应结构&#xf…

SAP 采购订单预制发票不让重复开立增强(包含:LMR1MF6S)<转载>

原文链接:https://blog.csdn.net/LH26988/article/details/136802631 之前博主有介绍过通过配置来控制不让采购发票重复开立,然是这个方式有点缺陷(跳转) 今天介绍,通过增强来彻底搞定这个问题的办法: 问题…

数组与链表:JavaScript中的数据结构选择

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

环境监测站升级选择ARM网关驱动精准数据采集

物联网技术的深入发展和环保需求的不断攀升,API调用网关在环境监测领域的应用正成为科技创新的重要推手。其中,集成了API调用功能的ARM工控机/网关,以其出色的计算性能、节能特性及高度稳定性,成功搭建起连接物理世界与数字世界的…

vue3移动端H5 瀑布流显示列表

以上效果 是之前发送的改进版 waterList <template><view class"pro-cons" v-if"data.length"><view class"cons-left"><template v-for"(item, index) in data"><template v-if"(index 1) % 2 1…

wangEditor 测试环境对,但是生产环境无法显示

package.json 文件版本 "wangeditor": "4.3.0"开发环境 new Editor(#${this.id});出来的数据 正式环境 new Editor(#${this.id});出来的数据 原因&#xff1a; vue.config 文件 打包策略的时候 const assetsCDN {css: [https://lf6-cdn-tos.bytecd…

【分析 GClog 的吞吐量和停顿时间、heapdump 内存泄漏分析】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容GClog分析以优化吞吐量和停顿时间步骤1: 收集GClog步骤2: 分析GClog步骤3: 优化建议步骤4: 实施优化 Heapdump内存泄漏分析步骤1: 获取Heapdump步骤2: 分析Heapdump步骤3: 定位泄漏对象步骤4: 分析泄漏原因步骤5: 修复泄漏…

基于YOLOv8的摄像头下铁路工人安全作业检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的铁路工人安全作业检测系统&#xff0c;属于小目标检测范畴&#xff0c;并阐述了整个数据制作和训练可视化过程&#xff0c; 博主简介 AI小怪兽&#xff0c;YOLO骨灰级玩家&#xff0c;1&#xff0…

物联网实战--驱动篇之(六)4G通讯(Air780E)

目录 一、4G模块简介 二、AIR780E驱动程序 三、AIR780使用注意事项 四、结合MQTT传输测试 一、4G模块简介 4G应该是我们日常生活最常见的一种互联网通讯方式了&#xff0c;每个智能手机都配置了&#xff0c;不过手机的4G跟我们物联网领域要用的4G有点区别。首先是物联网采用…

Docker容器嵌入式开发:MySQL表的外键约束及其解决方法

本文内容涵盖了使用MySQL创建数据库和表、添加数据、处理字符集错误、解决外键约束问题以及使用SQL查询数据的过程。通过创建表、插入数据和调整字符集等操作&#xff0c;成功解决了数据库表中的字符集问题&#xff0c;并使用INSERT语句向各个表中添加了示例数据。同时&#xf…

乘苏州金龙客车,览西北无边胜境

2023年&#xff0c;甘肃省共接待游客3.88亿人次&#xff0c;实现旅游收入2745.8亿元&#xff0c;分别较上年同期增长187.8%和312.9%&#xff0c;分别恢复到2019年同期的104%和102.4%。随着旅游市场的持续火爆&#xff0c;甘肃保利旅游客运有限责任公司&#xff08;简称“甘肃保…

Day105:代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析

目录 代码审计-学前须知 Bluecms-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-2次注入审计分析 知识点&#xff1a; 1、PHP审计-原生态开发-SQL注入&语句监控 2、PHP审计-原生态开发-SQL注入&正则搜索 3、PHP审计-原生态开发-SQ…

vulhub之Webmin篇

Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统&#xff0c;这些系统除了各种版本的linux以外还包括&#xff1a;AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 影响版本&…