您的位置  > 互联网

基于QSPI接口的QSPI应用图1应用应用

QSPI接口是SPI的缩写。 它来自前面提到的同一个 SPI。 QSPI在SPI的基础上做了一些增强,并向下兼容SPI。 QSPI 与 SPI 最显着的区别是增加了发送和接收数据队列,这也是它得名的原因。 这样做的好处是不需要CPU参与每次数据传输,可以减少CPU资源占用。

【QSPI应用框图】

图1 QSPI应用框图

图 1 是 QSPI 应用框图。 与SPI最明显的区别是多了四个队列和片选。 QSPI 通过片选直连最多可以连接 4 个外设。 如果外接4-16解码器,可扩展至16个外设。

【QSPI接口信号】

表1 QSPI接口信号

如表1所示,QSPI在SPI原有4个信号的基础上增加了4个外围片选信号PCS0~3,其中PCS0与SSn复用。 因此,QSPI共有7根信号线。

【QSPI新特性】

QSPI在SPI的基础上进行了扩展,包含了SPI的所有功能。 它与SPI具有相同的特性,本文不再详细描述。 有兴趣的同学请点击链接(通用数字接口(2)SPI)。 QSPI相比SPI增加了以下新功能:

1. 可编程

图2 QSPI可编程

如图 2 所示,QSPI 总共提供 80 个字节的可编程性。 其中,Tx Data为32字节,Tx CMD为16字节,Rx Data为32字节。 Rx Data 存储接收到的数据,Tx Data 缓冲区存储发送的数据。 深度为16位。 数据位宽取决于单次访问位宽配置,配置范围为8~16位。 Tx CMD 存储发送命令,深度为16,位宽为8位。

图3 QSPI Tx CMD存储命令格式

每个 Tx CMD 命令的格式如图 3 所示。

CONT:片选保持启用状态。 1'b1,本次传输完成后,PCS[3:0]输出保持本次传输的状态; 1'b0,PCS[3:0]输出与其复用的GPIO输出配置值。

BITSE:传输长度控制。 1'b1,按照配置的长度传输(8~16bit可配置); 1'b0,固定传输长度8bit。

DT:每次传输完成后是否等待。 1'b1,本次传输完成后等待一段可配置的时间; 1'b0,别等了。

DSCK:PCS和SCK相对相位调整。 1'b1,从PCS有效到SCK有一定的时间延迟(时间可配置); 1'b0,固定为 1/2 SCK 延迟。

PCS[3:0]:QSPI外设片选信号状态。 当PCS0~3与从设备一对一连接时,QSPI可以通过该命令选择访问4个外设中的哪一个。 当PCS0~3连接外部4-16解码器时,QSPI最多可以管理16个从设备。

Tx CMD 和 Tx Data 共享指针,即 Tx CMD 中的命令与 Tx Data 中的数据一一对应。 通过配置Tx CMD,您可以定义每次发送数据的行为,例如发送数据长度、发送间隔等进行定制。 这种为每次数据传输定义不同的访问间隔和访问长度的方法,在访问不同类型的外设时可以大大提高访问效率。

2.队列指针可编程

如图2所示,QSPI根据ENDQP(队列尾指针)和NEWQP(队列头指针)的配置,从NEWQP指定的行开始,按照中指定的行为发送Tx DATA中对应行的数据。 Tx CMD 的相应行,直到发送/执行到 ENDQP 指定的行末尾。 在这个过程中,CPU只需要在发送前编辑好内容,然后QSPI就会自动完成,不占用CPU资源。 当ENDQP小于NEWQP时,QSPI首先从NEWQP对应的行开始执行,当执行到第15行时回绕到第0行,然后递增并在ENDQP行停止执行。

3.自动倒带()函数

使能该功能后,QSPI按照EDNQP和NEWQP确定的传输队列重复发送数据。 在外围设备上执行计划扫描时,此功能非常有用。

4、连续传输方式

当启用该模式时,QSPI 在一次数据传输中最多可以执行多次数据传输。

从以上四个增强功能可以看出,QSPI的所有新功能都是围绕着尽可能减少CPU资源占用的理念。

【后记】

写这篇文章的时候,我在网上搜索了QSPI,发现大部分提到SPI的文章都在谈论Quad SPI。 Quad SPI是SPI的四线模式,一般用于SPI Flash访问,而SPI是队列SPI。 两者不是一回事。

常用数字接口(1)UART

常用数字接口(二)SPI

常用数字接口(三)I2C

常用数字接口(4)MDIO