SPI通信协议详解

简介: SPI通信协议详解

简介

与 I2C 一样, SPI 也是很常用的通信协议( Motorola 公司推出),且二者都支持“一主多从”通信,很多常见的模块(芯片)都支持了该通信协议。相比 I2C 接口, SPI 接口的通信速度更快( I2C 最高 400KHz,而 SPI 最高可达几十MHz),且支持全双工通信。

想了解I2C通信的可以看我之前写的这篇帖子:IIC(I2C)通信协议详解

1 电气连接

SPI通信的接线比I2C稍微复杂些,所以很需要一张图来说明。在SPI通信中,一般需要4根线。准确来说是3+N。N是从机的数量。

电气接线作用如下:

  • CS/SS, Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。 I2C 主机是通过发送从机设备地址来选择需要进行通信的从机设备的, 而SPI 主机不需要发送从机设备,直接将相应的从机设备片选信号拉低即可。所以有几个从机参与了SPI通信,就需要几根CS/SS信号线。
  • SCK, Serial Clock,串行时钟,为通信提供时钟信号。
  • MOSI/SDO, Master Out Slave In/Serial Data Output,简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是所谓的主机输出,从机输入。
  • MISO/SDI, Master In Slave Out/Serial Data Input,主入从出信号线,与MOSI相反,这根数据线只能从机向主机发送数据,也就是所谓的主机输入,从机输出。

记忆这4种接线的时候,只需要记住英文全称就可以反推出其简称。

2 通信过程

2.1 工作模式

SPI 有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)来实现(CPOL和CPHA的值可通过寄存器来设置)。

  • CPOL=0,串行时钟空闲状态为电平。
  • CPOL=1,串行时钟空闲状态为电平。
  • CPHA=0,串行时钟第个跳变沿(上升沿或下降沿)采集数据。
  • CPHA=1,串行时钟第个跳变沿(上升沿或下降沿)采集数据。

四种工作模式下的数据交换如下图所示:

2.2 通信时序

SPI的通信线增多了,通信也变得简单了起来,以常见的CPOL = 0和CPHA = 0为例,其通信时序如下所示。

首先通过将CS/SS线上的电平拉低,来实现片选,选择了具体的从机(芯片)后,便可发送时钟信号,根据时钟周期进行通信了,且可同时收发数据,十分高效。

还有一个好处,由于片选线的存在,避免了多个从机通信时候的总线冲突,因此不需要I2C那样外接上拉电阻

当然SPI通信也是有缺点的,

  1. SPI既没有UART通信那样的奇偶校验,也没有I2C那样的应答机制,所以并不能保证通信数据的准确性。
  2. 当从机较多的时候,会出现较多的通信线,这对于硬件设计师来说并不是一个好消息。在布线的过程中,不仅仅需要考虑到线路的交叉,还要考虑到信号的相互影响等等因素
相关文章
|
缓存 算法 JavaScript
分享一个开源一个新的雪花算法(雪花漂移)
  IdGenerator介绍   用一种全新的雪花漂移算法,让ID更短、生成速度更快。   核心在于缩短ID长度的同时,还能保持每毫秒并发处理量(50W/0.1s),且能保持伸缩能力。   需求来源   1.作为架构设计的你,想要解决数据库主键唯一的问题。   2.你希望这个主键是用最少的存储空间,索引速度更快。   3.你还会考虑在分库分表(合库合表)的时候,主键值能直接使用,并能反映业务时序。
990 0
|
Web App开发
一文读懂锁相环基本原理
一文读懂锁相环基本原理
2723 0
一文读懂锁相环基本原理
|
芯片 异构计算 内存技术
关于SPI协议,看这一篇文章就够了!
关于SPI协议,看这一篇文章就够了!
1452 0
关于SPI协议,看这一篇文章就够了!
|
10月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【注意力机制篇】| 2023 MCAttention 多尺度交叉轴注意力 获取多尺度特征和全局上下文信息
RT-DETR改进策略【注意力机制篇】| 2023 MCAttention 多尺度交叉轴注意力 获取多尺度特征和全局上下文信息
263 2
RT-DETR改进策略【注意力机制篇】| 2023 MCAttention 多尺度交叉轴注意力 获取多尺度特征和全局上下文信息
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
|
11月前
|
自然语言处理
Nature:人类亲吻难题彻底难倒LLM,所有大模型全部失败!LLM根本不会推理,只是工具
近期,《自然》杂志发表的研究显示,所有大型语言模型(LLM)在解释特定情境下人类亲吻行为时均失败。尽管LLM在语言处理和文本生成上表现出色,但在理解和推理复杂人类行为方面存在显著限制,表明其缺乏对人类情感、社会及文化背景的深入理解。专家认为LLM更像是工具而非智能体,虽在客户服务、内容创作等领域有价值,但在复杂推理和理解方面仍显不足。
252 37
|
11月前
|
弹性计算 运维 安全
操作系统智能助手OS Copilot 测评
我是一名曾担任个人开发者、运维工程师、架构师和产品经理的专业人士,主导过某品牌的全球网站架构及运行保障工作。近期受邀参与OS Copilot的产品体验评测,重点测试了其-t/-f/管道功能。在ECS实例上顺利安装并使用后,发现该产品在提升初级工程师效率方面表现出色,但在多管道支持、模型服务指定、RAM权限配置等方面仍有改进空间。建议优化资源分配模式,简化评测流程,并加强信息安全保护,以更好地满足企业级用户需求。
210 13
|
编解码 缓存 算法
视频帧里的I帧、P帧、B帧是什么?
I帧、P帧、B帧是视频编码中的基本概念。I帧是帧内编码帧,无需参考其他帧即可解码;P帧是前向预测编码帧,基于前一帧解码;B帧是双向预测编码帧,基于前后帧解码。IDR帧是一种特殊的I帧,用于即时解码刷新,防止错误传播。GOP(Group of Pictures)是一组连续的画面,第一个帧为I帧,gop_size设置越大,画质越好,但解码延迟增加。OpenGOP允许GOP间的帧依赖,而ClosedGOP则不允许。DTS(解码时间戳)和PTS(显示时间戳)分别用于解码和显示时间控制。
|
存储 监控 算法
动物目标检测——基于YOLOv5和树莓派4B平台
目标检测在计算机视觉领域中具有重要意义。YOLOv5(You Only Look One-level)是目标检测算法中的一种代表性方法,以其高效性和准确性备受关注,并且在各种目标检测任务中都表现出卓越的性能。本文将详细介绍如何在性能更强的计算机上训练YOLOv5模型,并将训练好的模型部署到树莓派4B上,通过树莓派的摄像头进行实时动物目标检测。 一、在电脑上训练YOLOv5模型 1. 安装Anaconda 在性能更强的计算机上安装Anaconda,方便管理Python环境和依赖。 从Anaconda官网(https://www.anaconda.com/products/distribu
494 6
|
存储 安全 Linux
在Linux中,`/etc/passwd` 和 `/etc/shadow` 文件分别有什么作用?
在Linux中,`/etc/passwd` 和 `/etc/shadow` 文件分别有什么作用?