W25Qxx覆盖存储

2019-07-21 03:00发布

W25Qxx可以覆盖存储,无需擦除后存储?? 自己做了实验,把战舰板 汉字显示的FLASH的写程序中的判断擦除 注释掉,第一次烧录程序因为w25qxx中都为空,所以可以写入字库,这肯定的,然后我按key-up键,发现字库依然能更新?我已经把w25qxx (flash)的写函数中的擦除程序段给注释掉了,第二进行字库更新不是w25qxx里面字库位置已经有数据,怎么没擦除还能写入字库信息呢??
void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)  
{
 u32 secpos;
 u16 secoff;
 u16 secremain;   
 // u16 i;     secpos=WriteAddr/4096;//???????· 0~511 for w25x16
 secoff=WriteAddr%4096;//??????????????
 secremain=4096-secoff;//???????à?????ó??    if(NumByteToWrite<=secremain)secremain=NumByteToWrite;//???ó??4096??×???
 while(1)
 { 
//  SPI_Flash_Read(SPI_FLASH_BUF,secpos*4096,4096);//??????????????????
//  for(i=0;i<secremain;i++)//???é????
//  {
//   if(SPI_FLASH_BUF[secoff+i]!=0XFF)break;//?è??????    
//  }
//  if(i<secremain)//?è??????
//  {
//   SPI_Flash_Erase_Sector(secpos);//????????????
//   for(i=0;i<secremain;i++)    //????
//   {
//    SPI_FLASH_BUF[i+secoff]=pBuffer;  
//   }
//   SPI_Flash_Write_NoCheck(SPI_FLASH_BUF,secpos*4096,4096);//????????????  //  }else
  SPI_Flash_Write_NoCheck(pBuffer,WriteAddr,secremain);//?????­????????,?±?????????????à????.       
  if(NumByteToWrite==secremain)break;//?????á????
  else//???????á??
  {
   secpos++;//???????·??1
   secoff=0;//??????????0         pBuffer+=secremain;  //????????
   WriteAddr+=secremain;//?????·????   
      NumByteToWrite-=secremain;    //×?????????
   if(NumByteToWrite>4096)secremain=4096; //???????????????????ê
   else secremain=NumByteToWrite;   //?????????????????ê??
  } 
 };   
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。