新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2016-5-24
- 在线时间
- 5 小时
|
发表于 2017-3-27 16:43:09
|
显示全部楼层
1.以上的红色代码,我想请问一下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。 |
|