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

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

3天内不再提示

什么是SPI通信协议

汽车电子技术 来源:嵌入式之入坑笔记 作者:嵌入式之入坑笔记 2023-02-10 10:56 次阅读

SPI协议是由摩托罗拉公司提出的一种串行外围设备通信接口,是一种高速全双工通信总线。它被广泛地使用在ADC、LCD、存储器等设备中,包括一些需要与MCU之间有较高通讯速率要求的场合中。

1、SPI 的硬件

SPI是采用主从模式的一种通信方式,它支持一主一从、一主多从,但是不支持多主机模式。

常见的一主多从的连接方式如下:

图片

1.1、SPI接口信号线

SPI接口共有四根信号线,它们分别如下:

SCLK:时钟信号线。由主机产生并控制。

MOSI:主机数据输出,从机数据输入。(主出从入)

MISO:主机数据输入,从机数据输出。(主入从出)

NSS:从机片选使能信号线。该信号由主机进行控制。在一主对多从的模式下,每一个从机都需要一个NSS,用于主机选择和那个从机进行通信(一般为低电平有效)。当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其它的设备它是主设备。

1.2、SPI通信常见的连接方式

(1)SPI通信配置为全双工的连接方式:

图片

这种连接方式允许主从机之间互相进行通信,时钟均由主机产生。

(2)单工模式 —— 主机接收,从机发送

图片

这种模式下由主机产生时钟SCK,主机只能收到从机上报的数据,不能向从机下发数据。

(3)单工模式 —— 主机发送,从机接收

图片

这种模式下由主机产生时钟SCK,主机只能向从机下发数据,不能接收从机上报的数据。常见的应用有带SPI接口的LCD显示屏。

(4)双向通信的连接方式

图片

2、SPI的通信协议

SPI的协议定义了通信的起始信号、停止信号、数据有效性、时钟同步等。它的通讯时序如下:

图片

图:SPI通信时序图

这是一个主机的通信时序,信号线 NSS、SCK、MOSI 都是由主机控制,MISO 是由从机进行控制。其中 MOSI 和 MISO 上的数据仅在 NSS 为低时才有效,并且每个SCK 时钟周期只交换一位数据。

2.1、起始信号

SPI通信时序图中的①为通信的起始信号,由主机控制NSS从高电平到低电平,从而选择要进行通信的从机,再通过主机产生时钟信号SCK,启动一次数据的传输。

图片

2.2、停止信号

SPI通信时序图中的⑥为通信的起始信号,由主机控制NSS从低电平到高电平,从而结束一次数据的传输。

图片

2.3、数据有效性

SPI 在 SCK 时钟的同步下进行数据的准备和采样,如通信时序图的②③④⑤所示。在 NSS 为低的情况时,在SCK 的上升沿时 MISO 和 MOSI 进行数据准备,SCK 的下降沿时读取 MISO 和 MOSI 上的数据。在 NSS 为高时,MISO 和MOSI 上的数据无效。

图片

2.4、时钟的同步

SPI 的数据传输是需要 SCK 时钟信号严格同步的,每一个 SCK 周期只传输一位数据,这一个周期里要完成数据的准备和采样,且数据的输入和输出是同时进行的。

SPI中数据是MSB 先行或 LSB先行,在协议中是没有硬性规定,只需通信双方保持统一即可。

SPI 一次数据传输可以是 8 位或 16 位为单位,每次传输的单位数不受限制。

3、SPI的工作模式

SPI 一共有四种工作模式。它们的区别是:

1)总线空闲时 SCK 的电平状态

2)数据开始采样的时刻。

这四种模式是通过 “时钟极性 CPOL” 和 “时钟相位 CPHA” 的电平来实现和区分的。如下:

1)CPOL=0 时,SCK 引脚在空闲状态保持低电平;

2)CPOL=1 时,SCK 引脚在空闲状态保持高电平;

3)CPHA=0 时,SCK 时钟的第一个边沿进行采样;

4)CPHA =1 时,SCK 时钟的第二个边沿进行采样。

时钟相位CPHA =1 ,数据在SCK 时钟的第二个边沿采样的时序图如下:

图片

时钟相位CPHA =0 ,数据在SCK 时钟的第一个边沿采样的时序图如下:

图片

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

    关注

    146

    文章

    16522

    浏览量

    346760
  • 通信接口
    +关注

    关注

    3

    文章

    229

    浏览量

    30879
  • SPI协议
    +关注

    关注

    0

    文章

    18

    浏览量

    8306
收藏 人收藏

    评论

    相关推荐

    fpga与spi通信协议

    fpga通过 spi 通信协议在与外围设备实现 通信的过程中程序代码该怎么写?新手勿喷
    发表于04-09 12:44

    用FPGA 怎么编写SPI通信协议,求各位大神指点,谢谢

    用FPGA 怎么编写 SPI 通信协议,求各位大神指点,谢谢
    发表于08-18 16:35

    SPI通信协议

    EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI,是一种高速的,全双工,同步的 通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片
    发表于10-12 11:30

    SPI通信协议

    LOTO虚拟示波器采集到的数据波形并进行对比分析,方便大家的理解。 SPI 通信协议一般只需要四根线将主控芯片与从芯片连接起来,其中四根线分别为:(1)SDO– 主设备数据输出,从设备数据输入(2)SDI– 主设备数据输入,从设备数据输出(3)SCLK– 时钟信号,由主设备产
    发表于08-09 07:49

    SPI通信协议的基础知识解析

    SPI 通信协议详解写在最前: 本文讲述了 SPI 通信协议的基本内容包括如下 SPI的基础知识 SPI
    发表于12-13 08:05

    SPI是什么?SPI通信协议说明

    文章目录目录前言一、 SPI是什么?二、 SPI 通信协议1. 通信引脚说明2. 通信格式说明3.实现形式4.三线制
    发表于02-17 06:45

    SPI通信协议讲解相关资料推荐

    SPI 通信协议讲解 SPI 通信概念 SPI 通信 SPI
    发表于02-17 06:09

    STM32如何模拟SPI通信协议

    STM32模拟 SPI 通信协议 SPI的简介: SPI是串行外设接口的缩写,是一种高速的,全双工、同步的串行 通信总线;
    发表于02-17 08:03

    SPI通信协议通信过程是怎样的?

    SPI 通信协议通信过程是怎样的?
    发表于02-17 06:52

    SPI通信协议及实例打包

    本文是 SPI 通信协议及实例打包分享。
    发表于11-16 13:24 46次下载

    SPI通信协议

    Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的,全双工,同步的 通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节
    发表于12-22 19:17 5次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>

    SPI通信协议讲解

    SPI 通信协议讲解 SPI 通信概念 SPI 通信 SPI
    发表于12-22 19:19 26次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>讲解

    Arduino UNO上的SPI通信协议

    德赢Vwin官网 网站提供《Arduino UNO上的 SPI 通信协议.zip》资料免费下载
    发表于11-09 10:24 0次下载
    Arduino UNO上的<b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>

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

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

    SPI通信协议原理是什么

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