0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPI 为什么比 I2C 更快?

信盈达 2026-01-04 09:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

当你将微控制器连接到传感器、显示器或其他模块时,你有没有想过这两个设备是如何相互通信的?它们到底在说什么?它们是如何相互理解的?


电子设备之间的通信就像人与人之间的通信。双方需要使用相同的语言。在电子领域,这些语言被称为通信协议 。幸运的是,在构建大多数 DIY 电子项目时,我们只需要了解少数几种通信协议。在本系列文章中,我们将讨论三种最常见协议的基础知识:串行外设接口 (SPI)、 集成电路间通信 (I2C) 和通用异步收发器 (UART) 驱动的通信 。


首先,我们将介绍一些电子通信的基本概念,然后详细解释 SPI 的工作原理。在下一篇文章中,我们将讨论 UART 驱动的通信,在第三篇文章中,我们将深入探讨 I2C 通信。


SPI、I2C 和 UART 比 USB以太网蓝牙和 WiFi 等协议慢得多,但它们更简单,占用的硬件和系统资源更少。SPI、I2C 和 UART 非常适合微控制器之间以及微控制器与传感器之间的通信,因为这些通信不需要传输大量高速数据。



串行与并行通信

电子设备通过物理连接的线路发送数据位来实现相互通信。比特就像单词中的一个字母 ,只不过它不是英文字母表中的 26 个字母,而是二进制的,并且只能是 1 或 0。比特通过电压的快速变化从一个设备传输到另一个设备。在一个工作电压为 5 V 的系统中,0 比特通过 0 V 的短脉冲传输,而 1 比特通过 5 V 的短脉冲传输。


数据位可以并行或串行传输。在并行通信中,所有数据位同时发送,每个位通过单独的线路。下图显示了二进制字母“C”(01000011)的并行传输:


bb9236d6-e90a-11f0-8ce9-92fbcf53809c.jpg


在串行通信中,位通过单线逐位发送。下图显示了二进制字母“C”(01000011)的串行传输:


bba88026-e90a-11f0-8ce9-92fbcf53809c.jpg



SPI 通信简介

SPI 是许多不同设备使用的常见通信协议。例如,SD 卡读卡器模块 、 RFID 卡读卡器模块和 2.4 GHz 无线发射器/接收器都使用 SPI 与微控制器通信。


SPI 的一个独特优势是数据传输不间断。它可以连续地发送或接收任意数量的比特。而 I2C 和 UART 则以数据包的形式发送,每个数据包的比特数有限。起始和停止条件定义了每个数据包的开始和结束,因此数据在传输过程中会被中断。


通过 SPI 通信的设备属于主从关系。主设备是控制设备(通常是微控制器),而从设备(通常是传感器、显示器或存储芯片)则接受主设备的指令。SPI 最简单的配置是单主单从系统,但一个主设备可以控制多个从设备(下文将详细介绍)。


bbb20826-e90a-11f0-8ce9-92fbcf53809c.jpg


MOSI(主输出/从属输入) ——主机向从属机发送数据的线路。

MISO(主输入/从输出) ——从机向主机发送数据的线路。

SCLK(时钟) ——时钟信号线。

SS/CS(从机选择/片选) ——主机选择向哪个从机发送数据的线路。


bbe344fe-e90a-11f0-8ce9-92fbcf53809c.jpg


*实际上,从机的数量受到系统负载电容的限制,这降低了主机在电压水平之间准确切换的能力。



SPI 的工作原理

时钟

时钟信号将主机的数据位输出与从机的位采样同步。每个时钟周期传输一位数据,因此数据传输速度取决于时钟信号的频率。SPI 通信始终由主机发起,因为主机负责配置和生成时钟信号。


任何设备共享时钟信号的通信协议都称为同步通信协议。SPI 就是一种同步通信协议。此外,还有一些异步通信方法不使用时钟信号。例如,在 UART 通信中,两端都设置为预配置的波特率,该波特率决定了数据传输的速度和时序。


SPI 中的时钟信号可以使用时钟极性和时钟相位的属性进行修改。这两个属性共同定义位输出和采样的时间。主设备可以设置时钟极性,以允许在时钟周期的上升沿或下降沿输出和采样位。可以设置时钟相位,使输出和采样发生在时钟周期的第一个边沿或第二个边沿,无论是上升沿还是下降沿。


从属选择

主机可以通过将从机的 CS/SS 线设置为低电平来选择要与哪个从机通信。在空闲、非传输状态下,从机选择线保持高电平。主机上可能有多个 CS/SS 引脚,这样就可以并行连接多个从机。如果只有一个 CS/SS 引脚,则可以通过菊花链方式将多个从机连接到主机。


多个从属

SPI 可以设置为单主机单从机模式,也可以设置为单主机控制多从机模式。将多从机连接到主机有两种方法。如果主机有多个从机选择引脚,则可以像这样并联连接多从机:

bbec394c-e90a-11f0-8ce9-92fbcf53809c.jpg

如果只有一个从机选择引脚可用,则可以像这样以菊花链形式连接从机:

bc0355fa-e90a-11f0-8ce9-92fbcf53809c.jpg

MOSI 和 MISO

主机通过 MOSI 线以串行方式逐位向从机发送数据。从机通过 MOSI 引脚接收主机发送的数据。主机向从机发送数据时,通常先发送最高有效位。


