X-QSPI应用笔记

1. 基本功能介绍

  • X-QSPI的X代表的是eXecute-in-place,表示可以执行代码的意思,即代码可以在X-QSPI相连接的NOR Flash得到执行;与之相对的是外部QSPI,只能用于数据存储访问,不能存放和执行代码;为了实现执行代码的功能,X-QSPI与外部QSPI功能实现上存在差异,不能混用。

  • 为了加速代码的命中和执行效率,X-QSPI设计了指令缓存机制,均带休眠保持功能。不同芯片的Cache缓存空间大小如下: - GR551x:8 KB - GR5525:8 KB - GR5526:8 KB - GR533x:8 KB

  • 多款系列芯片均提供了内部集成1 Mbytes NOR Flash的封装型号,可用于存放代码和小量数据。当1 Mbytes型号不满足产品设计需求时,可以使用各芯片的外扩X-QSPI Flash版本封装。可外扩Flash的能力如下:

    • GR551x:可外扩16 Mbytes X-QSPI Flash空间,但只有低8 Mbytes支持 XIP寻找,高8 Mbytes需要采用寄存器寻址模式,不用于存放代码,只用于存放数据

    • GR5525:可外扩16 Mbytes X-QSPI Flash空间,均支持XIP寻址

    • GR5526:暂无外扩X-QSPI Flash的芯片封装

    • GR533x:可外扩16 Mbytes X-QSPI Flash空间,均支持XIP寻址

  • 不同芯片主频与X-QSPI最高运行频率分别为:

    • GR551x:64 MHz / 64 MHz

    • GR5525:96 MHz / 64 MHz

    • GR5526:96 MHz / 64MHz

    • GR533x:64 MHz / 64 MHz

2. 应用笔记

  • X-QSPI在运行程序过程中,如果对Flash执行写入操作,会关闭系统的全局中断,而全局中断的关闭会影响Bluetooth LE的时序逻辑。请参考应用笔记部分《Bluetooth LE与执行代码Flash冲突处理》,了解针对此种情况的程序优化。

  • GR5515I0NDA使用外部X-QSPI Flash,由于不同厂商和型号的Flash具有不同的功能和使用限制,用户可参考《GR5515I0NDA外部Flash选型指导手册》,根据产品实际情况进行合理选型。手册提供了外部扩展Flash的指令和电气兼容性要求,并推荐了建议选型列表,可以从官网搜索下载。其他系列芯片也可以经验性参考此文档。

  • 如用户需要实现特殊的Flash指令,需要注意XIP和QSPI状态的转换,可参考SDK\components\libraries\hal_flash\hal_exflash_user_operation.c文件中示例代码自行实现。由于Flash操作期间无法执行Flash上的代码,操作函数前注意添加SECTION_RAM_CODE宏,使其在SRAM上执行。