W25Q16V 是华邦出的一颗 spi flash. 25系列是比较通用的一个系列. 后面的数字 16 跟容量有关, 16 表示 16Mbits, 相当于 2MB.

与此类似的还有 W25Q128V 等, 128 就表示容量 16MB.

对于 W25Q16V:

  • page 为最大的编程单位. 1 page = 256 bytes
  • sector 为最小的擦除单位, 1sector = 16 pages = 4096 bytes (4KB)
  • 块擦除有两种大小:
    32K block = 8 secotrs = 128 pages = 32 kbytes
    64k block = 16 sectors = 256 pages = 64 kbytes

封装

如图的 8-pin 是较常用的一种封装. 各 pin 的意义:

  1. CS , chip select, 芯片使能引脚. CS拉高时, 芯片处理省电模式, 各数据引脚(D0/D1/D2/D3)处理高阻态. CS拉低时芯片工作, 数据引脚可以传输数据.

  2. DO 用于(在CLK下降沿)输出数据或状态. 正常情况下只有DI/DO作为IO引脚, 启用 Quad 模式需要置QE(Quad Enable)位. QE=1时, WP和HOLD分别变为IO2,IO3.

  3. WP pin, 低电平有效, 以保护状态寄存器不被写入.

  4. GND 接地

  5. DI用于(在CLK上升沿)向 Flash 输入指令, 地址 或 数据.

  6. CLK, 提供输入输出操作的同步时钟.

  7. HOLD pin, 当多个芯片共用 SPI 总线时非常有用. HOLD 为低电平时, DO 引脚变为高阻态, 且此时 DI/CLK 上的信号被忽略. 相当于芯片此时不工作. 假设对一个 SPI FLASH 的页写操作只进行到一半, 此时一个中断来了, 另一个更高优先级的任务要占用 SPI 总线, 此时就可以使用 HOLD 拉低来暂停 SPI FLASH 内部的工作, 等到任务切换回来再让操作继续下去.

  8. VCC, 2.7 ~ 3.6V

内部模块框图

SPI 操作

标准 SPI 有四根信号线: CS, CLK, DI, DO. 其中 DI 用于在CLK上升沿时输入指令, 地址或数据, DO用于在CLK下降沿时读数据或状态.

SPI 总线有四种工作模式, 区别是 CLK 常态电平 和 数据采样时机. W25Q16V 支持 MODE0 和 MODE3. 详见这篇笔记

使用3B/BB指令可以进入"快速双路模式", 此时DI/DO变为IO0, IO1.

6B, EB 进入"四路"模式, 此时 WP, HOLD 分别变为 IO2, IO3

状态寄存器

BUSY, 只读位,

当 SPI FLASH 在执行 页编程, 扇区擦除, 块擦除, 整片擦除, 写状态寄存器指令 等操作时, BUSY位被置1, 这些操作完成之后, BUSY位自动清0. 当BUSY位为1时, 除了"读状态寄存器"操作和"擦除暂停"操作之外, 不接受任何其他操作.

WEL, Write Enable Latch

只读位. 当执行了一个"写使能"指令后, WEL置1, 表示可以写入了. "写禁止"时, WEL为0.

"写禁止", "页编程", "扇区擦除", "块擦除", "整片擦除", "写状态寄存器", 执行完这些操作之后, WEL 自动被清0, 回到禁止写入状态.

BP0, BP2, BP2 (Block Protect Bits) 块保护

"写状态寄存器" 指令可以改变这些位的值.

TB

SEC

SRP1, SRP0, 状态寄存器保护

这两个位 与 WP 引脚一起, 用于保护状态寄存器不被改写.

QE

指令

有 26 个基本指令. DI 输入的第一个字节就是指令代码. DI在CLK上升沿采样, MSB .

指令有一个或多个字节, 可能后面还有地址, 数据, dummy.

spi flash 操作的更多相关文章

  1. STM32学习笔记(八) SPI总线(操作外部flash)

    1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线:它工作在主从方式,常规需要至少4根线才能够正常工作.SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯 ...

  2. Nand Flash,Nor Flash,CFI Flash,SPI Flash 之间的关系

    前言:    在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解.下面细说一下标题中的中Flash中的关系 一,Flash的内存存储结构    flash按照内部存 ...

  3. SPI Flash

    使用了MX25L512的SPI接口的Flash 电路连接图: 总的大小512kb,即64kB,sector的大小为256 Bytes,block的大小为4k Bytes 调试时出现的问题: 1.Fla ...

  4. OpenRisc-32-ORPSoC烧写外部spi flash

    引言 经过前面的分析和介绍,我们对ORPSoC的启动过程(http://blog.csdn.net/rill_zhen/article/details/8855743)和 ORpSoC的debug子系 ...

  5. SPI Flash(W25Q16DV) 基本操作

    读取厂家\设备 ID 发送 90H 指令,再发送 00h 的地址,然后接收即可. 代码如下: void SPIFlashReadID(int *pMID, int *pDID) { SPIFlash_ ...

  6. Jlink使用技巧之烧写SPI Flash存储芯片

    前言 大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用JLink来烧写或者读取SPI Flash存储器, ...

  7. (电工基地笔记)Vivado固化至SPI Flash

    如果从头开始做SPI Flash固化是有一些麻烦的,要在完成综合之后,打开 synthesized Design (图) (图) 然后在synthesized Design打开状态下,选择Tools- ...

  8. RTT下spi flash+elm fat文件系统移植小记

    背景: MCU:STM32F207 SPI flash: Winbond W25Q16BV OS: RTT V1.1.1 bsp: STM32F20x 1 将spi_core.c,spi_dev.c及 ...

  9. Arduino SPI + SPI Flash芯片W25Q80BV

    W25Q80BV是台湾华邦电子(Winbond)生产的8M-bit串行flash芯片.主要特性有: 工作电压:2.5 ~ 3.6 V 功耗:读写(active)时4mA,低功耗(power-down) ...

随机推荐

  1. cookie小结(转)

    原文地址:http://www.cnblogs.com/xianyulaodi/p/6476991.html#_label0 作者:咸鱼老弟   阅读目录 什么是cookie       官方定义:N ...

  2. Clojure基础

    最近看了一段clojure,下面是从书上摘下来的一下语言基础的精华部分 ;函数的基本形式 (defn average [numbers] (/ (apply + numbers) (count num ...

  3. ubuntu14.04LTS root登录出现错误

    输入root帐号和密码,出现以下错误: Error found when loading /root/.profile stdin:is not a tty 解决方法: 在终端中用命令:gedit / ...

  4. 【单调队列优化dp】HDU 3401 Trade

    http://acm.hdu.edu.cn/showproblem.php?pid=3401 [题意] 知道之后n天的股票买卖价格(api,bpi),以及每天股票买卖数量上限(asi,bsi),问他最 ...

  5. 【BZOJ3224】普通平衡树(splay)

    题意: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排 ...

  6. JavaScript 数组操作函数--转载+格式整理

    JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...

  7. angular中关于自定义指令——repeat渲染完成后执行动作

    业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写.有经验的同学都应该知道,在ng-r ...

  8. XPath用法详解

    1.XPath是什么 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航(你可以理解为一种类似正则表达式的方法) 2.XPath的语法 表达式 ...

  9. P3367 并查集【模板】 洛谷

    https://www.luogu.org/problem/show?pid=3367#sub 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入输出格式 输入格式: 第一行包含两个整 ...

  10. c字符和字符数组/字符串

    一维和二维的都可以:一维的情况如下:1,char string0[10];2,char string1[]="prison break";3,char string2[100]=& ...