flash的特性是,写数据只能将1写为0,0不能写为1。擦除数据是将所有数据都写为1。因此如果想在已经数据的flash上写入新的数据,则必须先擦除。
每块 | 每扇区 | 每页 |
16扇区 | 16页 | 256 Byte(2048 bit) |
型号 | W25Q80 | W25Q16 | W25Q32 |
块 | 16 | 32 | 64 |
扇区 | 256 | 512 | 1024 |
页 | 4096 | 8192 | 16384 |
字节数 | 1M Byte(8M bit) | 2M Byte(16M bit) | 4M Byte(32M bit) |
如图的 8-pin 是较常用的一种封装. 各 pin 的意义:
CS:chip select, 芯片使能引脚. CS拉高时, 芯片处理省电模式, 各数据引脚(D0/D1/D2/D3)处理高阻态;CS拉低时芯片工作, 数据引脚可以传输数据。
DO:(在CLK下降沿)输出数据或状态. 正常情况下只有DI/DO作为IO引脚, 启用 Quad 模式需要置QE(Quad Enable)位. QE=1时, WP和HOLD分别变为IO2,IO3.
WP:低电平有效, 保护状态寄存器不被写入。
GND:接地
DI:(在CLK上升沿)向 Flash 输入指令, 地址 或 数据.
CLK:提供输入输出操作的同步时钟.
HOLD:当多个芯片共用 SPI 总线时非常有用. HOLD 为低电平时, DO 引脚变为高阻态, 且此时 DI/CLK 上的信号被忽略. 相当于芯片此时不工作. 假设对一个 SPI FLASH 的页写操作只进行到一半, 此时一个中断来了, 另一个更高优先级的任务要占用 SPI 总线, 此时就可以使用 HOLD 拉低来暂停 SPI FLASH 内部的工作, 等到任务切换回来再让操作继续下去.
VCC:2.7 ~ 3.6V