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

spi总线

一、介绍

SPI总线(Serial Peripheral Interface,串行外设接口)是一种高速全双工同步串行通信总线,核心通过“主从架构+同步时钟”实现设备间数据传输,因结构简单、速率高,广泛用于MCU与传感器、存储芯片、显示模块等外设的短距通信。

 

二、核心架构:

主从控制,4线基础

SPI总线采用“一主多从”模式,所有设备共享时钟和数据线,通过片选信号区分不同从设备,基础通信需4根信号线(部分场景可简化),各线功能如下:

- SCLK(Serial Clock,串行时钟):由主设备(Master) 产生,用于同步主从设备的数据传输节奏,是“同步通信”的核心;

- MOSI(Master Out, Slave In,主出从入):主设备向从设备发送数据的单向信号线;

- MISO(Master In, Slave Out,主入从出):从设备向主设备返回数据的单向信号线;

- SS/CS(Slave Select/Chip Select,从设备选择):主设备通过拉低某一从设备的SS引脚,单独选中该设备(未被选中的从设备SS引脚为高电平,不响应总线通信),是“多从设备区分”的关键。

 

三、通信原理:同步时钟下的“位同步传输”

SPI的核心是“时钟同步数据”,主设备通过SCLK控制每一位数据的传输时机,主从设备在时钟的特定边沿(上升沿/下降沿)采样或发送数据,整个过程可分为3个关键步骤:

 

1. 选中从设备:主设备拉低目标从设备的SS引脚

主设备要与某一从设备通信时,首先将该从设备的SS引脚拉低(低电平有效,部分设备支持高电平有效,需硬件定义),此时其他从设备的SS引脚保持高电平,处于“休眠状态”,不接收总线上的SCLK和MOSI信号。

 

2. 同步传输:时钟边沿触发数据读写

主设备产生SCLK时钟信号,主从设备在时钟的预设边沿(由“时钟极性(CPOL)”和“时钟相位(CPHA)”定义)同步完成数据传输:

 

- 主设备在SCLK的某一边沿(如上升沿)将MOSI线的“1位数据”输出,从设备在同一边沿读取该数据;

- 同时,从设备在SCLK的另一边沿(如下降沿)将MISO线的“1位数据”输出,主设备在同一边沿读取该数据;

- 每一个SCLK周期传输1位数据,8个SCLK周期即可完成1字节(8位)数据的“全双工传输”(主→从、从→主同时进行)。

 

3. 结束通信:主设备拉高SS引脚

数据传输完成后,主设备将该从设备的SS引脚拉高,从设备退出通信状态,总线释放,可准备与下一个从设备通信。

 

四、关键参数:

CPOL与CPHA决定通信时序

SPI的通信时序由“时钟极性(CPOL)”和“时钟相位(CPHA)”两个参数定义,共4种组合(即4种“SPI模式”),主从设备必须使用相同的模式才能正常通信:

 

- CPOL(时钟极性):定义SCLK在“空闲状态”(无数据传输时)的电平:

- CPOL=0:空闲时SCLK为低电平;

- CPOL=1:空闲时SCLK为高电平。

- CPHA(时钟相位):定义“数据采样”发生在SCLK的第几个边沿:

- CPHA=0:数据在SCLK的“第一个边沿”(CPOL=0时为上升沿,CPOL=1时为下降沿)采样;

- CPHA=1:数据在SCLK的“第二个边沿”(CPOL=0时为下降沿,CPOL=1时为上升沿)采样。

 

五、核心特性:优势与局限

 

1. 优势:高速、灵活、全双工

- 高速传输:无起始位/停止位(区别于UART),仅需时钟同步,速率可达几Mbps到几十Mbps(取决于硬件支持);

- 全双工:MOSI和MISO独立,主从可同时收发数据,适合需要双向高速通信的场景(如SD卡、SPI Flash);

- 多从扩展:通过增加SS引脚,主设备可连接多个从设备,硬件结构简单(无需地址线,仅需1根SS对应1个从设备)。

 

2. 局限:短距、无硬件校验

- 传输距离短:因采用单端信号(无差分抗干扰设计),抗干扰能力弱,通常传输距离不超过10米,仅适合板内或板间短距通信;

- 无硬件校验:总线本身不自带奇偶校验或CRC校验,数据可靠性需通过软件协议(如添加校验位)保障;

- 主从依赖:从设备无法主动发起通信,必须由主设备控制,不适合需要从设备主动上报数据的场景(如传感器实时报警)。

 

六、总结

SPI总线的本质是“主设备主导的同步串行通信”,通过SCLK实现数据同步,用SS区分从设备,凭借高速全双工的优势成为短距外设通信的主流选择。实际应用中,需重点匹配主从设备的SS电平极性和SPI模式(CPOL/CPHA),同时通过软件校验弥补硬件无校验的不足,确保数据传输可靠。

http://www.dtcms.com/a/360508.html

相关文章:

  • 7.2elementplus的表单布局与模式
  • MCP SDK 学习二
  • 艾体宝案例 | 数据驱动破局:DOMO 如何重塑宠物零售门店的生存法则
  • Python 2025:AI代理、Rust与异步编程的新时代
  • 张柏芝亮相林家谦演唱会 再次演绎《任何天气》
  • Spring MVC 九大组件源码深度剖析(五):HandlerAdapter - 处理器的执行引擎
  • 三、环境搭建之Docker安装mysql
  • 一、计算机系统知识
  • Springcloud-----Nacos
  • 【influxdb】InfluxDB 2.x 线性写入详解
  • 层次分析法
  • Redis实现短信登录
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘SQLModel’问题
  • 37. 解数独
  • 解锁Tensor Core性能:深入探索CUDA Warp矩阵操作
  • Dify构建AI应用
  • FART 主动调用组件深度解析:破解 ART 下函数抽取壳的终极武器
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-3
  • 第七章 使用角色和Asible内容集合简化Playbook
  • 4.4 光照(4) - 高光反射
  • 硬件工程师成长之路:从入门到精通的技术旅程
  • [Plecs基础知识系列]建立自定义模块/子系统(Subsystem)
  • C++ 面试高频考点 力扣 69. x 的平方根 二分查找 题解 每日一题
  • Linux网络socket套接字(中)
  • 切片语法[::-1]及其可用的类型
  • 基于单片机智能鞋柜/智能鞋橱/智能鞋盒
  • Linux - #操作系统概念 #权限
  • 获取某天的零点日期
  • Java 异常处理全解析:从基础到实践
  • Rust 登堂 之 枚举和整数(八)