痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(6.B) FlexSPI NOR连接方式大全(RT600)

作者: 痞子衡

i.MXRT600内部有一个双通道8bit的FlexSPI模块,这个模块与i.MXRT1xxx里是几乎一样的(存在微小升级),但在Pinmux设计上与i.MXRT1xxx上差异较大(主要涉及SoC设计上的两种8线实现方法),这也是本文要介绍的重点。


  大家好,是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT600的FlexSPI NOR启动的连接方式

  痞子衡前段时间一鼓作气写完了三篇关于i.MXRT1xxx系列FlexSPI NOR启动连接的文章,算是把目前已供货的i.MXRT1xxx型号全部都聊了一遍,但是恩智浦近期刚宣布i.MXRT600正式供货了,得了,活又来了,继续写吧。

《FlexSPI NOR启动连接方式(RT1015/1020/1050)》
《FlexSPI NOR启动连接方式(RT1060/1064(SIP))》
《FlexSPI NOR启动连接方式(RT1010)》

  i.MXRT600跟i.MXRT1xxx系列(Cortex-M7内核)不太一样,其内核采用的是ARM Cortex-M33 + DSP,所以们一般将i.MXRT600归属于i.MXRTxxx系列,它是i.MXRTxxx系列的老大哥。

  虽然i.MXRTxxx算是个新系列,但从系统角度来看其很多地方跟i.MXRT1xxx系列一样,它也没有内部非易失性存储器,支持启动的外部存储器类型也很多,通过FlexSPI接口连接串行NOR Flash也是首选。

  i.MXRT600内部有一个双通道8bit的FlexSPI模块,这个模块与i.MXRT1xxx里是几乎一样的(存在微小升级),但在Pinmux设计上与i.MXRT1xxx上差异较大(主要涉及SoC设计上的两种8线实现方法),这也是本文要介绍的重点。

  • Note: 本文提及的芯片,在系统映射地址空间分配上,给 FlexSPI 分配的起始地址是 0x08000000,因此 XIP 应用程序需要从 0x08000000 之后的空间开始链接

    一、FlexSPI连接模式

  老规矩,在讲启动连接之前,先简单聊一下FlexSPI模块的连接模式。从手册里看,FlexSPI一共有两种连接模式:

  • Individual mode:如下图Flash A1+A2+B1+B2(四线/八线Flash均可),它们分时复用FlexSPI,同一时刻仅有一个Flash被操作(仅一个PORT有数据收发)。
  • Parallel mode:如下图Flash A1+B1或Flash A2+B2(仅四线QSPI),同一时刻两个Flash可以一起被操作(两个PORT都有数据收发),FlexSPI会自动合并/拆分数据(read/program)到两个PORT。

  因为i.MXRT600的FlexSPI PORTA和PORTB均是8bit数据线,均可独立连八线Flash,因此RT1xxx上那种联合PORTA 4bit数据线和PORTB 4bit数据线组Combination mode去连八线Flash那种方式在i.MXRT600上不适用。

二、涉及FlexSPI引脚

  i.MXRT600一共提供了三种封装(WLCSP114、VFBGA176、FOWLP249),并且根据是否选配DSP,一共有6个型号。下文要介绍的FlexSPI NOR启动连接方式并不一定适用所有封装(主要是WLCSP114连接方式较少)。

  们可以在i.MXRT600芯片参考手册Non-Secure Boot ROM这一章节找到BootROM指定的FlexSPI NOR引脚,痞子衡整理如下:

三、单Flash连接方式(4种)

  前两种Flash连接方式就是利用FlexSPI PORTA或PORTB里的6根信号线连接四线QSPI Flash(划重点,PORTB可以单独接四线QSPI启动,这是RT1xxx所做不到的)。

  第三种Flash连接方式就是利用FlexSPI PORTA里的全部12根信号线连接八线Octal Flash(换成Hyper Flash也行)。

  第四种Flash连接方式就是利用FlexSPI PORTB里的10根信号线连接八线Octal Flash(或Hyper Flash),这是i.MXRT600 EVK (Rev.E)里的连接方式,需要注意的是因为PORTB没有CLK_N以及DQS信号,所以此时的八线Flash仅能跑在SDR 60MHz低速下(DQS信号配成internal loopback模式)。

