I.MX RT1170之FlexSPI详解:FlexSPI基础知识和特性

news2024/9/25 21:21:37

最近我也在做RT1170的相关项目,由于项目需要,研究了Flash下载算法、NOR Flash空间的擦除/烧写(OTFAD XIP更新固件时要更新OTFAD Key Blob字段)、HyperRAM初始化等功能,这些都是开发过程中可能会遇到的一些问题,而这些都与FlexSPI接口息息相关。初始化完FlexSPI后就可以像访问CPU中ITCM、DTCM等内置内存一样来访问外部存储器中的内容。对于FlexSPI1来说,它可以将外部存储器地址映射到0x30000000处;而FlexSPI2则可以映射到0x60000000处。

1 FlexSPI框图

FlexSPI(Flexible Serial Peripheral Interface)支持两个SPI通道和多达4个外部设备。每个通道支持Single/Dual/Quad/Octal模式的双向数据传输。下面来看一下FlexSPI的功能框图:
在这里插入图片描述
(1)FA port和FB port
FlexSPI可以通过它的两个通道FA和FB与外部的串行Flash在硬件上进行连接,FA和FB各有两个通道。比如说HyperRAM大多数就有八条数据线,它就占满了一个Port A/B。而对于QSPI NOR Flash来说,只需要四根数据线,所以在Port A/B上还能再接一个设备。
(2)SEQ_CTL
所有的外部存储器都有它的时序,SEQ_CTL就可以根据你的配置生成相应的控制时序来访问外部的存储器。其中有一个很重要的数据结构,就是LUT(Look Up Table),它用来指定Flash各个操作的时序。

(3)AHB BUS 64bitIPS BUS 32bit
32bit IPS BUS(即手动操作FlexSPI寄存器发送Flash读写命令),64bit AHB BUS(由FlexSPI翻译AHB访问地址并自动发送相应Flash读写命令)

  • AHB BUS 64bit:用户可以像访问内部SRAM一样访问接在FlexSPI上的外部存储器,此时地址通过AHB总线传到SEQ_CTL
  • IPS BUS 32bit:用户可以根据自己初始化的外部存储器各个操作(如擦除、读/写内存、读/写寄存器)的时序,主动访问FlexSPI的相关寄存器来完成外部存储器的一些操作

(4)ARB_CTL
由于AHB和IPS总线都可以请求外部存储器的数据,所以ARB_CTL就是用来控制两个总线在同一时间访问外部存储器时,哪个总线能优先执行。

(5)缓冲区
为了加快读取的速度,两个总线都有读写缓冲区。AHB Bus有发送缓冲区AHB_TX_BUF和接收缓冲区AHB_RX_BUF,它们将会缓存AHB突发传输的写数据或读数据;而IPS Bus有发送缓冲区IP_TX_FIFO和接收缓冲区IP_RX_FIFO,大小均为256字节,且支持DMA传输。

2 FlexSPI特性

(1)SDR和DDR模式
在SDR(Single Data transfer Rate)模式下,Flash在SCLK上升沿接收数据,下降沿发送数据。在DDR (Dual Data transfer Rate)模式下,Flash在SCLK上升沿和下降沿都接收数据和发送数据。SDR和DDR模式由LUT表格中的操作码决定。

(2)Individual和Parallel模式
Individual mode下,Flash读/写数据都在Port A或Port B完成。在parallel mode下,Flash的读写操作在Port A和Port B并行完成,FlexSPI将自动合并/拆分Flash读写的数据。也就是说,数据可以存储在两个不同的Flash中。当然在硬件上,也要有相应的连接。
在这里插入图片描述

  • 只有读写指令可以自动合并和拆分,对于其它的指令(比如命令/地址/模式/数据大小),相同的数据会同时传给两个Flash设备,比如发命令则两个Flash设备都会收到。

(3)Single, Dual, Quad, and Octal模式

  • Single模式:Flash在DATA0引脚上发送/接收数据
  • Dual模式:Flash在DATA0~DATA1引脚上发送/接收数据
  • Quad模式:Flash在DATA0~DATA3引脚上发送/接收数据
  • Octal模式:Flash在DATA0~DATA7引脚上发送/接收数据

这些模式也是在LUT表格中决定的。

(4)操作模式
Module Disable mode:用于低功耗模式,在该模式下AHB时钟和串行时钟域将会被关闭,但是IPS总线时钟不会被关闭。
Doze mode:用于低功耗模式。在该模式下,FlexSPI会等待所有的处理都完成后进入Doze mode,此时AHB和串行时钟域都会被关闭,但是IPS总线时钟不会被关闭。
Stop mode:用于低功耗模式。在该模式下,FlexSPI会等待所有的处理都完成,再返回一个ACK给系统,然后IP回关闭AHB和串行时钟域。但是可以在系统层面打开AHB/IPS/串行时钟。
Normal mode:所有的时钟都不会被关闭。

3 总结

本节大概介绍了一下FlexSPI的功能框图和一些特性,实际上这都是对参考手册的一个大概的总结,更多细节还是要看参考手册。而对于FlexSPI来说,最重要的应该就是LUT表格了,所以下一节就来详细地介绍一下LUT表格。

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

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

相关文章

第2章 信息技术发展

文章目录 2.1.2计算机网络1.网络标准协议2.软件定义网络3.第五代移动通信技术 2.1.3存储和数据库1.存储技术2.数据结构模型3.常用数据库类型4.数据仓库 2.1.4信息安全2.1.5信息技术的发展2.2.1物联网2.2.2云计算2.2.3大数据2.2.4区块链2.2.5人工智能2.2.6虚拟现实 信息技术是在…

