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

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

3天内不再提示

超全面!SPI通信协议详解,一篇就够

亿佰特物联网应用专家 2022-09-30 10:18 次阅读

什么是SPI?

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

SPI简介?

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

数据传输

在SPI通信中,SPI主机设备以从机设备支持的频率通过SCLK线给到SPI从机设备,这点也意味着从机是无法主动向主机发送数据的,只能主机轮询向从机发或者从机设备主动通过一个IO口来告知主机数据到达。在SPI每个时钟周期内,都会进行一次全双工数据的传输。主机通过MOSI线上发送1bit时,从机也会在读取到之后通过MISO线发送1bit数据出去。这说明,即使只进行单工通信,也会保持此通信顺序。SPI传输通常涉及到两个给定了字长的移位寄存器。例如在主机、从机中的8bit的移位寄存器。它们以虚拟环形拓扑连接,数据通常先从最高有效位被移出。在时钟沿,主机和从机都移出1bit数据从传输线上给到对方。在下一个时钟边沿来到时,双方的接收器再对传输线上的该bit进行采样,并将其设置为移位寄存器的新的最低有效位。在寄存器位被移出和移入后,主机和从机交换了寄存器值。如果需要交换更多数据,则重新加载移位寄存器并重复该过程。传输可以持续任意数量的时钟周期。完成后,主机停止切换时钟信号。如下图,为主从机之间的交互时的移位寄存器示意图。2bf68afc-4031-11ed-b180-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种模式:2c0eae2a-4031-11ed-b180-dac502259ad0.png下图显示了时钟极性和相位的时序图。红线表示时钟的前沿,蓝线表示时钟的后沿。
2c209e64-4031-11ed-b180-dac502259ad0.png

SPI协议的优缺点

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

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

    关注

    18

    文章

    5706

    浏览量

    134407
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    有关通信协议些问题?

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

    SPI通信协议原理是什么

    Peripheral Interface,也就是串行外设接口,同样是一种通信协议,在很多芯片中都有集成。 相比之前学习的UART串口通信,他多了两根线,其中一个是时钟信号,另一个是设备使能信号,用来控制设备是否
    的头像 发表于 11-24 17:37 419次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>原理是什么

    SPI、UART、I2C通信协议的区别

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议
    发表于 08-17 10:21 489次阅读
    <b class='flag-5'>SPI</b>、UART、I2C<b class='flag-5'>通信协议</b>的区别

    全面SPI通信协议详解

    什么是SPISPI的英文全称为SerialPeripheralInterface,顾名思义为串行外设接口。SPI是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离
    的头像 发表于 08-14 10:06 2094次阅读
    超<b class='flag-5'>全面</b>!<b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b><b class='flag-5'>详解</b>

    IP地址、端口号、通信协议的相关知识 TCP和UDP通信协议简述

    网络编程有三个要素,分别是IP地址、端口号和通信协议。本文主要讲述的是TCP与UDP这两种通信协议,以及编程的实现。首先,我们需要了解一下IP地址、端口号、通信协议的相关知识。
    的头像 发表于 07-18 11:20 1454次阅读
    IP地址、端口号、<b class='flag-5'>通信协议</b>的相关知识 TCP和UDP<b class='flag-5'>通信协议</b>简述

    配置芯片寄存器的SPI通信协议的verilog实现

    最近正在调试一个芯片的评估板,其中配置寄存器使用的是SPI通信协议。其实很多芯片寄存器的配置都用到了SPI通信协议,我们今天就需要实现这个SPI
    的头像 发表于 06-16 09:50 1292次阅读
    配置芯片寄存器的<b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>的verilog实现

    一文搞懂SPI通信协议

    SPI 的英文全称为 Serial Peripheral Interface,顾名思义为串行外设接口。SPI 是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩
    发表于 06-06 10:02 693次阅读
    一文搞懂<b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>

    通信协议的特点

    通信协议的种类和特点目前常见的通信协议主要有:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种协议中用得最多、最为复杂的当然还是TCP/IP协议,最为简单的是Net
    发表于 05-06 14:57 989次阅读

    通信协议内容与功能

    通信协议不难理解,就是两个(或多个)设备之间进行通信,必须要遵循的一种协议通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通过
    发表于 05-06 14:43 2129次阅读

    常用的通信协议有哪些

    通信协议(communications protocol)官方给出的定义是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序
    发表于 05-06 14:36 1.6w次阅读

    通信协议的概念

    通信协议是指在通信过程中,为了使得不同设备之间进行有效的数据交换,所约定的一整套规则和标准。通信协议中定义了通信双方的接口、数据格式、传输速率、传输控制和数据处理等细节,从而确保了
    发表于 05-06 14:32 1450次阅读

    浅析ModBus通信协议的相关知识

      概 述   Modbus是种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus
    发表于 05-05 15:51