求助一下下,关于w25q128擦除扇区时候的疑问。

2019-08-14 03:37发布

本帖最后由 挣点圆子 于 2015-12-31 20:35 编辑

你可以自己写。读出数据保存在数组里----》擦除这个扇区----》将修改好的数组写回扇区。只需要3个子函数。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
天风海雨
2019-08-14 06:13
1.以上的红 {MOD}代码,我想请问一下w25q128的地址是24位的,secpos=WriteAddr/4096低3位不是应该没有了吗?
答:4096是2的12次方,是4KB,即一个扇区的大小,代码用secpos=WriteAddr/4096就是要确定WriteAddr位于哪一个扇区内。secpos获得的是扇区的编号。

2.W25QXX_Erase_Sector(secpos); 然后直接给这个函数的话不是将原来的地址WriteAddr的低三位去掉再发送。。那是不是擦除的是不是已经不是想擦除的扇区地址呢?
答:即擦除指定的扇区,参数是扇区的编号,扇区的首地址为secpos*4096。

比如:WriteAddr=0X007FFF00  那么secpos是不是等于secpos=0x000007FF呢?但是0X007FFF00  的扇区首地址不是0x007FF000吗?
求帮帮忙解释一下,谢谢了
答:secpos=0x000007FF,该扇区的首地址为secpos*4096=0x007FF000,扇区内偏移地址为4096-(WriteAddr-secpos*4096)=256。

一周热门 更多>