四、双Flash连接方式(5种)

  i.MXRT600支持挂两片Flash去启动,此处仅以两片四线QSPI Flash为例。下图给出了多片Flash的连接方式,理论上一个FlexSPI最多可以挂四片Flash,因为最大有4个片选。但仅考虑接两片Flash的话,一共Flash A0+A1、A0+B0、A0+B1、B0+A1、B0+B1五种正确连法。剩下的那个A1+B1组合因为没有Code Flash,所以无法正常启动。

  至此,恩智浦i.MX RT600的FlexSPI NOR启动的连接方式痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到的 博客园主页CSDN主页知乎主页微信公众号 平台上。

微信搜索”痞子衡嵌入式“或者扫描下面二维码,就可以在手机上第一时间看了哦。




原文创作:痞子衡

原文链接:https://www.cnblogs.com/henjay724/p/12436962.html

更多推荐

更多
  • Pharo敏捷人工智能-第一部分:神经网络
    Apache CN

  • Pharo敏捷人工智能-第二部分:遗传算法
    Apache CN

  • Pharo敏捷人工智能-# 第三部分:神经进化 第三部分:神经进化
    Apache CN

  • Java8反应式编程指南-六、使用调度器获得并发性和并行性 RxJava 的调度器,缓冲、节流和去抖动,调试可观察对象及其调度器,可观察的间隔及其默认调度程序,调度器的类型,将可观察对象和调度器相结合,平行性,节流,去抖动,缓冲器和窗口操作器,背压操作人员,调度器。即时调度器,调度员。蹦床调度员
  • Java8反应式编程指南-七、测试 RxJava 应用 使用简单订阅进行测试,阻塞可观测类,聚合运算符和 BlockingObservable 类,使用聚合运算符和 BlockingObservable 类进行测试,使用 TestSubscriber 类进行深入测试,借助 TestSched
  • Java8反应式编程指南-八、资源管理与 RxJava 扩展 资源管理,使用 Observable.cache 缓存数据,使用升降机创建自定义操作员,使用 Observable.compose 运算符组合多个运算符,介绍可观察的使用方法, 通过前面的章节,我们已经学习了如何使用 RxJava
  • Java8反应式编程指南-五、组合器、条件和错误处理 结合可观察实例,条件运算符,处理错误,HTTP 客户端示例,拉链操作员,组合测试操作符,合并运算符,concat 操作员,电磁轴承操作员,takeUntil、takeWhile、skipUntil和 skipWhile条件运算符,def
  • Java8反应式编程指南-四、转换、过滤和积累您的数据 可观测变换,过滤数据,积累数据,使用各种 flatMap 运算符的变换,分组项目,附加有用的变换运算符, 现在我们有了从各种源数据创建`Observable`实例的方法,是时候围绕这些实例构建编程逻辑了。我们将介绍用于实现逐步计算
  • Java8反应式编程指南-三、创建和连接可观察对象、观察者和主体 从方法中观察到的,可观察的、公正的方法,其他可观察的工厂方法,可观察的创建方法,订阅和取消订阅,冷热可观察实例,主体实例,可连通可观测类, RxJava 的`Observable`实例是反应式应用的构建块,RxJava 的这一优势
  • Java8反应式编程指南-一、反应式编程简介 什么是反应式编程?,我们为什么要被动?,介绍 RxJava,下载并设置 RxJava,比较迭代器模式和 RxJava 可观测值, 如今,术语反应式编程正在成为一种趋势。各种编程语言的库和框架正在涌现。关于反应式编程的博客文
  • 近期文章

    更多
    文章目录

      推荐作者

      更多