AS32A601芯片QSPI 调试技术解析与与实战经验分享

一、概述

(一)QSPI 简介

QSPI(Quad Serial Peripheral Interface)是一种高速串行通信接口,在标准 SPI(Serial Peripheral Interface)的基础上扩展至 4 条数据线(Quad Mode),显著提升数据传输速率。它广泛应用于 Flash 存储器、传感器和微控制器之间的通信。

(二)主要特性

  • 多种模式支持 :兼容 Standard SPI(1 - bit 模式)、Dual SPI(2 - bit 模式)以及 Quad SPI(4 - bit 模式,最高吞吐量)。

  • 高时钟频率 :通常支持 50MHz - 133MHz(取决于芯片),为数据传输提供高速时钟保障。

  • 低引脚占用 :仅需 6 个引脚(CLK, CS, IO0 - IO3)即可实现全双工通信,有效节省硬件资源。

  • 内存映射模式(XIP, Execute - In - Place) :允许 CPU 直接访问 QSPI Flash,无需额外缓存,提升系统运行效率。

(三)应用场景

在嵌入式系统中,QSPI 常用于连接微控制器与外部 Flash 存储器,实现程序代码和数据的高速读写操作;还可与各类传感器配合,快速传输传感器采集到的数据,满足工业控制、汽车电子、物联网等诸多领域的实时性与大数据量传输需求。

二、AS32A601 QSPI 硬件设计

