测试过程发现64KB以后的 FLASH数据不正常,测试发现是块擦除有问题,也就是4KB擦除有问题,
如下为网络上的资料,注意是写使能开了过后,这个位就自动置位为0,需要重复开启。
WEL, Write Enable Latch
只读位. 当执行了一个"写使能"指令后, WEL置1, 表示可以写入了. "写禁止"时, WEL为0.
"写禁止", "页编程", "扇区擦除", "块擦除", "整片擦除", "写状态寄存器", 执行完这些操作之后, WEL 自动被清0, 回到禁止写入状态.
上面的话意思,只要擦除完成 WEL位就复位了,所以下次操作的时候需要重新开启。而自己的代码BUG,正是这个原因。
总结擦除顺序,开启写使能,拉低片选,发送擦除命令,发送需要擦除的块所在的地址,拉高片选,这个时候就开始自己执行擦除动作了,然后可以读取WIP位来确认是不是擦除完成,为1 就是忙,为0就是操作完成,最后操作完成WEL也就是写使能复位。