大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是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(头文件一般是根据手册内容自动生成的)。

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

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

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

  这里用一个表格做个总结,目前来看 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.MXRT全系列FlexSPI外设的LUT长度痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

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

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

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

  1. 痞子衡嵌入式:i.MXRT中不支持DQS的FlexSPI引脚组连接Flash下载与启动注意事项

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT中不支持DQS的FlexSPI引脚组连接Flash下载与启动注意事项. 最近痞子衡在支持一个印度客户,这个客户项目主芯片选择 ...

  2. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列ROM中的FlexSPI驱动API实现IAP. 痞子衡的技术交流群里经常有群友提问: i.MXRT中的FlexSPI驱动 ...

  3. 痞子衡嵌入式:利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT部分型号上新增的FlexSPI Remap功能. OTA升级设计几乎是每个量产客户都绕不开的话题,产品发布后免不了要做固件( ...

  4. 痞子衡嵌入式:原来i.MXRT1xxx系列里也暗藏了Product ID寄存器

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列里暗藏的Product ID寄存器. MCU 厂商在定义一个产品系列时,通常是会预先规划产品发展路线的(即会有一 ...

  5. 痞子衡嵌入式:揭秘i.MXRT600的ISP模式下用J-Link连接后PC总是停在0x1c04a的原因(Debug Mailbox)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT600中的Debug Mailbox实现对JLink调试的影响. 事情缘起痞子衡的同事 - 喜欢打破砂锅问到底的Kerry小 ...

  6. 痞子衡嵌入式:快速定位i.MXRT600板级设计ISP[2:0]启动模式引脚上电时序问题的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种快速定位i.MXRT600板级设计ISP[2-0]启动模式引脚上电时序问题的方法. 我们知道恩智浦i.MXRT600是主打音频市场的 ...

  7. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU特性介绍(2)- RT685EVKA性能实测(Dhrystone)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的性能. 在前面的文章 i.MXRTxxx微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2018 ...

  8. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子 ...

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

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT600的FlexSPI NOR启动的连接方式. 痞子衡前段时间一鼓作气写完了三篇关于i.MXRT1xxx系列Flex ...

  10. 痞子衡嵌入式:轻松为i.MXRT设计更新Segger J-Link Flash下载算法文件

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件. 想要在Flash中调试,基本是离不开Flash下载算法的,毕 ...

随机推荐

  1. 将数据导出 Excel 并异步发送到指定邮箱:一次性能优化实战

    使用 Spring Boot 实现 Excel 导出 + 邮件异步发送功能,解决接口阻塞问题 一.背景介绍最近我在开发一个跑团管理系统的数据导出功能,需求是将用户查询的成员信息.跑量统计等数据导出为 ...

  2. quartz 读取xml文档执行任务

    xml 配置 <?xml version="1.0" encoding="UTF-8"?> <job-scheduling-data xmln ...

  3. .net core workflow流程定义

    .net core workflow流程定义 WikeFlow官网:http://www.wikesoft.com WikeFlow学习版演示地址:http://workflow.wikesoft.c ...

  4. C++11——右值引用&完美转发

    总而言之,右值引用,完美转发,std::move()都是为了在程序运行过程中,避免变量多次重复的申请和释放内存空间,使用移动语义将申请的空间通过这几种方式进行循环使用,避免重新开辟新空间和拷贝浪费算力 ...

  5. 在windows server中安装docker

    windows server 建议选择win10系统. 首先要下载wsl2: 主要参考微软官方文档:https://learn.microsoft.com/en-us/windows/wsl/inst ...

  6. footer固定在页面底部的几种方法(转载)

    几种非常不错的方法,收藏学习:原文见https://blog.csdn.net/m0_37070714/article/details/77587753 方法一:footer高度固定+绝对定位 < ...

  7. Java从小白到老白⑥

    一. 1.抽象类vs接口 相同 两者都不能实例化,不能new操作 不同 抽象类abstract 接口interface 抽象类可以用部分方法实现 接口所有方法不能有实现 一个类只能继承(extends ...

  8. WebSocket 实时通信(二)

    WebSocket 即时消息推送系统 1. 项目概述 1.1 项目背景 在现代 Web 应用中,实时通信功能越来越重要,例如在线聊天.实时通知.股票行情更新等.本项目基于 WebSocket 技术,构 ...

  9. SynchronizedHashMap和ConcurrentHashMap的区别

    ConcurrrentHashMap   ConcurrentHashMap 使用锁分离技术来保证在多线程下的性能.它每次锁住一个桶,默认将 hash 表分为 16 个桶,诸如put和remove 等 ...

  10. 代码随想录第四天 | 链表part02

    两两交换链表中的节点 用虚拟头结点,这样会方便很多. 本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点. 题目链接/文章讲解/视频讲解: https: ...