从机也可以通过串行 MISO 线将数据发送回主机。从机发送回主机的数据通常以最低有效位优先的方式发送。


SPI 数据传输步骤

1、主机输出时钟信号:

bc0f27e0-e90a-11f0-8ce9-92fbcf53809c.jpg
2、主机将 SS/CS 引脚切换至低电压状态,从而激活从机:bc200376-e90a-11f0-8ce9-92fbcf53809c.jpg
3、主机通过 MOSI 线将数据逐位发送给从机。从机接收到数据后,读取这些位:bc296bdc-e90a-11f0-8ce9-92fbcf53809c.jpg


4、如果需要响应,从设备会通过 MISO 线一次一位地向主设备返回数据。主设备在接收到数据后会读取这些位:bc3c9676-e90a-11f0-8ce9-92fbcf53809c.jpg



SPI 的优点和缺点


使用 SPI 有一些优点和缺点,如果要在不同的通信协议之间进行选择,您应该根据项目要求知道何时使用 SPI:


优势

没有起始位和停止位,因此数据可以连续传输而不会中断

没有像 I2C 那样复杂的从属寻址系统

数据传输速率比 I2C 更高(几乎快两倍)

分离 MISO 和 MOSI 线路,以便可以同时发送和接收数据


缺点

使用四根线(I2C 和 UART 使用两根)

没有确认数据已成功接收(I2C 有此情况)

没有像 UART 中的奇偶校验位那样的错误检查形式

仅允许单个主机


希望本文能帮助您更好地理解 SPI。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    49

    文章

    8923

    浏览量

    166147
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1910

    浏览量

    102846
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1568

    浏览量

    132123
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SPII2C、UART串行总线协议

    串口通讯通信协议UART,以及常用外设通信协议 SPII2C的介绍与他们之间的区别
    发表于 11-30 11:28 96次下载

    SPI总线及I2C总线工作原理

    SPI总线及I2C总线工作原理,本内容详细介绍了SPI总线和I2C总线的工作原理和比较
    发表于 12-08 16:55 0次下载

    SPI、SCI、I2C、UART之间的异同

    详细介绍了SPI、SCI、I2C、UART几种通信方式的异同便于读者整体了解通信的意义.
    发表于 12-15 14:32 0次下载

    CAN、I2S、I2CSPI、SSP总线的介绍和比较

    CAN、I2S、I2CSPI、SSP总线的介绍和比较。
    发表于 07-14 16:20 58次下载

    浅谈I2C总线,I2C接口和SPI接口的作用相同

    SDA 和 SCL 都是双向的。SPI 总线有两根单独的线,分别用于两个方向的通信,而 I2C 总线不同,它使用同一根线来完成主机发送数据和接收从机响应。另外,与 SPI 总线具有多个工作模式
    的头像 发表于 03-21 10:24 2.6w次阅读
    浅谈<b class='flag-5'>I2C</b>总线,<b class='flag-5'>I2C</b>接口和<b class='flag-5'>SPI</b>接口的作用相同

    详细介绍GPIO、I2CSPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI2. SPI优与缺点3.
    发表于 12-05 12:51 21次下载
    详细介绍GPIO、<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>通讯原理以及物理层原理

    详细介绍GPIO、I2CSPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI2. SPI优与缺点3.
    发表于 12-05 13:21 9次下载
    详细介绍GPIO、<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>通讯原理以及物理层原理

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
    发表于 12-28 19:14 83次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    Gowin SPI to I2C IP用户指南

    电子发烧友网站提供《Gowin SPI to I2C IP用户指南.pdf》资料免费下载
    发表于 09-16 15:34 0次下载
    Gowin <b class='flag-5'>SPI</b> to <b class='flag-5'>I2C</b> IP用户指南

    SPI可以像I2C挂多个设备吗?

    最近看到有小伙伴在讨论:SPI可以像I2C挂多个设备吗?
    的头像 发表于 05-14 10:10 6626次阅读
    <b class='flag-5'>SPI</b>可以像<b class='flag-5'>I2C</b>挂多个设备吗?

    I2CSPI的区别是什么 速率对比

    I2CSPI 对比   功能 I2C SPI 线数 2(SDA,SCL) 4(MOSI,MISO,SCLK,CS) 主机数量 >=1
    的头像 发表于 07-27 10:55 6167次阅读

    SPI自举程序中使用的I2C协议

    电子发烧友网站提供《SPI自举程序中使用的I2C协议.pdf》资料免费下载
    发表于 09-21 11:41 0次下载
    <b class='flag-5'>SPI</b>自举程序中使用的<b class='flag-5'>I2C</b>协议

    UART、SPII2C比较 串口通信介绍

    UART、SPII2C比较 I2C线更少,UART、SPI更为强大,但是技术上也更加麻烦些,因为I2
    的头像 发表于 11-09 18:06 3081次阅读
    UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比较 串口通信介绍

    SPII2C的异同及优缺点

    SPII2C的异同及优缺点  SPI(Serial Peripheral Interface)和I2C(Inter-Integrated Circuit)是两种常见的串行通信接口协议
    的头像 发表于 12-07 10:46 5424次阅读

    SPII2C通信协议:应用与区别

    本文深入解析了SPII2C这两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;I2C适用于低速控制和传感器数据传输,常用于温度传感
    的头像 发表于 04-22 16:45 4026次阅读