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

    文章

    6464

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SPI通信协议深度解析

    SPI(Serial Peripheral Interface)是种全双工同步串行通其核心信号引脚包括:
    的头像 发表于 04-22 09:27 439次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>深度解析

    三格电子13年老厂家,专注工业通讯#通信协议

    通信协议
    jf_68793483
    发布于 :2026年03月05日 09:32:44

    松下A6伺服通信协议介绍

    松下A6伺服通信协议是工业自动化领域中广泛使用的种高性能通信标准,其设计旨在实现伺服驱动器与控制器之间的高效数据交互。该协议基于松下自主开发的通信
    的头像 发表于 03-02 17:16 887次阅读
    松下A6伺服<b class='flag-5'>通信协议</b>介绍

    机器人通信协议EtherCAT和CAN如何选择

    当下,虽然行业中存在许多通信协议,但业内人士普遍认为,EtherCAT和CAN两大协议,是机器人行业未来最重要的两大协议
    的头像 发表于 01-27 15:54 4455次阅读

    深入解析SPI通信:高速全双工,如何连接微控制器与万千外设?启明云端乐鑫代理

    你是否曾好奇,手机触摸屏如何灵敏响应,温度传感器数据如何被读取,或是存储芯片如何快速读写?其背后,往往离不开种高效而常见的通信协议——SPI。本期启明云端起揭开
    的头像 发表于 01-13 18:03 667次阅读
    深入解析<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>:高速全双工,如何连接微控制器与万千外设?启明云端乐鑫代理

    协议“老将”,连接工业智能的桥梁——文读懂ModBus通信协议

    、什么是ModBus? ModBus是种串行通信协议,由Modicon公司(现施耐德电气)于1979年推出,最初用于可编程逻辑控制器(PLC)之间的通信。如今,它已成为工业自动化领
    发表于 12-15 10:08

    通信协议IIC与SPI最全对比分析

    )通信协议,这意味着总线中的只有支中心设备能发起通信。当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时
    发表于 12-10 06:04

    FPGA实现基于SPI协议的Flash驱动控制芯片擦除

    本篇博客具体包括SPI协议的基本原理、模式选择以及时序逻辑要求,采用FPGA(EPCE4),通过SPI通信协议,对flash(W25Q16BV)存储的固化程序进行芯片擦除操作。
    的头像 发表于 12-02 10:00 2928次阅读
    FPGA实现基于<b class='flag-5'>SPI</b><b class='flag-5'>协议</b>的Flash驱动控制芯片擦除

    SPI、I2C、I2S、UART:通信协议解释

    不能?本文次梳理清楚。 通信协议快速对照表 协议 全称 线数 通信方式 速率 应用场景 特点 SP
    的头像 发表于 11-18 10:53 764次阅读

    SPI、I2C、I2S、UART:通信协议对比表

    ,有的不能?本文次梳理清楚。通信协议快速对照表协议全称线数通信方式速率应用场景特点SPISerialPeripheralInterfa
    的头像 发表于 11-17 10:53 2201次阅读
    <b class='flag-5'>SPI</b>、I2C、I2S、UART:<b class='flag-5'>通信协议</b>对比表

    Xilinx FPGA串行通信协议介绍

    Xilinx FPGA因其高性能和低延迟,常用于串行通信接口设计。本文深入分析了Aurora、PCI Express和Serial RapidIO这三种在Xilinx系统设计中关键的串行通信协议。介绍了它们的特性、优势和应用场景,以及如何在不同需求下选择合适的
    的头像 发表于 11-14 15:02 2848次阅读
    Xilinx FPGA串行<b class='flag-5'>通信协议</b>介绍

    分布式能源并网的通信协议有哪些?

    ”“工业通用协议”“国内自主标准” 三大类别,梳理主流通信协议及其应用场景: 、国际标准协议(主流且通用性强) 这类协议由国际电工委员会(
    的头像 发表于 09-18 16:40 2039次阅读
    分布式能源并网的<b class='flag-5'>通信协议</b>有哪些?

    工业通信协议都有哪些?#三格电子

    通信协议
    三格电子科技
    发布于 :2025年08月28日 10:35:26

    哪些协议是工业通信协议?#三格电子

    通信协议
    三格电子科技
    发布于 :2025年08月27日 14:16:07

    HIPERFACE DSL编码器通信协议介绍

    在工业自动化和智能制造快速发展的今天,编码器在各类设备中扮演着关键角色,精准的位置和速度反馈是确保系统高效、稳定运行的基础。HIPERFACE DSL作为种先进的编码器通信协议,正逐渐成为众多工业
    的头像 发表于 05-23 14:16 2542次阅读
    HIPERFACE DSL编码器<b class='flag-5'>通信协议</b>介绍