当前位置: 首页 > news >正文

SPI简述

本文章是对SPI串行外设接口的简要总结描述,希望里面的内容可以让大家对SPI有更加直观的了解,文中若存在表述不妥或错误之处,欢迎各位批评指正。。

定义

一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口。

作用

主要用于主控制器与外设从设备之间的高速同步串行通信。

优点

1.无起始位和停止位,因此数据位可以连续传输而不会被中断;
2.没有像I2C这样复杂的从设备寻址系统;
3.数据传输速率比I2C更高(几乎快两倍);
4.分离的MISO和MOSI信号线,因此可以同时发送和接收数据;
5.极其灵活的数据传输,不限于8位,它可以是任意大小的字;
6.非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。

缺点

1.使用四根信号线(I2C和UART使用两根信号线);
2.无法确认是否已成功接收数据(I2C拥有此功能);
3.没有任何形式的错误检查,如UART中的奇偶校验位;
4.只允许一个主设备;
5.没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
6.没有定义硬件级别的错误检查协议;
7.与RS-232和CAN总线相比,只能支持非常短的距离;

主从模式简述

SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。
提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。

一主一从模式:

一主多从模式:

通信原理简述

SPI通信原理很简单,需要至少4根线,单向传输时3根线,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选):
MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;
MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
SCLK(Serial Clock):时钟信号,由主设备产生;
CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

SPI通信流程

1、主设备发起信号,将CS/SS拉低,启动通信。

2、主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低),因为SPI有四种模式,后面会讲到),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。

3、主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。

4、从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

下面是主机发送0x53,主机接收0x46:

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

SPI通信特性

1.时钟极性与时钟相位

CKP(时钟极性):

  • CKP = 0:时钟空闲IDLE为低电平 0;
  • CKP = 1:时钟空闲IDLE为高电平1。
    CKE(时钟相位):
  • CKE = 0:在时钟信号SCK的第一个跳变沿采样;
  • CKE = 1:在时钟信号SCK的第二个跳变沿采样。

2.四种工作模式

Mode0:CKP=0,CKE =0:当空闲态时,SCK处于低电平,数据采样是在第1个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在上升沿(准备数据),(发送数据)数据发送是在下降沿。
Mode1:CKP=0,CKE=1:当空闲态时,SCK处于低电平,数据发送是在第2个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
Mode2:CKP=1,CKE=0:当空闲态时,SCK处于高电平,数据采集是在第1个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
Mode3:CKP=1,CKE=1:当空闲态时,SCK处于高电平,数据发送是在第2个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
数据采集和数据发送必须在不同边沿进行

3.设备选择

SPI是单主设备(Single Master)通信协议 ,只有一支主设备能发起通信,当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线(SS是低电平有效)。接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”。

在一主多从时,当一个从设备发生故障,那么它下面优先级更低的从设备就不会得到服务
另一方面,距离主机越远的从机,获得服务的优先级越低,所以需要安排好从机的优先级,并且设置总线检测器,如果某个从机超时,则对该从机进行短路,防止单个从机损坏造成整个链路崩溃的情况。

本文借鉴了CSDN博主「不脱发的程序猿」的文章,文章链接:

SPI通信协议详解:原理、模式与应用-CSDN博客

http://www.jsqmd.com/news/1251491/

相关文章:

  • 2026哈尔滨板车物流到上海物流专线哪家好?哈尔滨悦达物流公司口碑推荐 - mobible
  • 【论文阅读】WiscKey
  • AI提示词框架实战:ICIO与CRISPE提升大模型效能
  • 万国上海2026年7月最新售后网点地址与全国统一客服热线正式公示通知 - 万国中国官方服务中心
  • 2026 年更新:川汇值得关注的屋面找坡陶粒直销厂家哪家专业,别再瞎找了!屋面修复的秘密武器曝光-旭发陶粒厂 - 行业推荐【认证官】
  • GICP点云配准技术:原理、实现与优化实践
  • 工商管理专业学生可以考哪些证书?
  • 7月决议悬念升温,联储内部信号出现分化下的AI政策预测框架
  • AI Agent工程化实践:从模型开发到系统稳定性的关键挑战
  • TVP5151视频解码芯片硬件设计与I2C配置全解析
  • BAML框架实战:LLM调用层标准化迁移与智能体系统优化
  • 2026黑龙江全国长途物流到吉林物流专线哪家好|哈尔滨悦达物流公司口碑推荐 - mobible
  • 锂离子电池SOH预测:RNN、LSTM与GRU对比实践
  • 宁德本地防水补漏精选TOP5推荐:正规漏水检测维修公司上门师傅推荐:厕所/棚顶/屋面/飘窗/阳台/地下室/厨房渗漏水精准测漏维修(2026最新) - 即刻修防水
  • 第 14 篇:AI 只会聊天?教你千问点奶茶能力的底层技术(Java+AI落地实战系列 | Function Calling 完整实现,从问答升级为业务执行助手)
  • AI PPT一改就崩?MemSlides登顶抱抱脸,让Agent记住你的改稿习惯
  • 2026年沈阳高价回收劳力士手表,(185-3117-2838)铁西区北二中路6号赵掌柜二奢实体店回收爱马仕包包、劳力士手表、江诗丹顿手表、迪奥包包、梵克雅宝首饰 - 优企甄选
  • 基于 Spring 事务同步机制的事务后置动作收集器 Starter 实践
  • 2026年亚马逊气候友好承诺认证怎么办理?看完这篇就知道 - 品牌排行榜
  • Prompt 模板 Git 化后,我们的 Java AI 评测准确率提升了 38%
  • 工控必备Shell脚本开发:自动挂载、日志归档、看门狗、程序守护脚本
  • 【紧急预警】通义千问多模态模型在OCR+逻辑推理场景存在隐性幻觉!资深NLP工程师已定位3类高危失效模式
  • 深度学习在环境声音分类中的应用与实践
  • BQ40Z50-R4 BMS实战:硬件保护、永久失效诊断与SMBus通信配置
  • 深度学习驱动的结构引导中文字体生成技术解析
  • 别再瞎喂AI了!资深内容总监的7步数据化喂养法:让AI输出合格率从42%跃升至91%
  • MSP430低功耗设计实战:从数据手册到超长续航嵌入式系统
  • 高性能SAR ADC评估实战:从硬件连接到FFT分析,快速验证ADS8353/7853性能
  • GPT-5.6推翻近30年数学猜想,全程对话公开:提示词只有58个单词???
  • Docker化Autoware规划控制模块启动路径解析