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

2019-08-14 03:37发布

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

你可以自己写。读出数据保存在数组里----》擦除这个扇区----》将修改好的数组写回扇区。只需要3个子函数。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
q546163199
1楼-- · 2019-08-14 04:07
挣点圆子 发表于 2015-12-31 17:59
你可以自己写。读出数据保存在数组里----》擦除这个扇区----》将修改好的数组写回扇区。只需要3个子函数。

我有个问一个就是,为什么擦除地址要乘于4096啊?
天风海雨
2楼-- · 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。
青藤enjoy
3楼-- · 2019-08-14 08:40
天风海雨 发表于 2017-3-27 16:43
1.以上的红 {MOD}代码,我想请问一下w25q128的地址是24位的,secpos=WriteAddr/4096低3位不是应该没有了吗?
...

您好,我想问一下W25Q16,扇区擦除函数,输入的参数是扇区的编号0-511还是24位的字节地址?

一周热门 更多>