本文主要是对近期学习flexspi的一个大致总结
对于imxrt1050系列,只提供了一个flexspi,而手册中说可接4个设备,听着很不错,但其实有个很大限制,必须是同时钟频率的。因为只有一个外设,其中的时钟配置也只有一个时钟配置。而且对于AHB 和 IP 两种访问方式,同一时间只能一个有效,同时在write flash的时候,这是个费时的操作,所以你还得关闭所有中断或者用dma方式,但是库里面好像没有对应的dma操作函数。对于同一组接口的,如A1和A2,B1和B2,手册上说是要保持一致,我理解的是要两个一样的flash。如果要用code 和data flash,个人感觉还不如直接一个大容量的flash,然后分区存放code和data。当然这得利用库里面的romapi来实现。对于早期的库是没有romapi的接口的这个自己注意下。对于调用romapi write data的时候需不需要关中断,还有待进一步学习。
1.连接方式
这个可以参考这篇博客 https://www.cnblogs.com/henjay724/p/12375942.html,里面说的很详细。
2.使用原理
可以参考 AN12564 这个文档,里面有说多设备的初始化方法
注意,如果利用库的flexspi——init 函数来初始化时,多半你的程序会在这里挂掉,因为只有一个flexspi的外设。你也可以尝试把初始化代码搬运到ram执行,理论上是可行的,因为你的程序执行不需要去读code flash。
写流程
这里只列举了初始化和写的流程图,文档中还有很多细节这里没提到。
总之个人看后觉得要了解flexspi 看上面提到的那个连接方式介绍和AN12564这个文档,这两个说的已经比较清楚的了