SPI学习(三):SPI协议波形

article/2025/8/26 20:47:46

写在前面:上一小节介绍了SPI的基本工作原理与极性相位等知识,这一小结介绍波形

由于我实际用到的IP是ARM PrimeCell SSP(PL022),所以会以这个IP为主,也会对比《SPI Block Guide V04.01》

一.PL022支持的三种帧格式介绍

一共有三种帧格式可选:TI/SPI/NSM,一般用SPI很多(这里不关注NSM),简单介绍一下TI模式:

SSI(Synchronous Serial Interface)由TI公司定义的接口协议标准

SPI(Serial Peripheral Interface)是由Motorola公司定义的接口协议标准,两者的用法有类似的地方

SPI串行帧同步SSIFss为低电平有效,在整个帧传输期间生效(拉低)。

SSI串行帧同步SSIFss在发送每个帧之前产生宽度为个时钟周期的高脉冲。SSI 模块和片外从设备都在SSIClk 的上升沿驱动输出数据,在SSIClk 的下降沿锁存另一端的输入数据

参考博客:

https://blog.csdn.net/wowo004/article/details/103469128

https://e2echina.ti.com/question_answer/analog/interface_and_clocks/f/59/p/46369/101699

https://www.cnblogs.com/adylee/p/5399742.html

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

根据以上这段话的描述,有以下几点总结出来:

  • 在三种帧格式模式下,时钟的波形并不是一直存在,时钟波形只在数据传输的时候出现
  • SPI模式和NSM模式下的片选信号都是拉低有效,而TI模式下片选信号会在数据传输之前拉高一个时钟周期
  • SPI模式和TI模式都是全双工(full-duplex),而NSM模式是半双工(half-duplex)

二.TI模式帧格式

单帧模式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dvd28wMDQ=,size_16,color_FFFFFF,t_70

连续帧模式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

根据这段话的描述,有以下几点总结出来:

  • TI模式下时钟和片选在idle时是默认为低
  • 在数据传输之前,片选会被拉高一个时钟周期,在拉高期间,完成将传输数据从FIFO转移到移位寄存器的工作
  • 数据总是在时钟的上升沿发送,数据总是在时钟的下降沿采样和接收(我理解latch/clock就是采样的意思)
  • 需要注意的是在连续帧模式下,在前一帧的LSB一开始片选就会拉高,前一帧的LSB结束紧接着就是后一帧MSB的开始

三.Motorola SPI模式帧格式

由于极性CPOL和相位CPHA的两两组合,导致SPI帧格式有四种,这里只详细介绍CPOL=0 CPHA=0这一种

首先免不了还是要提一下极性和相位,在PL022中用SPO表示极性,用SPH表示相位

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

MODE0单帧模式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

根据上面这段话的描述,TX与RX数据的生成与以前的理解有些不同,总结如下:

  • MODE0下,数据开始传输的标志是片选信号SS被由高拉低
  • SS一旦拉低,slave的数据立刻被传输到MISO引脚
  • 半个时钟周期以后,TX数据被传输到MOSI引脚
  • 再过半个时钟周期,时钟迎来上升沿,数据在上升沿被采样,下降沿被发送(接收)
  • 单帧传输模式下每传完一帧,SS会被重新拉高,拉高的时机在前一帧LSB被采样的一个时钟周期以后

这里参考一个博客:https://www.cnblogs.com/adylee/p/5399742.html

博客作者正好做了这个实验,引用一番:

我们来关注SCK的第一个时钟周期,在时钟的前沿采样数据(上升沿,第一个时钟沿),
在时钟的后沿输出数据(下降沿,第二个时钟沿)。首先来看主器件,主器件的输出口(MOSI)输出的数据bit1,
在时钟的前沿被从器件采样,那主器件是在何时刻输出bit1的呢?bit1的输出时刻实际上在SCK信号有效以前,
比 SCK的上升沿还要早半个时钟周期。bit1的输出时刻与SSEL信号没有关系。再来看从器件,
主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的,那从器件又是在何时刻输出bit1的呢。
从器件是在SSEL信号有效后,立即输出bit1,尽管此时SCK信号还没有起效。关于上面的主器件
和从器件输出bit1位的时刻,可以从图3、4中得到验证

图3:

764ad057d2ac5eafec9139d49584c6d0.png

注意图3中,CS信号有效后(低电平有效,注意CS下降沿后发生的情况),故意用延时程序
延时了一段时间,之后再向数据寄存器写入了要发送的数据,来观察主器件输出bit1的情况(MOSI)。
可以看出,bit1(值为1)是在SCK信号有效之前的半个时钟周期的时刻开始输出的(与CS信号无关),
到了SCK的第一个时钟周期的上升沿正好被从器件采样

图4:

ba87c39106804e3abfe4b1616aaaef37.png

图4中,注意看CS和MISO信号。我们可以看出,CS信号有效后,从器件立刻输出了bit1(值为1)

MODE0连续帧模式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

20201128181239558.png

PL022有一个特征,就是当SPH为0时(SPO=0,SPH=0或者SPO=1,SPH=0),在连续帧传输时,每帧的间隔SS信号都会被拉高半个周期

而在SPH为1时(SPO=0,SPH=1或者SPO=1,SPH=1),SS在传输过程中都是低,有的客户不明白这个特征,误以为是波形有问题,会提出疑问

四.NSM帧格式(National Semiconductor Microwire)

单帧模式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

