一、目的

        在使用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 表示从第二个跳变沿开始采样;

modeCPOLCPHA
mode 000
mode 101
mode 210
mode 311

        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 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