一、目的

在使用W25Q128JV DTR Flash颗粒时会发现这个芯片可以通过SPI、Dual SPI、Quad SPI、QPI进行擦除编程读写,第一次接触到这些的小伙伴可能就会有点头晕了,这些SPI都是什么格式呢?

下面就让我们来一一了解一下他们之间的区别,以及如何使用它们。下面的链接是W25Q128JV DTR的芯片手册,请特别注意其与W25Q128JV的区别。

W25Q128JV_DTR - Serial NOR Flash - Code Storage Flash Memory - Winbondhttps://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale=en&partNo=W25Q128JV_DTR

本篇不仅讲解SPI/Dual SPI/Quad SPI/QPI之间的区别,还以图例的方式帮助大家理解DIO/DOUT/QIO/QOUT的一些含义。

二、术语

无论是哪种SPI,都是主从式接口,同一条总线上只能有一个主机,可以有一个或者多个从机;传输都是由主机发起的。

何为总线空闲?

一般情况下,当主机的CS/SS引脚输出为高电平时,代表总线空闲;

SPI(serial peripheral interface)串行外设接口

也叫标准SPI接口,有四根线,分别为CS/SS(片选)、MISO(主机输入从机输出)、MOSI(主机输出从机输入)、CLK(串行时钟);并且四根线都是单向的;主机通过MOSI发送数据给设备;设备通过MISO发送数据给主机。

标准SPI支持全双工通信、半双工通信以及单工通信。

全工通信是指发送和接收同时进行;半双工是指某个时刻只能发送或者接收;单工指只能一个方向通信,要么主机只能发送,要么只能接收。

一般情况下硬件接线拓扑如下

上图是一台主机一台从机的硬件接线情况

上图是一台主机三台从机的接线情况,通过IO1/2/3分别选中对应从设备,某个时刻只能选中的从设备可以通信。

时钟极性和时钟相位

根据CLK与MISO、MOSI之间的位置关系,标准SPI有4种模式

CPOL(Clock Polarity)时钟极性

其直接影响SPI总线空闲时的时钟信号是高电平还是低电平;CPOL=1 表示空闲时是高电平,CPOL=0 表示空闲时是低电平;

CPHA(Clock Phase)时钟相位

其直接决定SPI总线从哪个跳变沿开始采样数据;

CPHA=0 表示从第一个跳变沿开始采样,CPHA=1 表示从第二个跳变沿开始采样;

mode CPOL CPHA
mode 0 0 0
mode 1 0 1
mode 2 1 0
mode 3 1 1

Dual SPI(Dual serial peripheral interface)双线串行外设接口

我们发现标准SPI通信时发送和接收时主机和从机都只能使用自己的那根数据线进行数据传输,Dual SPI无论是接收还是发送都是使用两根数据线进行的,所以单向数据传输速度上是标准SPI的双倍。

另外需要注意Dual SPI一般情况下用于半双工通信。

Quad SPI (Quad serial peripheral interface)四线SPI,即数据线最多可以使用4根。

另外需要注意Qual SPI一般情况下用于半双工通信。

很多MCU都有Quad SPI外设,关于Quad SPI外设的使用,请参考博客

手把手系列--STM32 QSPI操作指南_coder.mark的博客-CSDN博客https://blog.csdn.net/tianizimark/article/details/121718162                Quad SPI外设可以使用任意一种SPI模式,具体要看从设备的要求。

QPI(Quad Peripheral Interface)四线外设接口

这个接口要求通信的每个阶段都需要使用4线进行通信。

三、实战

基于上面的介绍,相信大家对这几个名词已经有了一定的了解

OK,下面我们根据W25Q128JV DTR的芯片手册来具体说说这四种SPI的使用区别

注意不是所有的从设备都支持QPI数据格式的,但是一般情况下MCU端的Quad SPI硬件外设支持每个阶段的自定义配置。

由于Flash操作的特殊性,一般第一个字节都是操作码,并且一般都是半双工通信或者单工通信。

下面图例中DI是指从设备的输入段,DO是指从设备的输出端

第一种,标准SPI

只发送命令字的情况

发送多个字节的情况

发送一个字节然后进行接收的情况

第二种 ,Dual SPI

Dual SPI并不要求每一个阶段都需要是双线传输,在Flash操作中一般第一个字节都是单线传输的

上图中除了第一个字节是单线传输,后面的地址阶段和数据阶段都是通过双线传输,这种传输方式也叫做DIO 。

上图中只在数据阶段是双线传输,地址阶段是标准SPI传输,这种形式的传输方式叫做DOUT。

第三种,Quad SPI

上图中只在数据阶段是四线传输,指令和地址阶段是标准SPI传输,这种形式的传输也叫做QOUT。

上图中只在指令标准SPI传输,其他阶段都是四线传输,这种形式的传输也叫做QIO。

第四种 QPI

上图中所有阶段都是四线传输,这种形式的传输也叫做QPI。

至此,我们基本上已经完成了本片博文的目的,希望对你有所帮助,记得点赞加收藏哈。

另外,关于华邦FLASH的操作细节,大家可以关注我的对应博文