根据上面这段话,有总结如下:

  • NSM不同于TI模式与SPI模式,它是半双工的(half-duplex)
  • NSM的工作模式是:前半程主机发送控制字到从机,后半程主机接收从机的响应
  • 主机发送与主机接收期间有一个时钟周期的间隔,从机利用此间隔解析主机的控制字
  • 数据在下降沿被驱动到相应的管脚(TX/RX),在上升沿采样和接收
  • 单帧模式下,在接收LSB被采样后的一个周期,SS被拉高,接收的数据从移位寄存器传输到接收FIFO

连续帧模式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

20201130234234107.png

根据上面这段话,总结如下:

  • NSM的单帧和连续帧并没有特别大的区别
  • 连续帧模式下SS一直为低
  • 连续帧模式下下一帧的控制字与上一帧的接收帧之间没有间隔

最后再解释一下手册中的术语是什么意思

SSPCLKOUT:

20201128182403969.png

SSPFSSOUT:

20201128182208919.png

SSPTXD:

20201128182458250.png

SSPRXD:

20201128182514125.png

 


http://chatgpt.dhexx.cn/article/SGRHISZf.shtml

相关文章

SPI协议介绍

文章目录 1- SPI协议介绍2- SPI总线传输模式3- SPI总线数据交换3- SPI与I2C对比 1- SPI协议介绍 SPI(Serial Peripheral Interface)是一种高速全双工同步串行通信协议,它由一个主设备(Master)和一个或多个从设备(Slave)组成,其中…

【数字IC】深入浅出理解SPI协议

深入浅出理解SPI协议 一、什么是SPI协议二、什么是全双工通信协议三、SPI的信号线四、SPI的连接方式4.1 多NSS形式4.2 菊花链形式 五、SPI可配置变量5.1 时钟极性(CPOL)5.2 时钟相位(CPHA)5.3 CPOL和CPHA组合出四种情况5.4数据大小…

通信协议(二)——SPI协议

1、基础知识 1.1 概念 SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输&am…

SPI协议代码

软件模拟SPI程序代码 文章目录 SPI协议简介●SPI接口介绍●SPI数据传输方向●SPI传输模式 通过两个单片机模拟SPI来加深理解※硬件连接方式✯SPI模式✯程序思路✯主机C代码波形✯从机C代码波形 概述:    通过两个MCU(STM32F103)来模拟SPI…

SPI协议讲解与总结

1.SPI通讯协议 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线 1.1 SPI引脚与工作过程 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一…

【STM32】SPI协议通信详解

目录 一.SPI协议简介二.SPI物理层三.SPI协议层 1.通讯的起始和停止信号2.数据有效性3.时钟信号的相位和极性(重点) 四.SPI 特性及架构(重点) 1.通信引脚2.时钟控制逻辑3.数据控制逻辑(非常重要)4.全双工发…

FPGA实现的SPI协议(一)----SPI驱动

写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 1、什么是SPI协议 SPI(Serial Peripheral Interface,串行外围设备…

SPI总线协议概述

一.概述 SPI(serial peripheral interface)是一种同步串行通信协议,由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。SPI是一种高速全双工同步通信总线,标准的SPI仅仅使用4个引脚&#xff…

SPI协议详解(总结)

关于SPI协议 1)SPI是串行外设接口(Serial Peripheral Interface)的缩写; 2)是一种高速的,全双工,同步的通信总线; 3)在芯片的管脚上只占用四根线,节约了芯片的…

SPI通讯协议介绍

来到SPI通讯协议了。废话两句,“SPI很重要”,这是我在学校时候听那些单片机开发工程师说的。出来实习,到后来工作,确实如此,SPI的使用很常见,那么自然重要咯。 SPI(Serial peripheral interface)即串行外围…

spi协议及工作原理分析

说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html 一、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro…

SPI总线协议介绍

SPI总线协议介绍 一、技术性能 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI接…

SPI 协议的解析

目录 1、SPI 的硬件层 1.1、SPI接口的信号线 1.2、SPI通信常见的连接方式 2、SPI的通信协议 2.1、起始信号 2.2、停止信号 2.3、数据有效性 2.4、时钟的同步 3、SPI的四种工作模式 SPI协议是由摩托罗拉公司提出的一种串行外围设备通信接口,是一种高速全双工…

SPI协议详解

1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器&a…

一文看懂SPI协议

文章目录 SPI协议简介4线还是3线?4种工作模式多种传输速率SPI协议的基本时序SPI协议的升级版FPGA实现SPI协议SPI和IIC的对比总结 SPI协议简介 板卡内不同芯片间通讯最常用的三种串行协议:UART、I2C、SPI,之前写过串口协议及其FPGA实现&#…

SPI协议简单介绍

导言 SPI是串行扩展总线。 串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时系统的更改和扩充极为容易。 常用的串行扩展总线有:I2C(Inter IC Bus)总线、单总线(1-WIRE BUS)、SPI(Serial Peripher…

SPI通信协议详解

SPI协议基本概念 SPI接口 (1)SPI(Serial Peripheral interface)是一种同步串行传输规范,也是单片机外设芯片串行外设扩展接口,该接口是一种高速,全双工,同步的通信总线,…

SPI 协议详解

SPI 协议详解 1、SPI 简介2、SPI四线3、SPI四种工作模式4、SPI时序图 1、SPI 简介 SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线,…

SPI协议简介—学习笔记

SPI协议简介—学习笔记 1、SPI百度百科 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚&…

一文搞懂SPI通信协议

目录 1、简介 2、通信原理 3、通信特性 3.1、设备选择 3.2、设备时钟 3.2.1、时钟速率 3.2.2、时钟极性 3.2.3、时钟相位 3.3、四种模式 4、多从机模式 5、SPI优缺点 1、简介 SPI是串行外设接口(Serial Peripheral Interface)的缩写&#xf…