在常用的通信协议中uart、iic和spi是经常在外设中被应用,然而在一些特殊的场景中,需要大于芯片自带内存时,工程师需要提出一个适当的解决方案来加快闪存速度,他们提出的解决方案是修改 SPI 协议以使用另外 2 条数据线并使所有 4 条数据线都是双向的,他们将其命名为 Quad-SPI,qspi是spi接口的扩展,比spi应用更加广泛。 1. qpis与spi的异同点 spi是一种串行接口,由sclk(时钟信号)、mosi(主出从入信号),miso(主入从出信号)和ss(片选信号)接口组成,适用于低速设备,传输的速度一般在几M左右(当然也有高速的spi通信,这里只介绍传统的spi通信)。 Quad-SPI,也称为 QSPI,是一种外设,可以在大多数现代微控制器中找到。它专为与支持此接口的闪存芯片通信而设计。它在涉及大量内存密集型数据(如多媒体)的应用中特别有用,而片上存储器是不够的。它还可以用于在外部存储代码,并且它能够通过一些特殊的机制使外部存储器的行为速度与内部存储器一样快。 它比传统 SPI 更快,因为四通道 SPI 使用 4 条数据线(I0、I1、I2 和 I3),而传统 SPI 上只有 2 条数据线(MOSI 和 MISO)。 2.通信协议介绍 qspi通过命令与存储器进行通信,每次指令、地址、交替字节、空指令和数据五个阶段,这五个阶段任一阶段均可跳过,但至少涵盖指令、地址、交替字节和数据这四个阶段之一,片选信号在每次传输嵌会被拉低,当传输完成后会被拉高。 在这五个阶段中: 指令阶段:将一条8位指令发送到外部SPI设备,该指令值可以在 QUADSPI_CCR[7:0] 寄存器的 INSTRUCTION 字段中进行配置, 指定待执行操作的类型。 地址阶段:将1-4字节发送到Flash,表明要操作的地址。 待发送的地址字节数通过QUADSPI_CCR[13:12]寄存器的ADSIZE[1:0]字段中进行配置。 在间接模式和自动轮询模式下,待发送的地址字节通过在QUADSPI_AR寄存器的ADDRESS[31:0]进行配置。 而在内存映射模式下,则通过 AXI直接给出地址。 交替字节阶段:将1-4字节发送到Flash,一般用于控制操作模式。 待发送的交替字节数在 QUADSPI_CCR[17:16] 寄存器的 ABSIZE[1:0] 字段中进行配置。 待发送的字节在QUADSPI_ABR 寄存器中指定。 空指令阶段:在空指令周期阶段,给定的1-31个周期内不发送或接收任何数据,目的是当采用更高的时钟频率时,给Flash留出准备数据阶段的时间。 数据阶段:数据阶段可一次发送/接收1位(在单线SPI模式中通过 SO)、2位(在双线SPI模式中通过 IO0/IO1)或4位(在四线SPI模式中通过 IO0/IO1/IO2/IO3)。 这可通过QUADSPI_CCR[15:14] 寄存器中的 ABMODE[1:0] 字段进行配置。若DMODE = 00,则跳过数据阶段, 命令序列在拉高 nCS 时立即完成。这一配置仅可用于仅间接写入模式。 |
|小黑屋|
飞凌嵌入式
( 冀ICP备12004394号-1 )
GMT+8, 2025-7-10 20:11
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.