痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.2)- FlexSPI NOR连接方式大全(RT1060/1064(SIP))
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT1060/1064(SIP)两款MCU的FlexSPI NOR启动的连接方式。
上一篇文章《FlexSPI NOR启动连接方式(RT1015/1020/1050)》 写完之后,痞子衡发给了做线上客户支持的同事们审阅,受到了同事们的好评,同事们希望这个系列能把所有i.MXRT家族都写一遍,于是便有了今天的文章。特别提醒阅读本文时需要有上一篇文章的基础,因为有一些重复的内容本文不会赘述。
今天的主角是i.MXRT1060和i.MXRT1064,说是两款不同的芯片,其实本质上是一款,因为i.MXRT1064是i.MXRT1060的SIP(System In a Package)版本,简单的说就是 i.MXRT1060 + 内置QSPI NOR Flash (4MB, 108MHz) = i.MXRT1064。但要真说是一款芯片吧,其实它们确实是两款不同的芯片,我们今天要聊到的FlexSPI NOR启动特性(尤其是连接方式)上两者又不一样。
i.MXRT1060是紧接着i.MXRT1050之后推出的增强型,在IP数量上进一步增多,尤其是本文重点关注的IP - FlexSPI,i.MXRT1060内部集成了两个FlexSPI模块(均是双通道8bit),相比于i.MXRT1050的单FlexSPI模块,i.MXRT1060在双Flash启动连接的支持上要更丰富一些。而i.MXRT1064因为有内置Flash,其在单Flash启动方式则是定死的,永远从内部Flash启动,无法选择从外部Flash启动。
一、关于Pin2Pin兼容
我们知道i.MXRT1050和i.MXRT1060均是BGA196封装,而且它们是Pin2Pin兼容,这意味着只要你的代码里使用的资源在两个芯片上都存在,那么这个代码原则上既可以跑在i.MXRT1050上,也可以跑在i.MXRT1060上。
你肯定会觉得奇怪,明明i.MXRT1060比i.MXRT1050多了一些IP模块(比如FlexSPI2),为什么还能做到Pin2Pin兼容,那FlexSPI2模块的Pinmux跑哪里去了?且听痞子衡慢慢解释,Pinmux分配都在IOMUXC模块里,i.MXRT1050上每个GPIO共支持ALT0-ALT7共8个选项,i.MXRT1060上关于ALT0-ALT7的定义与i.MXRT1050是一模一样的,这是Pin2Pin兼容的根本原因,但i.MXRT1060上部分GPIO还拓展了ALT8和ALT9,那些新增的IP模块的Pinmux都在ALT8-ALT9上。
下表示例了GPIO_EMC[11:9]的ALT定义,可以看到ALT0-ALT7的定义在两个芯片上是一样的,但是i.MXRT1060上多了ALT8定义,这正是FlexSPI2的部分Pinmux。
二、涉及FlexSPI引脚
2.1 BootROM指定
前面讲了,既然i.MXRT1060与i.MXRT1050是Pin2Pin兼容的,那么它们的BootROM在FlexSPI NOR启动的支持上是不是也一样的呢?你猜对了,虽然i.MXRT1060有两个FlexSPI模块,但是它的BootROM仅指定了从FlexSPI1启动,与i.MXRT1050是完全一致的。
我们可以在i.MXRT1060芯片参考手册System Boot这一章节找到BootROM指定的FlexSPI NOR引脚,痞子衡整理如下:
下表适用于i.MXRT1060(适用全系列封装):
i.MXRT1064内置了一片QSPI Flash,这片Flash固定连在FlexSPI2 PortA上,具体PAD是在GPIO_SPI分组里,但是你在芯片手册里根本找不到GPIO_SPI分组,因为这是芯片封装内部的I/O,没有引到外部BGA196封装上。为了充分利用片内Flash,其BootROM指定了仅从片内Flash所连接的FlexSPI2启动。
下表适用于i.MXRT1064(适用全系列封装):
2.2 BootROM未指定
在此也列出不在BootROM指定的FlelxSPI NOR引脚,方便后续设计双Flash时参考。
下表适用于i.MXRT106x(适用全系列封装):
三、单Flash连接方式
3.1 对于i.MXRT1060(3种)
参考上一篇文章《FlexSPI NOR启动连接方式(RT1015/1020/1050)》 的 《二、单Flash连接方式(3种)》章节,在这方面,i.MXRT1060与i.MXRT1050是一样的。
3.2 对于i.MXRT1064(1种)
单Flash连接方式对于i.MXRT1064来说就是一种,直接使用内部QSPI Flash,用户板级设计根本不需要再考虑外挂Flash。这也是i.MXRT1064相比i.MXRT1060的最大意义所在。
四、双Flash连接方式
i.MXRT1050/1020仅含单FlexSPI模块,最大可以同时挂4片QSPI Flash,i.MXRT106x的两个FlexSPI模块当然理论上可以同时挂8片Flash。仅考虑接两片Flash的话,选择真的是太多了。
4.1 对于i.MXRT1060(18+4种)
参考上一篇文章《FlexSPI NOR启动连接方式(RT1015/1020/1050)》 的 《三、双Flash连接方式(18种)》章节,在这方面,i.MXRT1060也同样支持i.MXRT1050所支持的18种连接方式。需要注意的是这18种连接均是基于FlexSPI1。
除了上述18种连接外,在i.MXRT1060上还可以实现FlexSPI1和FlexSPI2上各连接一个Flash,这是i.MXRT1060相比i.MXRT1050的独特优势,使用两个FlexSPI模块可以天然解决在Code Flash中原地执行代码去擦写Data Flash这个难题。
所在在i.MXRT1060上又新增了如下4种组合方式:
Num | FlexSPI1 1st Option BootROM指定 |
FlexSPI2 BootROM未指定 |
||||||
---|---|---|---|---|---|---|---|---|
A_SS0 | A_DATA[3:0] A_SCLK |
A_SS0 | A_SS1 | A_DATA[3:0] A_SCLK |
B_SS0 | B_SS1 | B_DATA[3:0] B_SCLK |
|
1 | ✔ Code |
✔ | ✔ Data |
✔ | ||||
2 | ✔ Code |
✔ | ✔ Data |
✔ | ||||
3 | ✔ Code |
✔ | ✔ Data |
✔ | ||||
4 | ✔ Code |
✔ | ✔ Data |
✔ |
4.2 对于i.MXRT1064(3+16种)
i.MXRT1064片内Flash固定为Code Flash,因此我们只需要外挂一片Data Flash就行。所以对于i.MXRT1064来说,双Flash方案需要从头设计,有了前面的基础,咱们按葫芦画瓢吧:
Note:下面组合方案中第17种方案,因为涉及跟内部QSPI共信号,所以外挂Flash需跟内部QSPI Flash型号保持一致。恩智浦并没有公布i.MXRT1064内部QSPI具体型号,但其实这也不是秘密,自己网上搜一搜相关信息吧,痞子衡就不在这里透露了。
Num | FlexSPI 1st Option | FlexSPI 2nd Option | FlexSPI2 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BootROM未指定 | BootROM指定 | BootROM未指定 | |||||||||||||||||
A_SS0 | A_SS1 | A_DATA[3:0] A_SCLK |
B_SS0 | B_SS1 | B_SCLK | B_DATA[3:0] | A_SS1 | B_SS0 | A_SS0 | A_SS1 | A_DATA[3:0] A_SCLK |
B_DATA[3:0] | A_SS0 | A_DATA[3:0] A_SCLK |
A_SS1 | B_SS0 | B_SS1 | B_DATA[3:0] B_SCLK |
|
1 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
2 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
3 | ✔ | ✔ Data |
✔ Code |
✔ | |||||||||||||||
4 | ✔ | ✔ Data |
✔ Code |
✔ | |||||||||||||||
5 | ✔ | ✔ Data |
✔ Code |
✔ | |||||||||||||||
6 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
7 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
8 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
9 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
10 | ✔ Data |
✔ | ✔ Code |
✔ | |||||||||||||||
11 | ✔ Data |
✔ | ✔ | ✔ Code |
✔ | ||||||||||||||
12 | ✔ Data |
✔ | ✔ | ✔ Code |
✔ | ||||||||||||||
13 | ✔ | ✔ | ✔ Data |
✔ Code |
✔ | ||||||||||||||
14 | ✔ Data |
✔ | ✔ | ✔ Code |
✔ | ||||||||||||||
15 | ✔ Data |
✔ | ✔ | ✔ Code |
✔ | ||||||||||||||
16 | ✔ | ✔ Data |
✔ | ✔ Code |
✔ | ||||||||||||||
17 | ✔ Code |
✔ | ✔ Data |
||||||||||||||||
18 | ✔ Code |
✔ | ✔ Data |
✔ | |||||||||||||||
19 | ✔ Code |
✔ | ✔ Data |
✔ |
至此,恩智浦i.MX RT1060/1064(SIP)两款MCU的FlexSPI NOR启动的连接方式痞子衡便介绍完毕了,掌声在哪里~~~
痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.2)- FlexSPI NOR连接方式大全(RT1060/1064(SIP))的更多相关文章
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间. 本篇是i.MXRT1170启动时间评测第三弹了,前两篇分别给大家评 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1010的FlexSPI NOR启动的连接方式. 在写完 <FlexSPI NOR启动连接方式(RT1015/ ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NOR启动时间. 痞子衡刚刚拿到i.MXRT1170 B0版本的芯片,迫不及待地在上面跑了 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.1)- FlexSPI NOR连接方式大全(RT1015/1020/1050)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1015/1020/1050三款MCU的FlexSPI NOR启动的连接方式. 由于i.MXRT内部没有非易失性存储 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.B)- FlexSPI NOR连接方式大全(RT1160/1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1160/1170两款MCU的FlexSPI NOR启动的连接方式. 这个 i.MXRT FlexSPI NOR 启动 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT架构. Bootloader是嵌入式MCU开发里很常见的一种专用的应用程序,在一个没有Boo ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(9)- KBOOT特性(IntegrityCheck)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之完整性检测(Integrity Check)特性. Application完整性检测是非常 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(2)- KBOOT形态(ROM/Bootloader/Flashloader)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT形态. 痞子衡在前一篇文章里简介了 KBOOT架构,我们知道KBOOT是一个完善的Bootl ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...
随机推荐
- 【2】从零认识中心极限思想-e往无尽
目录 e往无尽 单调性.有界性 \(e^{-x^2}\)的积分性质 函数列的近似 傅里叶的方案 三角函数系的正交性 傅立叶展开 傅立叶展开式的指数形式 e往无尽 无论是学高数,还是学习数分,我们在讲到 ...
- Perl:理解正则中“.”可匹配出回车符(“\n”)外任意字符的例子,配合 $^I 关键字
要把下面文件的内容改了, Program name: graniteAuthor: Gilbert BatesCompany: RockSoftDepartment: R&DPhone: +1 ...
- 吴裕雄--天生自然python学习笔记:python 用pygame模块制作 MP3 音乐播放器
利用 music 对象来制作一个 MP3 音乐播放器 . 应用程序总览 从歌曲清单中选择指定的歌曲,单击“播放”按钮可开始播放, 在播放 xxx 歌曲”的信息. 歌曲播放的过程中,可以暂停.停止,也可 ...
- 算法笔记4.2哈希 问题 A: 谁是你的潜在朋友
题目描述 "臭味相投"--这是我们描述朋友时喜欢用的词汇.两个人是朋友通常意味着他们存在着许多共同的兴趣.然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多.幸运的是,你意 ...
- android ijkplayer简单使用
class VideoPlayer : FrameLayout, TextureView.SurfaceTextureListener{ private var url:String? = null ...
- 《运筹学基础及应用》习题1.1(b),1.1(c),1.2(a)
用图解法求解下列线性规划问题,并指出问题具有惟一最优解,无穷多最优解,无界解还是无可行解. 习题1.1(b):$\max z=3x_1+2x_2$$$s.t\begin{cases} 2x_1+x_ ...
- Linux_更改主机名
老师上linux课截图必须改主机名字,每个人一个代号,所以就写篇这个咯 查看主机名 [root@localhost.localdomain Desktop]# hostname localhost.l ...
- interrupt 停止线程
该方法只是给线程设置了一个停止的标记 并不是真正的立即停止线程 interrupted() 测试当前线程是否已经中断 isInterrupted() 测试线程是否已经中断 停止线程的方法: .异常法 ...
- js各继承方法的优缺点
在js中有很多种继承的方法,下面总结这些方法的优缺点. ####1.原型链继承 优点: 非常纯粹的继承关系,实例是子类的实例,也是父类的实例 父类新增原型方法/原型属性,子类都能访问到 简单,易于实现 ...
- 使用Rancher pipeline搭建基于容器的CICD
CICD概述 CI-持续集成(Continuous Integration):频繁地将代码集成到主干的一种开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错 ...