一、目的

前段时间淘了一个STM32H750XBH6_ArtPi开发板,板载两颗华邦的Flash芯片,一颗为W25Q64JV(8Mbytes),通过STM32H750XBH6的QUADSPI控制用于XIP;一颗为W25Q128JV(16Mbytes)用于数据存储,通过标准SPI访问。

那么本篇的目的就是给大家介绍介绍W25Q64JV这块颗粒。

W25Q64JV - Serial NOR Flash - 闪存 - 华邦电子https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/index.html?__locale=zh&partNo=W25Q64JV

参考官网的资料

二、介绍

W25Q64JV存储容量为8Mbytes,每页256bytes,总共有32768个可编程页,最大一次可编程大小为256bytes。一次擦除大小可以为4K、32K、64K字节(K=1024)或者全擦除。

支持标准SPI、Dual SPI、Quad SPI,最大操作时钟为133MHz。

超过10万次的擦除编程。

编程即写数据,由于Flash的特性,只能从1编程0,所以写数据之前Flash里面的数据不是0xFF就必须先擦除,然后才能写数据。

擦除即将Flash里面的数据恢复为0xFF的过程。

标准SPI使用CS、CLK、DO、DI。

Dual SPI使用CS、CLK、IO0、IO1。

Quad SPI使用CS、CLK、IO0、IO1、IO2、IO3。

无论哪种SPI都是使用半双工方式。

CS拉低则代表设备被选择,即可以读写寄存器或者数据。

注意8bit的指令无论使用什么SPI都是通过DI(IO0)写入设备,也就是说,即使你是Dual、Quad SPI发送8bit指令时,都是通过单线DI写入。

从上图可以到一个Sector为4KBytes,一个Block为64KBytes。

SPI支持4中模式(时钟的相位/极性),此Flash支持Mode0和Mode3。

标准SPI指令DI用于输入指令,DO主机从设备读取数据和状态。

当使用指令如Fast Read Dual Output (3Bh)和Fast Read Dual I/O (BBh)时必须使用Dual SPI指令方式。

当使用指令如Fast Read Quad Output (6Bh)和Fast Read Quad I/O (EBh)时必须使用Quad SPI指令方式。需要特别注意Quad SPI指令需要状态寄存器2的QE位设置为1才可以使用(默认就是1),并且该位时非易失的,也就是或如果你改了这个位的状态,断电就会一直保存其值。

软复位需要依次执行两条指令Enable Reset (66h) & Reset (99h)(复位使能指令和复位指令)。在复位期间不处理任何新指令。

写保护说明

上电后设备自动进行写禁止状态(WEL为0,WEL是只读位)。在Page Program, Sector Erase, Block Erase, Chip Erase or Write Status Register instruction(页编程、区擦除、块擦除、芯片擦除或者写状态寄存器指令)之前必须先进行写使能指令。在编程、擦除、写状态寄存器指令完成后,WEL自动变成0。

BUSY位是状态寄存器0的第0位,并且是只读位,当执行页编程、区擦除、块擦除、芯片擦除、写状态寄存器、擦除/编程安全寄存器指令时,其值位1;并且在此期间不再接收新的指令,但是可以接收读状态寄存器指令和擦除编程挂起指令。

QE位出厂时被设置为1,并且不能被设置为0。有些型号的Flash QE是设置为0的。

在时钟的上升沿采样数据,并且是MSB,即第一个bit为最高bit位。

三、寄存器说明

写使能寄存器

读状态寄存器

可以一次读指令连续读出多次状态值,一般情况下,我们会一次读一个值,然后延时一段时间再重新读取。

标准SPI读取数据指令

可以一次读取多个数据,内部地址自增,这样我们就可以一次读取指定字节的数据。

单线快速读取数据指令

该指令与指令03h的区别就是,可以用最大时钟频率去读取,但是需要添加一个dummy byte(虚拟字节),不关系其具体值。一般可以设置位0xFF。

双线快速读取数据指令

四线快速读取数据指令

注意上面的读取操作,指令、地址、虚拟字节都是DI(IO0)上传递,其他IO1-IO3都是高阻状态

下面这条读取指令地址阶段也是两条数据线进行传递。

下面这条指令地址阶段、交替字节(0xFxh)、虚拟字节、数据阶段都是四条线传递

页编程

一次页编程的最大大小为256个字节,如果是满页写,要注意地址一定要被256整除;

当然也可以进行部分写,比如说写10字节。

在进行部分写的时候如果超过当前页的地址范围,就会回到该页开头覆盖写。

在写的过程中可以检查BUSY位,以确定是否已经写完成。

四线页编程

                跟一线页编程行为基本一样。

区擦除

一次擦除4KBytes,擦除之前必须发送写使能指令,然后发送擦除指令,擦除完毕BUSY会自动变为0。

块擦除指令

和区擦除指令一样,区别只是一次擦除32Kbytes。

块擦除指令

和区擦除指令一样,区别只是一次擦除64Kbytes。

芯片擦除指令

一次全擦除指令,不建议经常使用,耗时并且会损耗Flash。

读取厂商/设备编号

需要特别关注的时间参数

相邻两次CS拉低的时间间隔,很多Quad SPI外设设置时需要设置。

至此,对于芯片手册的学习基本完成。后面我会基于STM32XBH6_ArtPi开发板分别介绍如何使用STM32的QSPI和SPI分别实现对Flash的读写。

