QSPI即Quad SPI(四线SPI),几种SPI的区别详见参考

文章目录

  • QSPI 介绍
    • 工作模式
    • QSPI特点
    • F7的QSPI闪存映射模式接口框图
    • QSPI命令序列(与FLASH的通信)
      • 指令阶段
      • 地址阶段
      • 交替字节(复用字节)阶段
      • 空指令周期阶在空指令周期阶段,在给定的
      • 数据阶段
  • 间接模式
  • QSPI的使用
    • QSPI初始化步骤
      • 1.开启QSPI接口和相关时钟,设置IO的复用功能
      • 2.设置QSPI相关参数

QSPI 介绍

工作模式

  • QSPI是一种专用的通信接口,可连接单、双或四(条数据线)SPI FLASH存储器。STM32F7具有QSPI接口,并且支持三种工作模式:

    1. 间接模式
       使用QSPI执行全部操作
    2. 状态轮询模式
       周期性读取外部FLASH状态寄存器,当标志位置1时会产生中断
    3. 内存映射模式
       外部FLASH映射到微控制器地址空间,从而系统将其视作内部存储器

QSPI特点

  • 支持三种工作模式
  • 支持双闪存模式,可以并行方位两个FLASH,可同时发送/接收8位数据
  • 支持SDR(单倍率)和DDR(双倍率)模式————(这部分不理解后面用到再解释)
  • 间接模式和内存映射模式,可编程操作码,可编程帧格式
  • 集成FIFO(先进先出的 双口缓存器),用于发送和接收
  • 允许8/16/32位的数据访问
  • 间接模式的操作可使用DMA通道
  • 在达到FIFO阈值、超时、操作完成及访问发生错误时产生中断

F7的QSPI闪存映射模式接口框图

  • 如图为STM32F7的QSPI闪存模式的系统框图,QSPI通过6根线与SPI芯片连接,包括:4根数据线(IO0~3)、一根时钟线(CLK)和1根片选线(nCS)。普通的SPI只有一根数据项(MOSI),而QSPI有4根数据项,速率至少提升了4倍,大大提升了通信效率。

QSPI命令序列(与FLASH的通信)

  • QSPI通过命令序列FLASH通信,每条命令包括:指令、地址、交替字节、空指令、数据,这五个阶段任一阶段均可跳过,但至少要包含指令、地址、交替字节或数据阶段之一

  • nCS在每条指令开始前下降,每条指令完成后上升。有图可见工5个阶段,其中交替字(复用)节阶段一般用不到,可以省略(通过设置 ABMODE[1:0]=00 )。如下逐一分析

