SPI flash 读,写,擦除等问题

flash的擦除一个扇区之后,这个扇区全部变成0xFF。这样和主机直接向从机写0xFF,这样写入从机flash的那个扇区也全部变成了0xFF。有什么区别?根据spi的操作... flash的擦除一个扇区之后,这个扇区全部变成0xFF。这样和主机直接向从机写0xFF,这样写入从机flash的那个扇区也全部变成了0xFF。有什么区别?根据spi的操作,调用void SPI_Flash_Read(u8* pBuffer,u32ReadAddr,u16 NumByteToRead) 的时候,主机向从机不断发送0xFF,最后,从机内数据变成了0xFF,从机的数据,同时转移到了主机,被存到了pBuffer里面。调用下面这个函数的作用,怎么和擦除的效果一样。怎么理解?
void SPI_Flash_Read(u8* pBuffer,u32ReadAddr,u16 NumByteToRead)
{
u16 i;
SPI_FLASH_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[i]=SPI2_ReadWriteByte(0XFF); //循环读数 连续的读出来
}
SPI_FLASH_CS=1; //取消片选
}
展开
 我来答
GUEL86
推荐于2017-11-27 · TA获得超过5855个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2687万
展开全部
flash的擦除一个扇区,是把这个扇区全部变成0xFF。
flash的数据写,是在原数据为 0xFF 的前提写入新数据,
如果原数据为 0x00 就不能写入新数据,(只有擦除后才能 写入新数据)
追问
擦除和直接向扇区写0xFF效果那不是一样啦?都是将扇区变成0XFF,我很不解。
如果原数据为0x00,要写数据,在写新数据之前,我要判断原数据是否全为0XFF,我直接调用上图void SPI_Flash_Read(u8* pBuffer,u32ReadAddr,u16 NumByteToRead) 这个函数,把原数据读出来的,但是这个过程中就有向flash写0XFF的作用。不是和擦除的效果一样?
追答
如果原数据为0x00,要写数据0XFF是不可能的,必须先擦除后才能写新数据,

向扇区写0xFF是没有意义的,(这是flash的特性决定的)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式