论坛元老
 
- 积分
- 3682
- 金钱
- 3682
- 注册时间
- 2017-9-19
- 在线时间
- 306 小时
|
1金钱
新人提问,各位大神好,我最近在学习战舰V3的SPI实验,其中有一个函数是读数据函数,void W25QXX_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead) {
u16 i;
W25QXX_CS=0; //使能器件
SPI2_ReadWriteByte(W25X_ReadData); //发送读取命令
SPI2_ReadWriteByte((u8)((ReadAddr)>>16)); //发送24bit地址
SPI2_ReadWriteByte((u8)((ReadAddr)>>8));
SPI2_ReadWriteByte((u8)ReadAddr);
for(i=0;i<NumByteToRead;i++)
{
pBuffer=SPI2_ReadWriteByte(0XFF); //循环读数
}
W25QXX_CS=1;
}
然后我看到芯片手册中关于读数据有这样一句话,If a Read Data instruction is issued while an
Erase, Program or Write cycle is in process (BUSY=1) the instruction is ignored and will not have any
effects on the current cycle.
这句话的意思应该是BUSY位为1的时候,读数据的指令就会被忽略,我感觉那在上面的读数据函数中是不是应该加上等待空闲函数:
void W25QXX_Wait_Busy(void)
{
while((W25QXX_ReadSR()&0x01)==0x01);
}
可是为什么实际却不需要加呢?
|
|