Java教程

FLASH的读写

本文主要是介绍FLASH的读写,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

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

二、常用FLASH型号大小

型号W25Q80W25Q16W25Q32
163264
扇区2565121024
4096819216384
字节数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封装引脚定义

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

     

这篇关于FLASH的读写的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!