QSPIFlash驱动功能解析

汽车电子与软件 2023-10-16 20:19

前言

首先,请问大家几个小小问题,你清楚:

  • QSPI协议的基本内容与功能应用场景吗?

  • QSPI Flash驱动读写过程中存在哪些不一样的操作模式呢?

  • 基于AUTOSAR架构下Flash驱动接口有哪些?

  • 在平常使用QSPI Flash接口的过程中存在哪些注意事项呢?

今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:


正文

QSPI协议介绍

QSPI全称为“Queued SPI”,本质上是属于SPI协议的一种,一般来说,SPI协议可以分为Standard SPI,Dual SPI,以及本文要讲解的Queued SPI。只不过Dual SPI,Queued SPI常用于作为SPI Flash的通信接口。

功能应用

QSPI作为一种队列串行外围接口协议,就是对SPI协议的扩展,可以通过单线,双线或四线模式与外部Flash存储器进行高速通信。其功能应用场景如下:

  • 数据存储:可以用来实现大量数据的存储,如代码,图像,视频等,从而提高数据的读写速度与容量;

  • 代码执行:QSPI用于执行外部Flash存储器的代码,这样可以节约内部Flash的空间,如通过QSPI XIP模式从而实现在Memmap下执行代码;

  • 与其他外围设备进行通信:QSPI也可支持与其他QSPI协议的外围设备进行通信,如传感器,显示器等,可以提高通信的效率与灵活性;

协议特点

  • QSPI协议作为一种SPI协议的扩展,一般而言,可以分为两种工作模式,即设置模式与Memmap模式,虽然也有些芯片存在三种,如STM32,不同芯片存在些许差异可以理解,本质上可以归纳为上述两者;

  • QSPI协议的命令序列包括指令、地址、交替字节、空指令和数据这五个阶段,任一阶段均可跳过,但至少要包含指令、地址、交替字节或数据阶段之一

  • 一般而言,QSPI仅支持dual read 与quad read模式,不支持dual write与quad write两种模式,同时也不会存在QSPI 输入与输出的loop back模式;


QSPI Flash驱动说明

虽然市面上存在许多的Flash驱动供应商,但是基本都大同小异,本文已TI系列的QSPI Flash驱动介绍举例给大家介绍下其QSPI的硬件实现原理,读写操作模式以及EDMA搬运等操作。

QSPI硬件实现原理

作为QSPI通信的双方,本质上来讲都是主芯片端作为主设备,可以通过控制CS引脚来决定与外围不同的Flash芯片进行通信,同时通过输出Clock时钟来完成针对从设备的通信传输控制,如下图所示:

图1 QSPI硬件连接原理(图片来源于TI官方文档)

左图为主芯片的内部QSPI的控制器,右图则为外部的支持QSPI协议的外部Flash,两者之间通过QSPI协议接口连接,包含1个CLK引脚,1个CS引脚与4个用于传输数据的IO引脚。

针对上图中的内容,小T将针对每个引脚做个较为详细的介绍,如下表所示:

图2 QSPI接口引脚功能定义

QSPI读写操作模式

通过上述文章我们了解到QSPI存在3线Single Write/Read模式,4线Single Write/ Read,Dual Read模式,6线Quad Read模式的6种QSPI读写方式,在具体的项目实际应用过程中,我们一般推荐正常的写入操作通过4线Single Write来写入,读取操作推荐采用6线Quad Read模式这样才能最大效率的利用Flash硬件自身特性,从而提高通信效率。

如下图所示为QSPI 控制器的内部组成关系,从中我们可以得出如下几个关键结论:

图3 QSPI控制器接口内部结构(来源于TI官方文档)
  • 整个QSPI控制器可以分为SFI_MM_IF与SPI_CORE两个模块,其中SFI_MM_IF模块主要负责读写指令,地址以及dummy cycle的个数等,而SPI_CORE主要负责芯片的时钟极性与时钟相位以及传输的长度等;

  • SFI_MM_IF接口由以下两个部分组成:

  • SFI register control:用来实现上述读写指令的初始化设置;

  • SFI translator:将对应的SFI register control中的读写指令发送至SPI_CORE模块来外部Flash;

  • SPI_CORE模块则是由如下四个部分组成:

  • SPI_CNTIF:SPI Control Interface,用于设置对应的读写指令,时钟极性或相位等,在配置模式下会使用到;

  • SPI_CLKGEN:SPI Clock Generator,用于设置通信相关的时钟频率;

  • SPI_MACHINE:SPI State Machine,将SPI_CNTIF中的相关读写指令作为输入,然后控制数据的移位发送等;

  • SPI_SHIFTER:SPI Data Shifter,用来实现接口信号的捕捉与生成。

    QSPI控制器支持两种配置方式,一种是Config模式,另外一种则是Memmap方式;对于写入操作不支持Memmap方式仅支持Config模式,对于读取操作推荐使用Memmap方式,这样便可以直接在芯片MCU的Memory Layout中看到相应的外部Flash空间的代码或者数据。

    对于QSPI接口的通信双方而言,需要确保两者通信的时钟极性与时钟相位是一致的,时钟极性与时钟相位的组合有如下4种方式:

    图4 QSPI时钟极性与时钟相位关系图

QSPI EDMA搬运

  • 当通过QSPI去读取大量数据时,我们推荐使用Memmap方式读取+EDMA的方式来完成,因为通过该两种技术手段的结合,我们便可以减小CPU负担,直接让EDMA去执行对应的数据读取操作;

  • 有关EDMA的具体实现机理就不再本文进行展开,后续将进行单独讲解,欢迎多多关注小T。

AUTOSASR架构下Flash驱动标准接口

