网上的关于读写NAND Flash的文章中有如下两个宏定义:
#define NF_WAITRB() {while(!(rNFSTAT&(1<<0)));} //等待nandflash不忙
#define NF_DETECT_RB() {while(!(rNFSTAT&(1<<2)));} //等待RnB信号变高,即不忙
这两个宏定义都是等待nandflash就绪,但数据手册中对rNFSTAT[2]的描述为:
When RnB low to high transition is occurred, this value set
and issue interrupt if enabled. To clear this value write ‘1’.
0: RnB transition is not detected
1: RnB transition is detected
Transition configuration is set in RnB_TransMode
(NFCONT[8]).
那么为什么这两者都能检测就绪呢?请高手指教。
------解决方案--------------------------------------------------------
while(!(rNFSTAT&(1<<0))); //等待nandflash不忙
这反映的是忙与不忙的状态,不忙,电平始终为高。
while(!(rNFSTAT&(1<<2))); //等待RnB信号变高,即不忙
这是反映是否有低到高的变化。如果在出现高电平后,你写1清零该位后,则即使现在不忙,电平也还是低的。