指令阶段

  • 此阶段通过 QUADSPI _CCR[7: 寄存器的 INSTRUCTION 字段指定一个 8 位指令发送到FLASH 。注意,指令阶段,一般是通过 IO0 单线发送,但是也可以配置为双线 四线发送指令,可以通过 QUADSPI _CCR[9: 寄存器的 IMODE[1:0] 这两个位进行配置,如 IMODE[1:0]=00则表示无需发送指令。

地址阶段

  • 此阶段可以发送 1~4 字节地址给 FLASH 芯片,指示要操作的地址。地址字节长度由QUADSPI _CCR[13: 寄存器的 ADSIZE[1:0] 字段指定, 0~3 表示 1~4 字节地址长度。在间接模式和轮询模式下,待发送的地址由 QUADSPI _AR 寄存器指定。地址阶段同样可以以单线 双线四线模式发送,通过 QUADSPI _CCR[11: 寄存器的 ADMODE[1:0] 这两个位进行配置,如ADMODE [1:0]=00 ,则表示无需发送地址。

交替字节(复用字节)阶段

  • 此阶段可以发送1~4 字节数据给 FLASH 芯片,一般用于控制操作模式。待发送的交替字节数由 QUADSPI_CCR[17:16] 寄存器的 ABSIZE[1:0] 位配置。待发送的数据由 QUADSPI_ABR寄存器中指定。交替字节同样可以以单线 双线 四线模式发送,通过 QUADSPI_CCR[15:14] 寄存器的 ABMODE[1:0] 这两个位配置, AB MODE[1:0]=00 ,则跳过交替字节阶段。

空指令周期阶在空指令周期阶段,在给定的

  • 1~31 个周期内不发送或接收任何数据,目的是当采用更高的时钟频率时,给 FLASH 芯片留出准备数据阶段的时间。这一阶段中给定的周期数由QUADSPI_CCR[22:18] 寄存器的 DCYC[4:0] 位配置。 若 DCYC 为零,则跳过空指令周期阶段。

数据阶段

  • 此阶段可以从FLASH 读取 写入任意字节数量的数据。在间接模式和自动轮询模式下,待发送 接收的字节数由 QUADSPI_DLR 寄存器指定。 在间接写入模式下,发送到 FLASH 的数据必须写入 QUADSPI_DR 寄存器。在间接读取模式下,通过读取 QUADSPI_DR 寄存器获得从FLASH 接收的数据。数据阶段同样可以以单线 双线 四线模式发送,通过 QUADSPI _CCR[25:寄存器的 DMODE [1:0] 这两个位进行配置,如 DMODE [1:0]=00 ,则表示无数据。

间接模式

  • 在间接模式下,通过写入QUADSPI 寄存器来触发命令,通过读写数据寄存器来传输数据。

  • 当FMODE=00 (QUADSPI_CCR[27:26]) 时, QUADSPI 处于间接写入模式,在数据阶段,将数据写入数据寄存器 (QUADSPI_ DR),即可写入数据到 FLASH 。

  • 当FMODE=01 时, QUADSPI 处于间接读取模式,在数据阶段,读取 QUADSPI_DR 寄存器,即可读取 FLASH 里面的数据。

  • 读写字节数由数据长度寄存器 (QUADSPI_ DLR)指定。当 QUADSPI_DLR=0xFFFFFFFF 时,则数据长度视为未定义, QUADSPI 将持续传输数据,直到到达 FLASH 结尾( FLASH 容量由QUADSPI_DCR[20:16] 寄存器的 FSIZE[4:0] 位定义)。如果不传输任何数据,则 DMODE[1:0](QUADSPI_CCR[25:24] 应设置为 00 。

  • 当发送或接收的字节数(数据量)达到编程设定值时,如果TCIE=1 ,则 TCF 置 1 并产生中断。在数据量不确定的情况下,将根据 FSIZE[4:0] 定义的 FLASH 大小,在达到外部 SPI FLASH的 限制时, TCF 置 1 。

  • 在间接模式下有三种触发命令启动的方式,即:

    1. 当不需要发送地址(ADMODE[1:0]==00)和数据(DMODE[1:0]==00)时,对INSTRUCTION[7:0] (QUADSPI_CCR[7:0] )执行写入操作。
    2. 当需要发送地址(ADMODE[1:0]!=00),但不需要发送数据(DMODE[1:0]==00),对ADDRESS[31:0] (QUADSPI_AR)执行写入操作。
    3. 当需要发送地址(ADMODE[1:0]!=00)和数据(DMODE[1:0]!=00)时 ,对 DATA[31:0] (QUADSPI_DR)执行写入操作。

    如果命令启动,BUSY 位( QUADSPI_SR 的第 5 位)将自动置 1

QSPI的使用

QSPI初始化步骤

1.开启QSPI接口和相关时钟,设置IO的复用功能

2.设置QSPI相关参数

STM32F7--->QSPI相关推荐

  1. 嵌入式通信--->QSPI

    QSPI是基于SPI的加强版,SPI的简介见点击跳转 是基于STM32F767,APLLO开发板进行学习的,参见其33章 文章目录 简介 & SPI与QSPI的比较 命令序列的分析 间接模式 ...

  2. 32位单片机STM32F7外扩QSPI SRAM芯片

    意法半导体STM32F7系列MCU采用高性能的ARM Cortex-M7核心,借助ST的ART Accelerator™和L1缓存,STM32F7微控制器可提供Cortex-M7内核的最高理论性能,而 ...

  3. stm32qspi内存映射_STM32F7-discovery QSPI接口使用心得

    STM32电机培训online,大佬带你玩电机 FMC和QSPI引脚冲突的解决 分享一个 QSPI N25Q256A的读写程序,支持QUAD, 4字节模式 1.QuadSPI接口的特点.与普通的SPI ...

  4. STM32H7外设配置速查【QSPI部分】

    QSPI协议 QSPI是Queued SPI(队列串行外围接口)的缩写,是由摩托罗拉公司推出的SPI协议的一个扩展,比SPI应用更加广泛,现在的FLASH.SRAM等存储器大多支持QSPI协议--QS ...

  5. 从qspi启动linux时间,Zynq-Linux移植学习笔记(二十三)——QSPI速度配置

    默认情况下QSPI拷贝文件到DDR中需要时间很长,15M左右大小的bin文件约30s左右.在某些产品中无法满足需求. 经排查发现u-boot代码中有对速度进行配置的地方,位于zynq-common.h ...

  6. ksql 数量大于2_504深入解读路基土石方说明,路基填方数量组成?运距>15km咋办...

    在公路工程造价编制过程中,定额说明是至关重要的,也是最容易忽视的. 那么路基工程都有哪些说明需要我们重点关注呢? 1.关于开挖边沟数量的问题 (1)预算定额规定: 人工挖运土石方.人工开炸石方.机械打 ...

  7. stm32qspi内存映射_stm32 QSPI内存映射模式

    使用Stm32 F767,需要使用内存映射模式,参考STM32F769_DISCO开发板的源码,使用了内存映射模式.用来驱动W25Q256,参数如下: //---------------------- ...

  8. <binding>和<operation>元素

    <binding>和<operation>元素 Binding栏是完整描述协议.序列化和编码的地方,Types, Messages和PortType栏处理抽象的数据内容,而Bi ...

  9. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 二 )

    文章目录 前言 一.ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二.Instrumentation.new ...

最新文章

  1. android 投影仪,不要购买投影仪, 安卓手机投屏很简单, 每个手机都可以
  2. star rating
  3. 计算机视觉、机器学习、人工智能领域知识汇总
  4. 《操作系统》OS学习(十):进程控制
  5. KubeCon 2018 参会记录 —— FluentBit Deep Dive
  6. CentOS7下Hive的安装配置
  7. 推荐系统相关资源搜集
  8. 信息学奥赛一本通C++语言——1025:保留12位小数的浮点数
  9. 在React和Vue中支持服务器端呈现
  10. Mac新手扫盲教程:苹果Mac电脑使用小技巧
  11. [个人记录]春招C/C++后台/运维面试被问到的那些知识点(第一周)
  12. 勤哲EXCEL服务器财务进销存系统
  13. Ubuntu18.04打开关闭DNS服务
  14. 学习篇之华为快应用的开发(一)
  15. python如何变换环境
  16. js点击重置按钮重置表单
  17. 南京大学软件质量研究所
  18. ESP32-S3 LVGL http下载B站头像 JPG显示
  19. C--if else嵌套几种形式总结--不要忘记括号了,养成只要if大括号的习惯
  20. Cisco Viptela SD-WAN 基本部署

热门文章

  1. Java修炼之凡界篇 筑基期 第01卷 入门 番外3 认识IDE和IDEA
  2. NXPowerLite Desktop 9(文件压缩软件)官方中文版V9.0.3 | 极品文件压缩器
  3. Passphrase、Passphrase、Passphrase
  4. 安全编程之MD5撒盐加密
  5. 【Informatica PWC】如何利用copybook导入cobol,vsam文件
  6. CICS VSAM DB2
  7. Axure RP8 气泡
  8. 嵌入式软考备考_3 嵌入式操作系统概述
  9. php marshal,Marshal格式
  10. 将mysql中的数据导入到sqlite3中