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

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

3天内不再提示

超全面!SPI通信协议详解

亿佰特物联网应用专家 2023-08-14 10:06 次阅读

什么是SPI?

SPI的英文全称为Serial Peripheral Interface,顾名思义为串行外设接口。SPI是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩托罗拉在20世纪80年代中期开发,后发展成了行业规范。

SPI简介?

SPI是一种高速的、全双工的、同步的通信总线,并且至多仅需使用4根线,节约了芯片的管脚,SPI主要应用于EEPROM、FLASH、ADCDAC等芯片,还有数字信号处理器和数字信号解码器之间。SPI设备之间采用全双工模式通信,是一个主机和一个或者多个从机的主从模式。主机负责初始化帧,这个数据传输帧可以用于读与写两种操作,片选线可以从多个从机选择一个来响应主机的请求。SPI接口定义如下表:1f98df42-3a47-11ee-bbcf-dac502259ad0.png由上表也可以看出当SPI设备间通信时,数据线应该是MOSI连接MOSI,MISO连接MISO,SCLK与SCLK相连,而不是像串口那样TX、RX进行反接。当只有单一SPI从机设备时,如果从机设备允许的话,可直接将CS/SS线固定在低电平。然而类似于MAX1242这款需要CS/SS线的下降沿来触发的芯片,则必须将CC/SS线与主机相连。如下图,为一主一从连接方式。
1fd45cde-3a47-11ee-bbcf-dac502259ad0.png对于多个从机设备时,则每个从机都需要一根CS/SS线来与主机相连,从而达到主机能与任一从机通信的目的。如下图,为一主多从的连接方式。1febb0e6-3a47-11ee-bbcf-dac502259ad0.png大多数从机设备都有着三态逻辑的特性,因此当设备未被选中时,它们的MISO信号线会变成高阻抗状态(电气断开)。没有三态输出的设备则需外接三态缓冲器才能与其他的从机设备共享SPI总线。

数据传输

在SPI通信中,SPI主机设备以从机设备支持的频率通过SCLK线给到SPI从机设备,这点也意味着从机是无法主动向主机发送数据的,只能主机轮询向从机发或者从机设备主动通过一个IO口来告知主机数据到达。在SPI每个时钟周期内,都会进行一次全双工数据的传输。主机通过MOSI线上发送1bit时,从机也会在读取到之后通过MISO线发送1bit数据出去。这说明,即使只进行单工通信,也会保持此通信顺序。SPI传输通常涉及到两个给定了字长的移位寄存器。例如在主机、从机中的8bit的移位寄存器。它们以虚拟环形拓扑连接,数据通常先从最高有效位被移出。在时钟沿,主机和从机都移出1bit数据从传输线上给到对方。在下一个时钟边沿来到时,双方的接收器再对传输线上的该bit进行采样,并将其设置为移位寄存器的新的最低有效位。在寄存器位被移出和移入后,主机和从机交换了寄存器值。如果需要交换更多数据,则重新加载移位寄存器并重复该过程。传输可以持续任意数量的时钟周期。完成后,主机停止切换时钟信号。如下图,为主从机之间的交互时的移位寄存器示意图。20317522-3a47-11ee-bbcf-dac502259ad0.png其中上图的通信流程如下:
1.SPI主机首先现将SS或CS线拉低,以此来告知SPI从机通信开始。2.主机通过发送SCLK时钟信号,来告知从机即将进行的读写操作。这里的SCLK时钟信号是由SPI的模式来决定是高电平还是低电平有效的,这点在稍后会进行介绍。3.主机(Master)将要发送的数据写到发送数据缓存区(Memory),缓存区经过移位寄存器(0~7),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。4.从机(Slave)也将自己的串行移位寄存器(0~7)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

SPI通信的4种工作模式

SPI通信中有4种不同的操作模式,不同的从机设备可能在出厂时就被设置好了某种模式,并且无法更改。但是SPI通信必须处于同一种模式下才能进行。因此我们应该对自己手里的SPI主机设备进行模式的配置,也就是通过CPOL(时钟极性)和CPHA(时钟相位)来控制SPI主设备的通信模式,具体如下:时钟极性(CPOL)定义了SCLK时钟线空闲状态时的电平:1.CPOL=0,即SCLK=0,表示SCLK时钟信号线在空闲状态时的电平为低电平,因此有效状态为高电平。2.CPOL=1,即SCLK=1,表示SCLK时钟信号线在空闲状态时的电平为高电平,因此有效状态为低电平。时钟相位(CPHA)定义了数据位相对于时钟线的时序(即相位):1.CPHA=0,即表示输出(out)端在上一个时钟周期的后沿改变数据,而输入(in)端在时钟周期的前沿(或不久之后)捕获数据。输出端保持数据有效直到当前时钟周期的尾部边缘。对于第一个时钟周期来说,第一位的数据必须在时钟前沿之前出现在MOSI线上。也就是一个CPHA=0的周期包括半个时钟空闲和半个时钟置位的周期。2.CPHA=1,即表示输出(out)端在当前时钟周期的前沿改变数据,而输入(in)端在时钟周期的后沿(或不久之后)捕获数据。输出端保持数据有效直到下一个时钟周期的前沿。对于最后一个时钟周期来说,从机设备在片选信号消失之前保持MISO信号线有效。也就是一个CHPA=1的周期包括半个时钟置位和半个时钟空闲的周期。注意:此处的前沿和后沿的意思表示在每个周期中第一个出现的边沿和最后一个出现的边沿。总的来说则为:当时钟为正向时钟时,时钟线的上升沿为前沿,时钟的下降沿为后沿,反之。如下表,为SPI通信的4种模式:204103ca-3a47-11ee-bbcf-dac502259ad0.png下图显示了时钟极性和相位的时序图。红线表示时钟的前沿,蓝线表示时钟的后沿。
2071ac96-3a47-11ee-bbcf-dac502259ad0.png

