今天测试开发板的W25Q16(16Mbit--Flash)写一篇文章备忘一下
先说一下容量的单位
计算机存储单位一般用B,KB、MB、GB、TB、PB、EB、ZB、YB、BB来表示,它们之间的关系是:
位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。 字节 byte:8个二进制位为一个字节(B),最常用的单位。
1KB(Kilobyte 千字节) = 2^10 B = 1024 B;
1MB(Megabyte 兆字节) = 2^10 KB = 1024 KB = 2^20 B;
1GB(Gigabyte 吉字节) = 2^10 MB = 1024 MB = 2^30 B;
1TB(Trillionbyte 太字节) = 2^10 GB = 1024 GB = 2^40 B;
1PB(Petabyte 拍字节) = 2^10 TB = 1024 TB = 2^50 B;
1EB(Exabyte 艾字节) = 2^10 PB = 1024 PB = 2^60 B;
1ZB(Zettabyte 泽字节) = 2^10 EB = 1024 EB = 2^70 B;
1YB(YottaByte 尧字节) = 2^10 ZB = 1024 ZB = 2^80 B;
1BB(Brontobyte ) = 2^10 YB = 1024 YB = 2^90 B;
1NB(NonaByte ) = 2^10 BB = 1024 BB = 2^100 B;
1DB(DoggaByte) = 2^10 NB = 1024 NB = 2^110 B
所以16Mbit = 16*1024KB= 16384KB
16384KB = 16384*1024 bit = 16777216 bit
1字节=8位(bit)
也就是说W25Q16最多可以存储16777216 /8 = 2097152个字节的数据
可以先看一下数据手册
https://wenku.baidu.com/view/7b361c5cba1aa8114531d936.html
http://www.51hei.com/bbs/dpj-41029-1.html
芯片呢对2097152个字节进行了分配
每256个字节自己作为一页 所以就有 2097152/ 256 = 8192页
然后呢又对8192页进行了分配
每16页作为一个扇区 所以就有 8192/ 16 = 512个扇区
还有就是 让每 256页作为一个块
所以 就有 8192 / 256 = 32 个块
每次写数据之前需要先擦除
芯片规定最小擦除的单位是扇区,所以最小需要擦除16页,也就是16*256 = 4096个字节,也可以说最小擦除的空间是4KB, 4096 / 1024 = 4KB
当然也可以使用块擦除,那么每次擦除一个块,也就是256页 ,就是 256*256 = 65536个字节.. 就是64KB 65536 / 1024 = 64KB
最后呢还有一个全片擦除指令,就是说写一个指令就可以擦除整个空间
看资料上还有
这个..............不确定...也可以擦除128页???还是说W25Q80是可以擦除128页....最后写程序试一试就知道了....
然后呢就是一些指令...测试完所有的功能再写