SPI、Dual SPI和QSPI有什么区别?

文章来源:FPGA入门到精通

SPI总线在电子设计中应用很广泛,是一个基础接口协议,很容易上手,大家在开发中可能也会遇到Dual SPI和QSPI,那这两个协议又是怎么来的呢?

今天就来聊一聊他们三者之间的区别。

一、SPI总线

1、SPI简介

SPI是一种高速、全双工、同步的串行通信总线,由Motorola公司推出,应用非常广泛。

它由主设备(Master)控制,通过四个主要信号线实现通信:SCLK(时钟线)、MOSI(主设备输出从设备输入线)、MISO(主设备输入从设备输出线)以及CS(片选线)。

1.png

2、SPI的工作模式

SPI定义了四种工作模式,由CPOL(时钟极性)和CPHA(时钟相位)两个参数决定。这些模式决定了数据在时钟信号下的传输顺序和采样方式。

2.png

模式0:CPOL= 0,CPHA=0。SCK空闲时为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿更新。

模式1:CPOL= 0,CPHA=1。SCK空闲时为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换

模式2:CPOL= 1,CPHA=0。SCK空闲时为高电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿更新。

模式3:CPOL= 1,CPHA=1。SCK空闲时为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿更新。

3、SPI总线的特点

(1)全双工:同时发送和接收数据。
(2)高速:支持快速数据传输。
(3)主从架构:一个主设备控制多个从设备。
(4)同步:通过时钟信号同步数据。
(5)接口简单:仅需四根信号线。
(6)灵活的数据宽度:适应不同数据大小。
(7)多种模式:适应不同的传输需求。

为了进一步提升了数据传输的速率,延伸出了Dual SPI和QSPI总线。

二、Dual SPI

在SPI基础上,全双工传输改为半双工。

这样就可以将原来的MOSI(主设备输出从设备输入)和MISO(主设备输入从设备输出)数据线变为双向数据线,分别成为SIO0和SIO1(Serial I/O 0和Serial I/O 1)。

3.png

这样可以在一个时钟周期内传输2 bit 数据,从而提高了数据传输速率。

在Dual SPI模式下,时钟极性(CPOL)和相位(CPHA)控制的工作模式依旧适用。

可以通过发送一个命令,告诉从器件,进入Dual SPI模式。

三、QSPI

QSPI(Quad Serial Peripheral Interface)是SPI接口的扩展,它支持使用四条数据线(I0、I1、I2和I3)进行通信,相较于传统的SPI(使用MOSI和MISO两条数据线),QSPI能够实现更快的数据传输速率,一个时钟周期内可传输 4 bit 数据。

4.png

Dual SPI和QSPI都是根据flash的工作特性,将全双工改为半双工,可以成倍提高通信的效率。

可以通过发送一个命令,告诉从器件,进入QSPI模式。