手把手系列--华邦W25Q64JV Flash操作指南相关推荐

  1. 解读Datasheet系列:W25Q80DV(华邦 SPI Flash)

    本文只对 W25Q80DV 数据手册的一部分进行解读,其涵盖的内容基本足够开发标准 SPI 接口的 Linux 驱动和裸板驱动.完整的 Datasheet 下载: https://download.c ...

  2. 手把手系列--编写Keil MDK 外部FLASH下载算法

    声明:博文中涉及到的版权软件只用于教学使用 一.目的         完整工程下载地址:         链接:https://pan.baidu.com/s/1xtr8m_KGsyx64wN6rcn ...

  3. 华邦存储芯片 W25Q 系列命名规则

    解析华邦存储芯片 W25Q 系列命名规则 华邦的 SPI flash 型号(丝印)一般如下(只看当前最新的 W25Q 系列): W25Q xxx y z XX Y Z xxx表示容量(单位 bit), ...

  4. 手把手系列--验证自己编写的STM32H750XBH6_ArtPi平台Keil MDK Flash下载算法

    一.目的         本文配套的完整工程地址         链接:https://pan.baidu.com/s/1CVN1oKVKvlE_osn9fePxbg          提取码:6u5 ...

  5. W25Q128华邦Flash调试踩坑

    W25Q128华邦Flash调试踩坑 存储器内部默认数据为全1,同样整片擦除后数据恢复为全1. 注意:这款Flash不支持写数据覆盖,即写第二次数据之前要先擦除要写入地址对应的扇区.具体原因在于Fla ...

  6. 华邦存储器W25Q80, W25Q16, W25Q32系列的spi通讯

    华邦存储器W25Q80, W25Q16, W25Q32系列与stm32f1系列单片机的spi通讯 2020.4.9 spi通讯在配置好之后一定要开启spi使能,和串口的配置是一样的 2020.4.13 ...

  7. Openwrt读取spi-nand协议Flash芯片UniqueID(华邦为例)

    Flash芯片一般都有一个出厂时由制造商设定的Unique ID,唯一ID.获取到可以用来进行各类加密识别认证,作为设备唯一ID的一种. 本文以华邦品牌的flash芯片为例(W25N01GV.W25M ...

  8. w25n01g 代码_STM32F405驱动华邦W25N01G简介与demo

    关于STM32F405驱动华邦W25N01GVZE1G的简介与驱动代码 W25N01G简介 常用flash可分为NOR flash和NAND flash等.比如华邦(winbond)的W25Qxx系列 ...

  9. webservice 参数太大_手把手系列:常用数据交换方案Web Service接口处理法

    手把手系列:常用数据交换方案之Web Service接口处理法 Web Service是一个SOA(面向服务的编程)的架构,是一个平台独立的,低耦合的,基于可编程的web的应用程序,可使用开放的XML ...

  10. 华邦电子2022年1月营收为新台币86.90亿元

    2月12日消息,华邦电子股份有限公司近日公布自行结算的2022年1月份营收报告.华邦含新唐科技等子公司,1月份合并营收为新台币86.90亿元,较上个月增加0.97%,较去年同期增加25.89%. 20 ...

最新文章

  1. python ioc di_Spring介绍,IOC(控制反转),DI(依赖注入)介绍及两种注入方法
  2. ElasticSearch大批量数据入库
  3. 产品经理利器之axure rp
  4. 人类一败涂地电脑版_人类一败涂地游戏正式上架同步推免费版
  5. PHP json_encode不转义中文
  6. 【Spring学习】Spring简介
  7. spring 实例化bean的几种方法
  8. mysql 按日期查询
  9. Eagle 画板-拼板-输出Gerber到SeeedStudio打样过程笔记
  10. 微信小游戏源码(从入门到入坑-火柴人勇闯地下城))
  11. 转置卷积(Transposed Convolution)
  12. java类中serialVersionUID的作用
  13. Java和Spring:发送邮件(以QQ邮箱为例)
  14. 网站seo淘宝客不能做了?我是怎么用网站做淘客月入过万的
  15. STC51单片机15——MPU6050六轴数据融合,互补滤波,时间常数可调,可稳定运行,串口显示角度值
  16. 一点、两点、三点透视投影的python3实现-计算机图形学
  17. 小米9等手机基带串号擦除与恢复备份原机镜像ADB指令-icloudelectron修正
  18. 微信小程序教程-调用服务器接口
  19. python有哪些码_Python有哪些神一般的蜜汁操作? 《附代码》
  20. MySQL8报错:授权语句中的(IDENTIFIED BY)报语法错误

热门文章

  1. 如何认识和处理ISO14001标准中“相关方”概念(转载)
  2. opencv实现电子试卷图片中对号、错误的检测
  3. Deepin_wine安装超星阅读器及解决乱码问题
  4. python地震数据处理_python 地震数据可视化
  5. Mysql插件HandlerSocket的应用
  6. 宝石争霸如何保存进度
  7. 跨浏览器共享数据_不懂浏览器安全,被老板邀请爬山?
  8. Cocos2D-x设计模式发掘之二:二段构建模式 -----------cocos2d-x3.0正式版本(7.22)
  9. 2019年网络工程师考试大纲
  10. 3月28日服务器维护,4月28日服务器例行维护公告