工作需要近期项目用到SPI Flash (具体型号为GD25Q16ETIGR)存储一些数据,动手前觉得应该挺简单的,但实际调试过程中发现Flash芯片对MCU发过来的SPI控制信号始终无动于衷,但是分析后觉得没有问题。后来想起来灵动微MM32F5开发板上就有一颗兼容Flash(W25Q64JV),就考虑借用灵动微MM32F5开发板交叉验证。
虽然开发板上有板载芯片,但是想要跟目前使用主控交叉验证的话需要开发板把相关的IO引出,否则需要手动跳线。仔细阅读灵动微MM32F5开发板原理图,确定开发板把MCU相关引脚通过P12 & P13排针引出来了,这就极大的简化了后续调试的工作。
首先准备验证一下灵动微MM32F5开发板的demo。根据之前安装配置好的开发环境,切换工程到编译-下载-调试,同时利用逻辑分析仪接在G6 G7 A3 等SPI信号脚上,抓取SPI以及控制信号实验一切正常,对比我们使用的MCU的SPI并无不同。
后来通过逻辑分析仪确定CS WP HOLD四根控制信号后发现问题所在,原来SPI Flash CS引脚不能长时间拉低使能,这一点与之前接触的一些SPI器件不同。最后在代码中加入了CS使能功能后flash可以正常使用。所以对不同的器件,使用时候应该特别注意严格遵守datasheet中的信号时序,不能偷懒。