小T将AUTOSAR架构下针对Flash驱动的标准接口以及相关需求列举如下,这样在我们使用Flash驱动过程我们能够快速的了解到Flash驱动的关键API的具体功能与作用。


图5 Flash驱动标准接口表

在使用上述标准的AUTOSAR Flash驱动API也有很多需要注意的地方,小T将自己觉得需要特别注意的点列举如下,这也是大家容易忽视的一些点:

  • 在使用Flash驱动其他读,写等接口之前,务必需调用Fls_Init完成初始化,否则后续的Flash操作请求将会无效;

  • 如果你使用的是外部Flash并采用QSPI驱动,请务必在Fls_Init之前执行QSPI驱动的初始化,保证一个有效的初始化过程;

  • 在执行Flash写入操作时其写入地址与长度均需要与Flash的Page单位进行对齐,如一般为256字节,具体还是取决于Flash芯片型号;

  • 在执行Flash擦除操作时,需确保其擦除地址与长度与Flash的sector单位进行对齐,如一般为4K,具体还是取决于Flash芯片型号;

  • Fls_Read, Fls_Write等关键API操作均属于异步操作且不可重入,因此需确保Flash驱动的被操作对象的唯一性,不要应用层与Fee模块冲突,统一通过NVM发送请求来完成Flash的操作;

QSPI Flash驱动使用注意事项

小T在具体的软件开发过程中,也遇到过很多跟Flash驱动操作有关的问题,这些问题往往解决起来非常棘手,因为非常偶发且极难复现。

这类问题更多时候还是我们缺乏防御性编程思维,没有针对Flash可能失效的场景进行全面的考虑,以下小T将我个人针对Flash驱动的几个常见的经验总结列举如下,希望能给大家后续的Flash驱动开发带来一些帮助与思考。

  • 在每次系统启动或者复位的过程中,最为推荐的做法针对外部Flash同步进行reset操作,该操作可以一般存在如下三种方式:

    • 每次启动或者复位的过程中可通过硬件来操作Flash的上下电操作来完成Flash自身的重置;

    • 通过软件的方式来拉低Reset引脚来实现外部Flash复位,这种方式需要考虑到引脚复用功能是否可用的可能性;

    • 通过软件的方式在初始化的过程中通过QSPI通信发送软复位指令让Flash芯片进行重置;

  • 如果需要针对外部的SPI Flash通过QSPI进行通信,需要特别注意该SPI Flash芯片的QE位是否默认使能,如果没有使能,将无法采用QUAD SPI进行通信,因此建议工厂端刷写软件过程中均需要主动设置该QE位或者在软件初始化过程中设置该QE位,该QE位一旦写入掉电也会丢失,仅需写入一次即可;

  • 在执行Flash初始化过程中需要针对Flash外部型号,如Manufacture ID等设备号进行校验,确保不会出现生产过程中出现芯片型号贴错的场景;

  • 在软件运行过程中有时会偶发导致系统跑飞意外执行操作Flash驱动写或者擦除操作导致用户程序遭到破坏,从而软件无法正常启动,因此有必要针对关键应用程序代码空间进行Flash写保护,这样即使程序死机复位后整个系统也能够再次正常启动。



汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论
  • 前言近年来,随着汽车工业的快速发展,尤其是新能源汽车与智能汽车领域的崛起,汽车安全标准和认证要求日益严格,应用范围愈加广泛。ISO 26262和ISO 21448作为两个重要的汽车安全标准,它们在“系统安全”中扮演的角色各自不同,但又有一定交集。在智能网联汽车的高级辅助驾驶系统(ADAS)应用中,理解这两个标准的区别及其相互关系,对于保障车辆的安全性至关重要。ISO 26262:汽车功能安全的基石如图2.1所示,ISO 26262对“功能安全”的定义解释为:不存在由于电子/电气系统失效引起的危害
    广电计量 2025-01-02 17:18 218浏览
  • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
    百佳泰测试实验室 2025-01-03 10:39 132浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 113浏览
  • 从无到有:智能手机的早期探索无线电话装置的诞生:1902 年,美国人内森・斯塔布菲尔德在肯塔基州制成了第一个无线电话装置,这是人类对 “手机” 技术最早的探索。第一部移动手机问世:1938 年,美国贝尔实验室为美国军方制成了世界上第一部 “移动” 手机。民用手机的出现:1973 年 4 月 3 日,摩托罗拉工程师马丁・库珀在纽约曼哈顿街头手持世界上第一台民用手机摩托罗拉 DynaTAC 8000X 的原型机,给竞争对手 AT&T 公司的朋友打了一个电话。这款手机重 2 磅,通话时间仅能支持半小时
    Jeffreyzhang123 2025-01-02 16:41 167浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 117浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 159浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 173浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 162浏览
  • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
    百佳泰测试实验室 2025-01-03 10:29 136浏览
  • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
    curton 2025-01-02 23:08 289浏览
  • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
    Industio_触觉智能 2025-01-03 11:37 137浏览
  • 国际标准IPC 标准:IPC-A-600:规定了印刷电路板制造过程中的质量要求和验收标准,涵盖材料、外观、尺寸、焊接、表面处理等方面。IPC-2221/2222:IPC-2221 提供了用于设计印刷电路板的一般原则和要求,IPC-2222 则针对高可靠性电子产品的设计提供了进一步的指导。IPC-6012:详细定义了刚性基板和柔性基板的要求,包括材料、工艺、尺寸、层次结构、特征等。IPC-4101:定义了印刷电路板的基板材料的物理和电气特性。IPC-7351:提供了元件封装的设计规范,包括封装尺寸
    Jeffreyzhang123 2025-01-02 16:50 198浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 155浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