引脚名称功能说明
CLK时钟信号主设备输出,从设备同步数据
CS片选信号(低电平有效)使能从设备通信
IO0 (DQ0)数据线0(MOSI in SPI模式)单线模式:单向数据输入/输出
IO1 (DQ1)数据线1(MISO in SPI模式)单线模式:单向数据输入/输出
IO2 (DQ2)数据线2(WP# in SPI模式)Quad模式:双向数据传输
IO3 (DQ3)数据线3(HOLD# in SPI模式)Quad模式:双向数据传输

(二)开发板配置

在 AS32A601 开发板上,QSPI 经过一个 BUFFER 芯片接入 QSPI_FLASH,所选 FLASH 型号为 S25FL512SAGMFVG13,该型号 QSPI 支持最大速率可达 45MHz,为系统稳定运行提供可靠存储支持。

三、QSPI 时序解析

(一)指令阶段

这一阶段,将在QSPI_CCR[7:0]寄存器的instruction字段中配置的一条8位指令发送到Flash,指定待执行操作的类型。

尽管大多数Flash从IO0/SO信号(单线SPI模式)只能以一次1位的方式接收指令,但指令阶段可选择一次发送2位(在双线SPI模式中通过IO0/IO1)或一次发送4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QSPI_CCR[9:8]寄存器中的IMODE[1:0]字段进行配置。若IMODE = 00,则跳过指令阶段,命令序列从地址阶段(如果存在)开始。

(二)地址阶段

在地址阶段,将1-4字节发送到Flash,指示操作地址。待发送的地址字节数在QSPI_CCR[13:12]寄存器的ADSIZE[1:0]字段中进行配置。在间接模式和自动轮询模式下,待发送的地址字节在QSPI_AR寄存器的ADDRESS[31:0]中指定;在内存映射模式下,则通过AHB(来自于内核或DMA)直接给出地址。地址阶段可一次发送1位(单线SPI模式通过SO)、2位(双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QUADSPI_CCR[11:10]寄存器中的ADMODE[1:0]字段进行配置。若ADMODE = 00,则跳过地址阶段,命令序列直接进入下一阶段(如果存在)。

(三)交替字节阶段

在交替字节阶段,将1-4字节发送到Flash,一般用于控制操作模式。待发送的交替字节数在QSPI_CCR[17:16]寄存器的ABSIZE[1:0]字段中进行配置。待发送的字节在QSPI_ABR寄存器中指定。

交替字节阶段可一次发送1位(在单线SPI模式中通过SO)、2位(在双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QSPI_CCR[15:14]寄存器中的ABMODE[1:0]字段进行配置。若ABMODE = 00,则跳过交替字节阶段,命令序列直接进入下一阶段(如果存在)。

交替字节阶段存在仅需发送单个半字节而不是一个全字节的情况,比如采用双线模式并且仅使用两个周期发送交替字节时。在这种情况下,固件可采用四线模式(ABMODE = 11)并发送一个字节,方法是ALTERNATE的位7和3置“1”(IO3保持高电平)且位6和2置“0”(IO2线保持低电平)。此时,半字节的高2位存放在ALTERNATE的位4:3,低2位存放在位1和0中。例如,如果半字节2 (0010)通过IO0/IO1发送,则ALTERNATE应设置为0x8A (1000_1010)。

(四)空指令周期阶段

在空指令周期阶段,给定的1-31个周期内不发送或接收任何数据,目的是当采用更高的时钟频率时,给Flash留出准备数据阶段的时间。这一阶段中给定的周期数在QSPI_CCR[22:18]寄存器的DCYC[4:0]字段中指定。在SDR和DDR模式下,持续时间被指定为一定个数的全时钟周期。若DCYC为零,则跳过空指令周期阶段,命令序列直接进入数据阶段(如果存在)。空指令周期阶段的操作模式由DMODE确定。为确保数据信号从输出模式转变为输入模式有足够的“周转”时间,使用双线和四线模式从Flash接收数据时,至少需要指定一个空指令周期。

(五)数据阶段

在数据阶段,可从Flash接收或向其发送任意数量的字节。在间接模式和自动轮询模式下,待发送/接收的字节数在QSPI_DLR寄存器中指定。在间接写入模式下,发送到Flash的数据必须写入QSPI_DR寄存器。在间接读取模式下,通过读取QSPI_DR寄存器获得从Flash接收的数据。在内存映射模式下,读取的数据通过AHB直接发送回Cortex或DMA。数据阶段可一次发送/接收1位(在单线SPI模式中通过SO)、2位(在双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QUADSPI_CCR[15:14]寄存器中的ABMODE[1:0] 字段进行配置。若DMODE = 00,则跳过数据阶段,命令序列在拉高nCS时立即完成。这一配置仅可用于仅间接写入模式。

四、QSPI 与 SPI 异同比较

QSPI(Quad SPI)和SPI(Serial Peripheral Interface)是两种串行通信协议,用于在主设备和从设备之间进行数据传输。它们有一些相似之处,但也有一些重要的区别。

(一)相似之处

  1. 串行通信本质 :二者均为串行通信协议,通过少量引脚实现数据传输,在硬件资源有限的场景下具有显著优势。

  2. 主从架构 :均基于主从结构,主设备主导通信发起与时序控制,从设备依主设备指令响应并完成数据交互,便于系统级的设备管理和任务调度。

(二)不同之处

  1. 传输速率差异 :QSPI 凭借四条数据线(Quad 模式)可同时传输四个数据位,支持更高传输速率;SPI 通常仅使用一条数据线,每次仅能传输一个数据位,传输速率相对较低。

  2. 总线模式多样性 :QSPI 支持单线、双线、四线等多种总线模式,可根据应用场景灵活选择;SPI 一般仅支持单线模式,难以满足对高带宽有需求的复杂应用。

  3. 时钟频率范围 :QSPI 为匹配高速数据传输,通常支持更高时钟频率;SPI 的时钟频率设计相对较低,适用于对实时性要求不苛刻的场景。

  4. 引脚占用情况 :QSPI 为实现四线模式高速数据传输,需更多引脚;SPI 仅需少量引脚即可完成基本通信功能,在简单应用中硬件连接更为简便。

  5. 片选信号运用 :QSPI 与 SPI 均使用片选信号(Chip Select)选择通信从设备,但在复杂多设备系统中,QSPI 的多线模式可减少总线切换次数,提升整体通信效率。

总之,需要根据具体的应用需求和设备支持来选择使用QSPI还是SPI。QSPI适用于需要更高传输速率和更大带宽的应用,而SPI适用于传输速率要求不高的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90492.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TDengine 转化函数 TO_TIMESTAMP 用户手册

TDengine TO_TIMESTAMP 函数用户使用手册 函数概述 TO_TIMESTAMP 是 TDengine 中的标量函数,用于将字符串按照指定格式转换为时间戳。该函数在数据导入、时间格式转换、以及处理各种时间字符串格式时非常有用。 语法 TO_TIMESTAMP(ts_str_literal, format_str_liter…

关于我司即将对商业间谍行为进行法律诉讼的通知

最后警告我司所属社交媒体中所有友商间谍:请于2025年7月26日上午十点前,自行删除我方好友,并停止通过欺诈行为(包括但不限于冒充客户等)盗取我司商业秘密的行为。十点后,我司将开始进行逐一排查&#xff0c…

【打怪升级 - 03】YOLO11/YOLO12/YOLOv10/YOLOv8 完全指南:从理论到代码实战,新手入门必看教程

引言:为什么选择 YOLO? 在目标检测领域,YOLO(You Only Look Once)系列模型一直以其高效性和准确性备受关注。作为新版本,YOLO系列的新版本总能在前辈的基础上进行了多项改进,包括更高的检测精度…

JMeter每次压测前清除全部以确保异常率准确(以黑马点评为例、详细图解)

目录 一、前言 二、未清除全部会出现的情况(以乐观锁解决超卖问题为例) 三、清除全部就能得到准确的结果 一、前言 在学习黑马点评之前我并没有接触过JMeter这个压测软件,然后在黑马点评视频中老师也是直接拿起JMeter就开始使用,所以我一直在不断搜索…

关于新学C++编程Visual Studio 2022开始,使用Cmake工具构建Opencv和SDK在VS里编译项目开发简介笔记

1. C 项目build文件夹 2. VS解决方案管理器Solution——.sln文件 3. CMake 自动化构建工具 4. SDK软件开发工具包作为初学者,从工程项目开始接触完整一套流程工具和编译,有助于快速上手。 一、C 项目build文件夹在 VS2022 中打开 C 项目后,在…

测试ppyoloe的小样本few-shot能力,10张图片精度达到69.8%

近期公司有个项目,需要解决长尾样本的问题,所以测试了一下paddlepaddle小样本的能力。 环境::T4 、ubuntu 、cuda-11.6 、py3.9、 paddlepaddle-gpu2.6.0、pip install opencv-python4.5.5.64 -i https://pypi.tuna.tsinghua.…

结构化布线系统详解

1. 结构化布线系统概述 结构化布线系统(Structured Cabling System, SCS)是一种标准化、模块化的建筑物或建筑群内信息传输基础设施,它为语音、数据、图像等多媒体业务提供了统一的物理传输介质。与传统的点对点布线方式不同,结构化布线采用层次化、标准…

【Java学习】匿名内部类的向外访问机制

目录 一、方法局部变量的访问 1.生命周期 1.1方法生命周期 1.2匿名实例生命周期 1.3生命超时性 2.变量捕获 2.1按值捕获 2.1.1值捕获优势 2.1.1.1生命及时访问 2.1.1.2线程安全 2.1.2常量值捕获优势 2.2按引用捕获 引用捕获风险 (1)生命超时访问 (2)线程不安全 …

LinkedList的模拟实现+LinkedList和ArrayList的区别

目录 LinkedList的模拟实现 什么是双向链表 增加数据 头插法: 尾插法: 指定的下标插入: 删除数据 删除双向链表中出现的第一个key 置空所有数据 LinkedList和ArrayList的区别 顺序表对应的集合类是ArrayList;链表对应的集…

Vue + WebSocket 实时数据可视化实战:多源融合与模拟数据双模式设计

在现代交通大屏项目中,实时数据的采集和可视化尤为重要。本文结合 Vue3 和 ECharts,分享一个支持多 WebSocket 数据源实时合并、模拟数据调试、自动重连的完整设计方案,帮助你快速搭建健壮的数据可视化组件。一、项目背景与核心需求实时接收多…

C#索引器、接口、泛型

以下是对提供的 C# 代码中涉及的核心知识点的梳理和总结,涵盖索引器、接口、泛型三大核心内容,以及相关实践要点:一、索引器(Indexer)索引器是一种允许类或结构体像数组一样通过[]语法访问成员的特殊成员,本…

界面组件DevExpress WPF中文教程:Grid - 如何过滤节点?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

Excel——INDEX和MATCH傻傻分不清?

核心逻辑​先用 MATCH 找到目标姓名在表格中的 ​行号,再用 INDEX 根据行号 ​提取对应信息。就像查字典:先用拼音找到字的页码(MATCH 找行号)再翻到该页看具体解释(INDEX 取数据)​分步拆解(以…

制造业低代码平台实战评测:简道云、钉钉宜搭、华为云Astro、金蝶云·苍穹、斑斑低代码,谁更值得选?

上回聊了斑斑和简道云,不少同行私信问我其他几个低代码平台怎么样,今天就给大家来个"五大门派"终极对决! 一、先说痛点 制造业搞数字化最怕三件事: 1.钱花了没效果(大平台用不起,小工具不够用&…

Jenkins中HTML文件显示样式问题解决方案

Jenkins中HTML文件显示样式问题解决方案 问题描述 在Jenkins中归档的HTML文件显示格式失效,样式无法正常显示,但在本地浏览器中打开却能正常显示。 问题原因 Jenkins为了安全考虑,默认设置了严格的内容安全策略(Content Security Policy, CSP…

四、配置文件

文章目录1. 文件类型1.1 properties1.2 yaml1.2.1 简介1.2.2 基本语法1.2.3 数据类型1.2.4 示例2. 配置提示1. 文件类型 1.1 properties 同以前的properties的用法 1.2 yaml 1.2.1 简介 YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言&#x…

Python常用医疗AI库以及案例解析(场景化进阶版)

📊 框架应用拓扑图用例 #mermaid-svg-lZ1J5KCaVWBV2kAu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lZ1J5KCaVWBV2kAu .error-icon{fill:#552222;}#mermaid-svg-lZ1J5KCaVWBV2kAu .error-text{fill:#552222;st…

Python高效操作Kafka实战指南

Python操作Kafka的高效 以下是使用Python操作Kafka的高效消息发送实例,涵盖基础发送、批量处理、异步回调等场景。示例基于confluent-kafka库(推荐)和kafka-python库,代码均经过实测。 流程图 基础消息发送(同步) from confluent_kafka import Producerproducer = Pro…

离线快速处理PDF格式转化的方案

日常办公中,PDF 几乎成了我们离不开的文件格式。然而像 WPS 这样的工具,不少实用功能都需要额外付费才能解锁。它的打开方式很简单,双击桌面图标即可运行。它不会弹出主界面,而是默默驻留在系统托盘区,需要时双击图标就…

SpringMVC注解与SpringCloudOpenFeign注解对比

1. 背景知识 梳理SpringMVC和SpringCloudOpenFeign常用注解后: Spring MVC中常用注解_笔记-CSDN博客Spring Cloud OpenFeign 常用注解_笔记-CSDN博客 这里对两类注解做个对比。理解两者定位(服务端 vs 客户端)是掌握注解使用的关键&#x…