大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT中FlexSPI外设速度上限的三个影响因子。
FlexSPI 几乎是开发 i.MXRT 系列绕不开的外设,XIP 性能、OTA 设计、显存扩展这些话题均不可避免要和 FlexSPI 打交道,这其中我们最关心的点就是 FlexSPI 的速度上限,这直接影响最终应用程序的运行性能。
在芯片参考手册(RM)里更多地是介绍 FlexSPI 共性功能,而速度这个性能方面的参数会因平台而异(不同芯片型号之间可能有一定差异),因此这些差异化信息往往会被放在芯片数据手册(DS)里介绍。今天痞子衡以 RT1180 数据手册里关于 FlexSPI 速度方面的纠结性描述为例来聊聊影响 FlexSPI 速度上限的三个关键因子:
一、FlexSPI外设性能设计
从 i.MXRT 家族第一个成员 RT1050 (2018年发布)到最新的 RT1180(2025年发布),其中 FlexSPI 外设的功能设计经历了多次迭代和优化,但是始终坚持了同一个上限性能标准,那就是满足 200MHz SDR/DDR 时序(这里仅指外设本身,但在 MCU 系统里最终性能可能会有损失)。
FlexSPI 外设本身性能上限原则上也算一个影响因子,但考虑到 i.MXRT 家族全系列这个指标都一样,所以我们就不特别指出这个影响因子。
二、清爽的RT3digits数据手册
我们打开 RT500 的 DS(Rev.3),找到 FlexSPI Flash interface 小节,可以清晰地看到 FlexSPI 性能能够达到本身上限,所以这里没有啥疑义。(关于 RX Clock source 选项解释详见痞子衡旧文《i.MXRT中FlexSPI外设采样时钟源》)

这里有必要指出影响 FlexSPI 性能上限的第一个因子,那就是 VDDCORE 电源电压。从下表可以看出,RT500 在不同电压等级下,FlexSPI 的最大时钟频率是不同的:

此外如果有些 FlexSPI Port 没有将 DQS 信号从 PAD 引出,那么最大性能也是达不到的,比如 RT600 PortB。由于这个因子属于特殊情况(更多详见痞子衡旧文《i.MXRT中不支持DQS的FlexSPI引脚组》),这里我们也不将其特别指出。

美中不足的是 RT3digits 系列的数据手册里未发现 I/O AC 参数表(最大频率 fmax, 上升时间 tr, 下降时间 tf 等),这可能是因为 RT3digits 来源于 LPC 平台,而 LPC 系列的数据手册里也找不到 fmax,关于这个 fmax 有什么用,下一节我们会细讲。
三、从纠结的RT1180数据手册引出三个影响因子
在讲 RT1180 之前,我们先简单过一下 RT10xx 系列数据手册,它们都是单核产品,MCU 系统架构相对简单,所以 FlexSPI 性能描述也比较清爽,虽然上限没达到 SDR/DDR 200MHz,但是超频跑也不是完全不可以,恩智浦芯片设计 Margin 一般都会留得比较足。另外 I/O AC 参数表里虽然没有 fmax,但是由于各 PAD 组性能并没有差异,这里我们暂时也没必要进一步讨论。
| MCU型号 | FlexSPIn_MCR0[RXCLKSRC] |||
| MCU型号 |
|-----------------------|----------------------|-----------------------|----------------|
| 0x0 | 0x1 | 0x3 |
| RT1010 | SDR 60MHz, DDR 30MHz | SDR 133MHz, DDR 66MHz | SDR/DDR 133MHz |
| RT1020/1040/1050/1060 | SDR 60MHz, DDR 30MHz | SDR 133MHz, DDR 66MHz | SDR/DDR 166MHz |
现在我们来看双核产品 RT1170/1180,这里数据手册描述就开始变得有点纠结了。从 RT1180 的数据手册(Rev.7)里,我们可以看到一些比较有意思的细节。首先是 PAD 被分类了,有 fmax 208MHz/200MHz 高速 PAD 和 fmax 104MHz 标准 PAD 之分,这是影响 FlexSPI 性能上限的第二个因子,如果 PAD fmax 性能不够,那么 FlexSPI 的最大频率也会受限。

从 RT1180 数据手册里我们看到 FlexSPI parameters 小节里提及的上限性能仍然是 166MHz SDR/DDR,这似乎和 RT1050 它们没啥区别,别着急我们继续往下看:

细心找,你会发现如下 SDR200M 和 DDR200M 的补充表格,这说明 RT1180 实际上是支持 200MHz SDR/DDR 的,但是仅在 FlexSPI1 上(注意 RT1180 有两个 FlexSPI 外设)。这似乎是影响 FlexSPI 速度上限的第三个因子(即 FlexSPI 外设编号),不同编号的 FlexSPI 可能有不同的性能上限,这个结论既对又不对,并不是 FlexSPI 外设本身性能差异,而是不同编号 FlexSPI 在 MCU 系统架构中的位置不同导致的性能差异(与 PAD 之间的 path 长度),这才是真正的第三个影响因子。

因此 RT1180 数据手册里有如下总结,这个总结综合了 FlexSPI 性能全部影响因子,还是比较全面的,看到这里,你应该不会再对数据手册里的描述感到纠结了吧!

至此,i.MXRT中FlexSPI外设速度上限的三个影响因子痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。