SPI协议的优缺点

SPI的优点在于它有着比I2C更高的吞吐量,不被最大时钟速度所限制,可实现潜在的高速、极为简单的硬件接口,外围电路使用的上拉电阻是比I2C协议更少的,这意味着它具有比I2C的功耗更低、从机的时钟来源来自主机设备,无需新增精密振荡器、从机不需要唯一的地址、相对于并行接口而言,使用的引脚数目大大减少等优点。但同时有着一定的缺点,例如SPI没有带内寻址、当使用多个不同模式的从机设备时,主机设备切换模式时重新初始化,会使得访问从机设备速度变慢、SPI从机设备没有硬件流控,只能通过主机自主的延迟下个时钟周期到来的时间、仅能在短距离通信等缺点。但能在避免SPI的缺点的方向来应用SPI的话,SPI的优点让它远远优于其他协议。's

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

    关注

    18

    文章

    5969

    浏览量

    135846
  • 协议
    +关注

    关注

    2

    文章

    598

    浏览量

    39178
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91312
收藏 人收藏

    评论

    相关推荐

    串口通信协议解析 串口通信应用实例

    串口通信协议解析 串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。以下是串口通信协议的介绍: 基本概念
    的头像 发表于 11-21 17:03 221次阅读

    RS232串口通信协议详解

    在计算机硬件和通信领域,RS-232串口通信协议是一个历史悠久且广泛使用的标准。它允许计算机通过串行接口与各种外部设备进行通信,如调制解调器、鼠标、打印机等。 RS-232的历史和定义 RS-232
    的头像 发表于 11-21 09:24 213次阅读

    CAN总线与其他串行通信协议比较

    CAN总线与其他串行通信协议相比,具有其独特的特点和优势。以下是对CAN总线与UART、I2C、SPI等常见串行通信协议的比较: 一、基本特性比较 协议名称 引脚 双工方式 时钟 电平
    的头像 发表于 11-12 09:56 261次阅读

    PROFINET通信协议是什么

    PROFINET通信协议是一种专为工业自动化领域设计的基于以太网的实时通信协议。以下是对PROFINET通信协议的详细解析,包括其定义、特点、体系结构、工作原理、通信方式、应用领域以及
    的头像 发表于 09-25 18:13 1051次阅读

    SPI通信协议的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信协议,即串行外围设备接口,是一种高速、全双工、同步通信总线,由摩托罗拉公司提出并广泛应用。SPI以其高效的数据传输能
    的头像 发表于 09-09 17:04 906次阅读

    简单认识UART通信协议

    UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)通信协议是一种常见的串行通信协议,广泛应用于计算机、嵌入式系统、传感器、无线通信
    的头像 发表于 07-25 18:07 1334次阅读

    can的通信协议主要由什么完成

    CAN(Controller Area Network)是一种基于消息的通信协议,主要用于汽车和工业领域。它是一种局域网技术,允许多个设备在同一网络上进行通信。CAN协议的主要特点包括高可靠性、实时
    的头像 发表于 06-16 10:29 540次阅读

    RS485通信协议的特性和应用范围

    随着工业自动化和物联网技术的飞速发展,数据通信协议的重要性日益凸显。RS485通信协议作为一种广泛应用于工业自动化领域的串行通信协议,其稳定性和可靠性得到了广泛的认可。本文将对RS485通信协
    的头像 发表于 05-23 16:27 1600次阅读

    高速串行通信协议详解

    高效、稳定、可靠的特点,成为了现代通信领域的重要组成部分。本文将对高速串行通信协议进行详细解析,以期为读者提供全面深入的了解。
    的头像 发表于 05-16 16:45 745次阅读

    SPI和I2C通信协议:应用与区别

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

    UART串口通信协议是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一种通信接口协议,用于实现串口通信。它是一种简单的、可靠的、广泛应用的串口通信协议
    的头像 发表于 03-19 17:26 1255次阅读

    串行通信协议的带宽是指什么?

    SPI和I2C等串行通信协议,两者带宽不一样,这里的带宽是指什么,传输速率还是其他什么?如果要求很高的传输速率,那么要求发送端要能很快的发送数据,要有很短的上升沿下降沿时间,高低位电平也维持很短
    发表于 02-08 18:04

    RK3568-MQTT通信协议案例

    RK3568-MQTT通信协议案例
    的头像 发表于 01-19 15:31 1743次阅读
    RK3568-MQTT<b class='flag-5'>通信协议</b>案例

    工业控制通信协议的报文帧分别是什么样的?

    工业控制常用到不同的通信协议,MODBUS,CAN,CANOPEN,PROFIBUS,PROFINET,ETNERNET,ETHERCAT,SPI,PPI,工业以太网等等,协议,就是两台设备交换数据
    发表于 01-19 14:46

    有关通信协议时一些问题?

    抗干扰就加强滤波,要求输入信号隔离就加隔离芯片或其他方式,总之这一段电路不应该太夏杂吧,远不如芯片内部的信号处理电路?最后请推荐几本有关串行通信协议方面硬件方面的书,还有一个问题,这些通信协议的设计工作应该在哪些课程或哪些书上?
    发表于 01-14 00:58