SPI中关于扇区的地址疑问,数据手册好像也没有相关的操作。。。。

2019-07-21 03:43发布

//擦除一个扇区 //Dst_Addr:扇区地址 0~511 for w25x16 //擦除一个山区的最少时间:150ms void SPI_Flash_Erase_Sector(u32 Dst_Addr)    {        Dst_Addr*=4096;     SPI_FLASH_Write_Enable();                  //SET WEL       SPI_Flash_Wait_Busy();        SPI_FLASH_CS=0;                            //使能器件        SPI2_ReadWriteByte(W25X_SectorErase);      //发送扇区擦除指令      SPI2_ReadWriteByte((u8)((Dst_Addr)>>16));  //发送24bit地址         SPI2_ReadWriteByte((u8)((Dst_Addr)>>8));        SPI2_ReadWriteByte((u8)Dst_Addr);       SPI_FLASH_CS=1;                            //取消片选               SPI_Flash_Wait_Busy();     //等待擦除完成 } 
不明白上面代码的红 {MOD}部分,为什么扇区的地址是0-511的??如何理解,或者有什么资料可以加强对flash的理解的。。谢谢、、、
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
jiaozhu
1楼-- · 2019-07-21 05:17
每次擦除大小是4KB,所以出现了4096
Dst_Addr:需要擦除的块编号,0~511是根据你的FLASH的大小定的。
STM32初学菜鸟
2楼-- · 2019-07-21 09:13
回复【2楼】jiaozhu:
---------------------------------
0~511 for w25x16 ,这里的理解是:w25q64的块是0-127,w25q128的块是0-255,w25q256的块是0-511,是这样的吗???
正点原子
3楼-- · 2019-07-21 10:11
回复【3楼】STM32初学菜鸟:
---------------------------------
一个扇区4K字节。
然后多少个扇区,自己去计算。
jiaozhu
4楼-- · 2019-07-21 13:30
 精彩回答 2  元偷偷看……
STM32初学菜鸟
5楼-- · 2019-07-21 16:29
回复【4楼】正点原子:
---------------------------------
W25Q64:一共是8M字节=8*1024*1024=8388608(Byte),分为128块(64K),每一块有分为16个扇区(4K),所以扇区的个数是:128*16=2048(个),那么上面函数的参数Dst_Addr的范围就是0-2047,假如要擦除第1000个的扇区,那么这个扇区的字节起始就是1000*4096=4096000,因此把4096000先发送最高8位,次高8位,再到最低8位,然后W25Q64就从4096000开始往下擦除4K大小的数据空间,计算地址的时候是使用字节来计算的,是怎样理解的吗?原子哥。。。。
八度空间
6楼-- · 2019-07-21 16:34
楼主都不看数据手册的么
不是有这么一个图么



一周热门 更多>