SPI Flash的相关API操作Demo详见mspi_quad_example工程下的mspi_quad_example.c文件。注意:开启宏定义#define TEST_QUAD_SPI,即为测试Quad SPI模式读写SPI Flash;如果注释掉该宏,则为单线SPI模式读写SPI Flash。SPI Flash操作成功后,通过J-Link的SWO输出log信息显示操作结果,截图如下
后记:
整理一下调试过程中遇到的一些坑:
1、SDK v2.0与v1.2.12启动代码startup_keil.s作了改动,直接将SDK v1.2.12中调试好的驱动代码放到v2.0中进行编译,导致无法进入MSPI中断服务程序,读取Flash内容时卡死,原因是SDK v2.0中把MSPI中断服务函数名称修改了:void am_mspi0_isr(void)
2、新的片子FM25Q128在初始化过程中无法正常读取和修改状态寄存器,这是因为芯片默认QE=0,芯片处于单线SPI模式,Pin3为WP#脚,Pin7位Hold#/RESET#脚,由于Pin7电压不稳定,或者处于低电平状态,导致芯片进入RESET状态,MSPI无法正确访问Flash状态寄存器,导致读写失败!初始化为SPI后,将MCU连接到SPI Flash的Pin3和Pin7的IO设置为GPIO输出并使能内部上拉,输出高电平,初始化SPI Flash操作过程中,拉高WP#和HOLD#/RESET#管脚,让Flash芯片处于非写保护和RESET/HOLD状态。代码片段示例如下:
文章来源:润欣科技Fortune微信公众号