痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起

痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起

    正在检查是否收录...
一言准备中...


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是

i.MXRT全系列FlexSPI外设的LUT长度

  事情起源于一个 RT600 客户, 他们读芯片用户手册发现 FlexSPI 外设 LUT 长度为 128 words(这是 RT500/RT10xx/RT1170 上的两倍),他们想尝试用起来,发现后 64 words 不起作用。说实话,痞子衡用了这么久的 FlexSPI 外设,还真没注意到这个细节,原因是 64 words 的 LUT 已经能够支持实现 16 条时序,这对于大部分应用场景都绰绰有余。于是痞子衡找了一块 RT600 开发板测试了一下,发现确实有问题,这应该是 RT600 用户手册上的美丽勘误。借此机会痞子衡就和大家梳理一下 i.MXRT 全系列 LUT 长度与设计:

  • Note: 该勘误存在于 RT600 UM Rev 1.8 以及 SDK v25.06 版本及之前

一、LUT设计差异

  LUT 组件可以说是 FlexSPI 外设最核心的部分,关于其工作原理,详见痞子衡旧文 《从头开始认识i.MXRT启动头FDCB里的lookupTable》。客户在 RT600 手册以及 SDK 里发现的勘误主要是 FlexSPI 结构体原型定义里 LUT 长度 FLEXSPI_LUT_COUNT 被设为了 128,而实际上应该是 64(头文件一般是根据手册内容自动生成的)。

痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起

  LUT 指标除了总长度之外,还有一个重要指标,即单条时序最大长度(也可认为子时序数量),大部分 i.MXRT 上 FlexSPI 单条时序支持的最多子时序为 8 条(每条子时序长度固定 2Bytes),即如下图。

  • Note:这里需要注意,当某条时序中子时序不满 8 条时,剩余空间也不可另作它用,因为 FlexSPI->IPCR1[ISEQID] 里所标示的时序 index 对应得 LUT 里步长单位是时序最大长度。

痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起

  RT700 上外设升级到了 XSPI,其单条时序支持的最多子时序为 10 条,即如下图所示,其余 LUT 用法和 FlexSPI 类似。

痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起

  这里用一个表格做个总结,目前来看 RT1180 最强,支持的时序数量最多,不过对于其它 i.MXRT 也不用慌。如果工程里实际需要的时序大于 16,可以动态更新 LUT 表以分时复用空间,这样实际能实现的时序数量是不限的。

芯片 外设 LUT长度 单Sequence长度 Sequence总数
i.MXRT10xx
i.MXRT1160/1170
i.MXRT500/600
RW612
FlexSPI 64 words 4 words 16
i.MXRT1180 128 words 32
i.MXRT700 XSPI 80 words 5 words 16

二、LUT长度对驱动影响

  当前 SDK 包里的 flexspi 驱动和例程是以 16 条时序来设计的,这对于除了 RT1180 之外的其它 i.MXRT 型号是合适的。而在 RT1180 上,例程里我们只需把 CUSTOM_LUT_LENGTH 改为 128,然后在 customLUT 里添加更多时序实现即可。

  • 例程路径: \SDK\boards\evkmimxrt1180\driver_examples\flexspi\nor
#define CUSTOM_LUT_LENGTH 128 const uint32_t customLUT[CUSTOM_LUT_LENGTH] = { // 时序... }; 

  而至于 fsl_flexspi.c 驱动(V2.7.0及之前),里面和 LUT 相关的就一个如下函数 FLEXSPI_UpdateLUT(),这个函数用于更新 LUT 表,在例程里我们是一次性更新进去,所以参数里的 index 检查没有问题;如果是动态单条更新 LUT,那么函数里面的第一句 assert() 检查就需要为 RT1180 做相应改动。

痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起

  最后还要提一嘴 RT1180 启动头 FCB 结构体定义,flexspi_mem_config_t 里 lookupTable 长度是 64 words,这个不需要更新,虽然 FlexSPI 的能力不止于此,但是 RT1180 BootROM 里就仅支持前 16 条时序用于用户配置。

  至此,i.MXRT全系列FlexSPI外设的LUT长度痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园、CSDN、微信公众号、知乎、与非网、电子技术应用AET、电子星球、51CTO 平台上。

微信搜索"

痞子衡嵌入式

"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起



  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-27019.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.7W+
9
1
2
WAP站长官方

面试官:聊聊RAG的执行流程?

上一篇

学习笔记/DP:wqs 二分概述

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单