微控制器外置QSPI Flash选型的注意事项

描述

 总结

为了扩展微控制器可用的 Flash 空间,用户可以使用 QSPI 接口连接 QSPI Flash;为了让用户能尽量像使用片内 Flash 那样下载和运行程序,减少额外操作,需要有对应的下载算法与相应的 2nd Bootloader。

本文以 PLUS-F5270 开发板为例(该开发板搭载的 MM32F5277E9PV 微控制器具备 QSPI 接口,且板载 W25Q64JVISQ QSPI Flash 芯片),介绍了 MM32F5 系列芯片的 QSPI 引脚,以及与 QSPI Flash 通信的过程,在 MDK 平台上实现客制化的下载算法,简单的 2nd Bootloader,并以 MindSDK 的 hello_world 样例工程为例,进行少量的修改,使其能够存储在 QSPI Flash 上,最终验证了微控制器能够运行存储在QSPI Flash 上的应用程序。

 注意事项

外置 QSPI Flash选型

在进行 QSPI Flash 的选型过程中,尤其要关注其工作电压的范围,部分 QSPI Flash 的额定工作电压为 1.8V ,若在3.3V 电压下,是无法正常工作的,反之亦然。

除了电压范围外,部分 QSPI Flash 芯片在默认情况下,处于非四线模式,原本 QSPI 的 D2 & D3 引脚会被用于写保护使能和 HOLD 使能,使能四线模式的方法,需参照使用的 QSPI Flash 芯片手册进行操作。

QSPI Flash 与微控制器连接时,为了满足阻抗匹配的要求,其信号线上需要串联22Ω或33Ω的电阻,否则,在与 QSPI Flash 通信时,会发现读到的数据与期望的数据可能不一致。

生成 FlashLoader 时出现显示路径不同的warning

在配置 FlashLoader 的 MDK 工程文件时,在 Options for Target ->  C/C++(AC6)  -> warnings 选项下,若选择 All warnings 选项,在build时会出现 warning:

 

  FlashDev.c(25): warning: non-portable path to file '"..FlashOS.h"'; specified path differs in case from file name on disk [-Wnonportable-include-path]
  #include "..FlashOS.H"        // FlashOS Structures
           ^~~~~~~~~~~~~~
           "..FlashOS.h"

 

将该配置选项修改为 AC5-like Warnings 后,样例build无问题。

 

  Program Size: Code=4088 RO-data=4256 RW-data=4 ZI-data=0  
  After Build - User command #1: cmd.exe /C copy "ObjectsMM32F5270_QSPI_FlashLoader.axf" "..MM32F5270_QSPI_FlashLoader.FLM"
  已复制         1 个文件。
  ".ObjectsMM32F5270_QSPI_FlashLoader.axf" - 0 Error(s), 0 Warning(s).

 

生成下载算法时出现 L6305 warning

查看整个下载算法工程文件,会发现当前工程中没有启动文件与主函数,默认只有几个功能函数,在这种情况下,编译会爆出下面的警告:

 

  L6305W: Image does not have an entry point. (Not specified or not set due to multiple choices.)

 

但下载算法本身是不需要启动文件和主函数的,只在下载代码时由调试器调用下载算法中的功能,因此,需忽略该 warning。选择 Options for Target ->  Linker` -> Misc controls选项,修改该选项内容为 --diag_suppress L6305 。

修改源文件后下载该文件出现无法加载闪存编程算法的问题

对比所生成的下载算法大小与工程文件的`Options for Target -> Debug -> settings -> Flash Download -> RAM for Algorithm -> Size 选项下配置的算法大小,发现当前下载算法大于 Size 所配置的大小,因此,需适当调大 Size 的大小,例如由0x1000增加到0x2000。

在实现下载算法时,为了保证下载算法足够小,其代码量不要过多,需删除未使用的函数。

应用程序不能出现影响 QSPI 使用的代码

需要检查应用程序的代码,对可能影响到 QSPI 的代码进行调整,例如 GPIO 的配置,GPIO 时钟的复位,以及直接对 QSPI 的操作。

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分