对于W25QXX状态寄存器(SR)的Busy位常常牵扯到W25QXX_Wait_Busy();这个忙碌等待函数什么时候写,什么时候不写的问题。
首先我们需要明白Busy位什么时候清零和置一:
W25Q18的Busy位是用于指示设备是否正在执行某个操作,应用程序可以通过读取W25Q18的状态寄存器中的Busy位来检查设备是否处于忙碌状态,并等待其完成操作。
具体地说,W25Q18的状态寄存器(SR)的第0位是Busy位。当W25Q18需要进行内部擦除、编程或擦除较大的数据时,它会将Busy位设置为“1”,以指示在该操作完成之前不能进行其他任何操作。当W25Q18完成操作后,它会自动将Busy位清零,并准备下一个操作。
其次,我们也要知道W25QXX_Wait_Busy();函数的作用是等待Busy位清零。
//等待空闲 void W25QXX_Wait_Busy(void) { while((W25QXX_ReadSR()&0x01)==0x01); // 等待BUSY位清空 }
然后总结可以知道,一般是在MCU指令下达之后 ,再进行下一个指令之前,需要写一个W25QXX_Wait_Busy();函数,等待指令完成之后(等待Busy位清零后)再执行下一条指令。尤其是对于耗时比较长的指令!