手把手系列--华邦W25Q128JV Flash操作指南_coder.mark的博客-CSDN博客_w25q128jvhttps://blog.csdn.net/tianizimark/article/details/121717803

理解SPI/Dual SPI/Quad SPI/QPI之间的区别相关推荐

  1. 富士通代理Quad SPI铁电FRAM存储器MB85RQ4M

    MB85RQ4ML是一种FRAM(铁电随机存取存储器)芯片,采用524,288字×8位的配置,使用铁电工艺和硅栅CMOS工艺技术来形成非易失性存储单元.采用四路串行外设接口(QSPI),可使用四个双向 ...

  2. 【ZYNQ实战】利用AXI Quad SPI快速打通Linux至PL端SPI从设备

    关注.星标嵌入式客栈,精彩及时送达 [导读] 前面写过篇介绍ZYNQ基本情况的文章,今天来肝一篇实战文章介绍AXI quad SPI 使用方法,如果你正使用ZYNQ的这个IP,希望对你有所帮助. 初识 ...

  3. 静态类和单例模式之间的区别?

    静态类和单例模式之间存在什么真正(即实用)的区别? 两者都可以不实例化地调用,都只提供一个"实例",并且它们都不是线程安全的. 还有其他区别吗? #1楼 延迟加载 支持接口,因此可 ...

  4. 闪存颗粒-2D和3D闪存之间的区别和联系

    转载:http://ssd.zol.com.cn/625/6254456.html 首先是2D NAND,我们知道在数学和物理领域,2D/3D都是指的方向,都是指的坐标轴,"2D" ...

  5. 大数据分析和数据挖掘区别_大数据分析和数据挖掘之间的区别,大数据的未来范围...

    大数据分析和数据挖掘区别 There arises a confusion among most of the people between Big Data and Data mining. In ...

  6. 标准SPI、DUAL SPI、Quad SPI

    1. 标准SPI 标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, miso 2. Dual SPI 它只是针对SPI Flash而言,不是针对所有S ...

  7. quad spi 和qpi的区别

    从用法上看,Quad SPI与QPI的区别在于指令输入的方式,Quad SPI模式指令是通过SI(IO0) pin输入的,地址,数据是通过SI(IO0)/SO(IO1)/IO2/IO3传输的,QPI模 ...

  8. AXI Quad SPI读写Flash做远程升级

    未经允许,本文禁止转载 目录 简介 AXI Quad SPI IP设置 寄存器说明 AXI Quad SPI支持的通用命令 读flash id 读flash 数据 擦除扇区 写flash 数据 注意事 ...

  9. 深入理解UART、IIC、SPI与RS232以及RS485的区别

    个人理解: uart.IIC.SPI都是一种具有协议特征的收发器.接口.总线,它规定数据按照什么的时序传输,rs232,.rs485是传输时候的电平标准,规定了按照上述协议传输的高电平与低电平的电压都 ...

  10. AXI quad SPI没有输出

    AXI quad SPI没有输出(已解决) 在使用ZYNQ的AXI quad SPI时遇到以下问题: 使用loopback可以成功,但是使用示波器测量引脚却没有输出. 问题描述: 最近在用ZYNQ的A ...

最新文章

  1. java 时间戳验证_Java中带有时间戳的数字签名
  2. 为什么Servlet程序的init(ServletConfig config)中需要调用父类的init方法
  3. 模拟计算机 电磁,校园机房电磁模拟环境及计算机模拟.ppt
  4. 20个方法让你摆脱坏习惯
  5. 使用MySQL UDFs来调用gearman分布式任务分发系统
  6. Python 内置函数介绍
  7. ubuntu下OpenPose的安装、使用、初步介绍
  8. boa与cgic库写cgi简介
  9. 跟我一起学C++课程笔记(第一天)
  10. 714 买卖股票的最佳时机含手续费(状态机dp)
  11. 机器学习笔记 - MediaPipe了解 + 结合OpenCV进行人体姿势估计
  12. 微信小程序iphone7设备下跳转h5页面失败,h5页面显示白屏,加载报错,其他页面正常显示
  13. 如何修改图片大小200kb?怎样让图片不超过200k?
  14. python中time库的时间单位是秒
  15. 苹果手机电越充越少怎么回事_羞羞电量插件app免费下载-羞羞手机电量插件v1.0 安卓版...
  16. 网络:access和trunk端口和hybird端口的区别
  17. 7.2 - 在线教育平台系统
  18. Matlab中解决pcolor和imagesc格网显示问题
  19. 零基础如何备考系统集成项目管理工程师?
  20. 【计量经济学】时间序列分析笔记 Models with Trend

热门文章

  1. Python3获取拉勾网招聘信息的方法实例
  2. 一、高并发秒杀API简介与业务分析
  3. html为知笔记模板,为知笔记如何建立模板教程
  4. android 标签开源控件,Android开源控件ViewPager Indicator的使用方法
  5. 【渝粤题库】陕西师范大学200461英语阅读(一) 作业(高起专、高起本)
  6. 学软件测试有前途吗?发展前景怎么样?
  7. django @csrf_exempt
  8. 05_dither(抖动)
  9. 简报 | 阿里与腾讯在区块链领域必有一战
  10. 易语言html加密解密,易语言实现-JScript.Encode加密解密(一)