前端vue入门(纯代码)09

【09.vue中组件的自定义事件】 自定义组件链接 在vue中用的click【点击】、keyup【按键】……等事件,这些属于内置事件,也就是js自带的事件。 问题一:什么是组件自定义事件呢? 【内置事件】:是给html元素用的,比如s…

UG\NX二次开发 加密锁(加密狗)

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 加密锁简介 加密狗是一种用于保护软件版权的技术手段,它可以限制未经授权的用户在未经许可的情况下使用某些软件。软件加密锁可以保护软件开发商的知识产权,防止盗版和非法复制等行为,同时也可以…

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…

msvcr110.dll,丢失修复,msvcr110.dll,丢失修复详细解决办法

我们在运行软件程序或者游戏的时候,如果程序提示“无法启动此程序,因为计算机中丢失msvcr110.dll。尝试重新安装该程序以解决此问题”,如果说明您电脑系统中缺少或者未注册msvcr110.dll这个运行库文件,那么我们要如何解决这个问题…

Node内存管理+垃圾回收机制

最近看到《深入浅出node》这本书,里面正好有内存控制, 加上最近看到一篇文章,也是讲了内存管理和垃圾回收机制。 由于自己曾经做过一个ssl接口,导致node服务经常重启,我潜意识就怀疑是内存管理出现了问题,…

H264 NALU分析

标题 1.H264介绍2.H264编解码解析2.1. H264编码原理2.2 H264的I帧,P帧,B帧2.3 H264编码结构解析2.4 NALU2.4.1 NALU结构2.4.2 解析NALU2.4.3 annexb模式 1.H264介绍 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.…

Ansible Playbook

Ansible 的脚本 --- playbook 剧本 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3&…

Postman接口测试之:添加Cookie伪造请求

1,获取cookie值 登录某网站,通过开发者工具(或者fiddler抓包工具),获取登录成功后的请求头中的cookie值。 大家肯定奇怪,明明访问首页的时候就已经生成了cookie值,为什么还登录呢?…

Linux中磁盘管理之格式化、分区、挂载-详解

今天给大家介绍一下Linux中磁盘管理中格式化、分区、挂载等操作步骤,希望这篇文章对大家有所帮助。 一、磁盘知识 1.磁盘含义 磁盘(Disk)是一种用于存储和读取数据的物理设备,它由一个或多个旋转的磁性盘片组成。这些盘片通常由…

递归算法学习

递归算法介绍 递归指的是函数或算法在执行过程中调用自身。在递归的过程中,程序会不断地将自身的执行过程压入调用栈中,直到满足某个条件结束递归调用并开始返回。递归算法常用于解决一些具有递归结构的问题,比如树、图、排序等。递归算法可以…

5.controller部署nova服务

nova 服务是 OpenStack service 计算服务,负责维护和管理云环境的计算资源; 例如: 接收客户端请求需要的计算资源; 确定实例在哪个物理机上创建; 通过虚机化的方式将实例启动运行等工作。 controller节点 在安装和配…

JAVA为什么要面向对象

JAVA是一个面向对象的语言 ok,我们开始,用了那么久的java,看了那么多代码,你是否懂得了面向对象,今天我们的第一个问题就是,为什么java要面向对象,要解释为啥要面向对象,我们首先要…

Python selenium自动化测试模型图解

1、线性测试 优势:每一个脚本都是完整独立的,每一个脚本对应一个测试用例 缺点:开发成本高,会有重复操作重复脚本;维护成本也高,修改重复操作的脚本时,要逐一进行修改。 2、模块化驱动测试 …

2023年计算机专业毕业实习报告最新

2023年计算机专业毕业实习报告最新篇1 一、实习基本情况 按照学校对毕业生的要求,为毕业后的工作和谋职打下良好的基础。我于X年X月来到山西柳林汇丰兴业同德焦煤有限公司进行为期X个月的实习。毕业实习让我们想起那句老话:“让学生赢在起跑线上。”在学…

验证性实验 - 线性回归

练习1:线性回归 介绍 在本练习中,您将实现线性回归并了解其在数据上的工作原理。 在开始练习前,需要下载如下的文件进行数据上传: ex1data1.txt -单变量的线性回归数据集ex1data2.txt -多变量的线性回归数据集 在整个练习中&a…

马斯克撕下美国的遮羞布,美企纷纷背刺,外媒:可怕的还在后面

马斯克访华造成的影响还在持续,随着更多美国企业家访华以及表明态度,可以说他们正撕下美国的遮羞布,今天的美国其实早已背离了当初他们所宣扬的价值,凸显出外强中干的本质。 二.美国企业家纷纷访华撕下美国遮羞布 美国一直都标榜贸…

某购房通小程序解密分析【2023.6.17】

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 主要对小程序返回的加密结果进行解密的分析过程只…

如何在编程中中实现负载均衡和容错处理

什么是容错 容错是指系统(计算机、网络、云集群等)在其一个或多个组件发生故障时继续运行而不会中断的能力。 创建容错系统的目的是防止由单点故障引起的中断,确保任务关键型应用程序或系统的高可用性和业务连续性。 容错系统使用备份组件…

DAY26:回溯算法(一):回溯算法理论

课程链接:https://www.bilibili.com/video/BV1cy4y167mM/?spm_id_from333.788 什么是回溯法 回溯法 - OI Wiki (oi-wiki.org) 回溯法是一种经常被用在 深度优先搜索(DFS) 和 广度优先搜索(BFS) 的技巧。 其本质是…