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

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

3天内不再提示

通信协议之SPI总线硬件篇

hellosz 来源:hellosz 作者:hellosz 2024-11-25 17:56 次阅读

一、概述

SPI:Serial Peripheral Interface,串行外围设备接口

是由摩托罗拉在20世纪80年代中期开发的同步串行总线接口规范(带有时钟信号,通过时钟极性和时钟相位来控制采样,

即同步传输)。

1、支持半双工、全双工通信模式。

2、没有流控制和应答机制来确认是否接收到数据(UART有校验或流控制)。

3、没有一个固定的传输速率规定,已有器件SPI输出速率达到50Mbps以上(I2C有明确规定速率)。

4、只能板内的短距离传输(RS232RS485输出距离远)。

5、没有限制传输bit数量,常用的是8bit或9bit。

6、不需要硬件地址(I2C要地址),采用片选。

7、主从模式,一托多。

二、3线和4线模式

3线SPI和4线SPI各个模式下信号定义:

3线9bit I型 接口信号:SCL、CS、SDA

3线9bit II型接口信号:SCL、CS、SDO、SDI

4线8bit I型接口信号:SCL、CS、DCX、SDA

4线8bit II型接口信号:SCL、CS、DCX、SDO、SDI

3线9bit 2 data Lane 接口信号:SCL、CS、D0、D1

对于3线或4线来区分,并不是信号线的数量,也不是网上说的半双工和全双工,或者数据线数量差异。

个人认为:

3线说的是时钟、片选、数据信号(不管是一根数据线,还是两根数据线),共三种信号。

4线说的是时钟、片选、数据信号、数据或命令控制线(确定发送的是数据还是命令),共4中信号。

三、SPI 四种工作模式

通过CPOL时钟极性和CPHA时钟相位的搭配来得到四种工作模式:

wKgZomXtxOSAJVpAAABYsv1YBhk227.png

CPOL时钟极性定义的是 SCLK时钟线空闲状态时的电平

CPOL=0,即SCLK=0,表示SCLK时钟信号线在空闲状态时的电平为低电平,因此有效状态为高电平。

CPOL=1,即SCLK=1,表示SCLK时钟信号线在空闲状态时的电平为高电平,因此有效状态为低电平。

CPHA时钟相位定义的是数据位相对于时钟线的时序(即相位)

CPHA=0,即表示输出(out)端在上一个时钟周期的后沿改变数据,而输入(in)端在时钟周期的前沿(或不久之后)捕

获数据。输出端保持数据有效直到当前时钟周期的尾部边缘。对于第一个时钟周期来说,第一位的数据必须在时钟前沿之

前出现在MOSI线上。也就是一个CPHA=0的周期包括半个时钟空闲和半个时钟置位的周期。

CPHA=1,即表示输出(out)端在当前时钟周期的前沿改变数据,而输入(in)端在时钟周期的后沿(或不久之后)捕获

数据。输出端保持数据有效直到下一个时钟周期的前沿。对于最后一个时钟周期来说,从机设备在片选信号消失之前保持

MISO信号线有效。也就是一个CHPA=1的周期包括半个时钟置位和半个时钟空闲的周期。

四、SPI升级版

SPI flash接口有standard SPI、Dual SPI、Quad SPI、Octal SPI,也就是所谓的1248线模式。

wKgaomXtxRqAN-NSAAB2yzCWnrE361.png

五、SDR和DDR模式

SPI通信支持SDR和DDR模式。

SDR:Single Data Rate通过 SCLK 的触发对信号进行采样时,一个时钟周期只执行一次,称为单倍数据速率模式。

DDR:Double Data Rate通过 SCLK 的触发对信号进行采样时,每个上升沿和下降沿将采样一次。

也就是说一个时钟周期内发送2位或者接收2位数据,称为双倍数据速率模式

六、SPI Flash接口

Dual SPI有两根数据IO;Quad SPI有4根数据IO。

SPI flash spec:

wKgZomXtxSyAJAlOAADXh9dy0kw866.png

七、SPI TFT液晶屏接口

TFT液晶屏ST7789 spec定义,支持串行和并行,支持SPI多种通信模式。

wKgZomXtxTqAEyqCAAGWM8jADHU220.png

八、信号定义及连线

标准SPI接口信号定义:

wKgaomXtxUiAE7QyAAB9ddLnuZQ588.png

标准的SPI规范连线:

wKgZomXtxVWAZwjrAAAqtjMN35Y772.png

SDOSDI网络命名的连线(SDO和SDI交叉):

wKgaomXtxWKAPFYoAAApwhTqMl8503.png

SPI总线,一对多连线:

wKgaomXtxW-AV8pDAACAtdpW32k449.png

九、小结

1、有的参考设计原理图中,用SDI表示MOSI,用SDO表示MISO,连线要注意输出和输入的定义。

2、芯片引脚的信号输入或输出,是针对自身来标明的,因此在主从设备芯片的输出或输入要连接正确。

3、电路设计上引脚信号不需要上拉。如果是IO模拟的话,需注意是不是开漏,如是要加上拉。另,要确认器件spec的SPI

信息,可能有特殊的要加上下拉。

4、一对多的连线,片选信号CS单独控制,多个从设备需要多个CS信号。

5、从设备未被选中时,信号线变成高阻态(断开)。

6、Layout上没有特殊要求,当然可以SCLK信号包下地。

审核编辑 黄宇

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

    关注

    28

    文章

    858

    浏览量

    40262
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1701

    浏览量

    91327
  • 总线
    +关注

    关注

    10

    文章

    2867

    浏览量

    87988
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个
    的头像 发表于 11-12 10:09 327次阅读

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

    CAN总线与其他串行通信协议相比,具有其独特的特点和优势。以下是对CAN总线与UART、I2C、SPI等常见串行通信协议的比较: 一、基本特
    的头像 发表于 11-12 09:56 277次阅读

    CAN总线通信协议详解

    一、CAN总线概述 CAN总线是一种多主控制的串行通信协议,它允许多个设备共享同一通信线路,而无需中央控制单元。这种设计使得CAN总线非常适
    的头像 发表于 11-12 09:46 262次阅读

    PROFINET通信协议是什么

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

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

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

    dht11采用什么通信协议

    DHT11是一款广泛使用的温湿度传感器,它通过简单的数字接口与微控制器或其他数字设备进行通信。DHT11使用单总线通信协议,这意味着所有的数据传输都通过单一的数据线完成。这种通信方式简
    的头像 发表于 09-04 09:06 1448次阅读

    简单认识UART通信协议

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

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,I2C协议因其高效
    的头像 发表于 07-25 18:06 1302次阅读

    高速串行通信协议都有哪些

    (通用串行总线) USB是一种广泛使用的串行通信协议,用于连接计算机和各种外部设备,如键盘、鼠标、打印机等。USB协议有多个版本,包括USB 1.1、USB 2.0、USB 3.0、USB 3.1和USB 4.0。每个版本都有
    的头像 发表于 05-31 16:11 994次阅读

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

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

    UART串口通信协议是什么?

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

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

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

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

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

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

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

    硬件spi和软件spi的区别

    硬件SPI(串行外设接口)和软件SPI是两种不同的SPI传输方式。SPI是一种同步串行数据通信协议
    的头像 发表于 12-26 16:55 5648次阅读