在原子SPI通信程序中发现了一个小错误

2019-07-25 12:21发布

在使用原子哥的SPI通信中的 W25QXX_Write()函数时发现了有一处错误,第一次可以进行正确的读写,可当我第二次改变写的数据,并往同一地址写的时候就出现了乱码,经过查找发现了一个问题,下面是截取的一段代码
    W25QXX_Read(W25QXX_BUF,secpos*4096,4096);
        for(i=0;i<secremain;i++)
        {
            if(W25QXX_BUF[secoff+i]!=0XFF)break;     
        }
        if(i<secremain)//&#208;è&#210;&#170;&#178;&#193;&#179;&#253;
        {
            W25QXX_Erase_Sector(secpos);       //此处错误
            for(i=0;i<secremain;i++)   
            {
                W25QXX_BUF[i+secoff]=pBuffer;
            }
            W25QXX_Write_NoCheck(W25QXX_BUF,secpos*4096,4096);

       代码的意思是当检测到写入的扇区内有数据的时候,执行扇区删除操作,W25QXX_Erase_Sector()函数传递进去的参数应该是一个24位的地址,可是在上面的程序中传进去的不是一个地址,而是secpos=WriteAddr/4096;,即第几个扇区,所以错误的地方应该改为W25QXX_Erase_Sector(secpos*4096);  

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。