FLASH的读写

 最近在学习关于flash的知识,记录一下

        flash的特性是,写数据只能将1写为0,0不能写为1。擦除数据是将所有数据都写为1。因此如果想在已经数据的flash上写入新的数据,则必须先擦除。

一、FLASH的块/扇区/页关系

每块 每扇区 每页
16扇区 16页 256 Byte(2048 bit)

二、常用FLASH型号大小

型号 W25Q80 W25Q16 W25Q32
16 32 64
扇区 256 512 1024
4096 8192 16384
字节数 1M Byte(8M bit) 2M Byte(16M bit) 4M Byte(32M bit)

三、常用FLASH擦写规则

  • 最小擦除单位:扇区
  • 可选择擦除单位:扇区、块、全片
  • 最大编程(写入)单位:页( 256 Byte),大于256 Byte则需要循环写入。
  • 最小编程(写入)单位:1 Byte,即一次可写入 1~256 Byte的任意长度字节。
  • 未写入时FLASH里面的数据为全1,即0xFF。
  • 只能由 1 —> 0 写入,不能由 0 —> 1 写入,即如果已经写入过了,则需要先擦除(擦除后数据变为全1)再写入。
  • 示例:0xF0(1111 0000),即高4位可写入,低4位不可写入。

四、常用FLASH封装引脚定义

FLASH的读写

如图的 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

     

上一篇:国民技术32芯片


下一篇:AT4AT45DB系列FLASH介绍