W25Q64Flash芯片STM32操作
1、W25Q64Flash芯片介绍
通讯方式:SPI通讯
大小:8M(Byte) (128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字节,每个扇区16页,每页256个 字节)
特点:Flash芯片内的数据只能由1变0,不能由0变1。
引脚:
CS:CS为片选管脚,低电平有效。上电之后,在执行一条新的指令之前,必须让/CS管脚先有一个下降沿。
DO(MISO):DO为串行数据输出引脚,在CLK(串行时钟)管脚的下降沿输出数据。
WP:WP为写保护管脚,有效电平为低电平。高电平可读可写,低电平仅仅可读。
DI(MOSI):DI为串行数据输入引脚,数据、地址和命令从DI引脚输入到芯片内部,在CLK(串行时钟)管脚的上升沿捕获捕获数据。
CLK(SLCK):CLK为串行时钟引脚。SPI时钟引脚,为输入输出提供时钟脉冲。
HOLD:HOLD为保持管脚,低电平有效。当CS为低电平,并且把HOLD拉低时,数据输出管脚将保持高阻态,并且会忽略数据输入管脚和时钟管脚上的信号。把HOLD管脚拉高,器件恢复正常工作。
VCC:电源2.7V~3.6V。
GND:地。
W25Q64内部框架图:
2、W25Q64Flash工作方式
2.1 W25Q64 SPI数据传输时序
W25Q64支持SPI数据传输时序模式0(CPOL = 0、CPHA = 0)和模式3(CPOL = 1、CPHA = 1),模式0和模式3主要区别是当SPI主机硬件接口处于空闲状态时,SCLK的电平状态是高电平或者是低电平。对于模式0来说,SCLK处于低电平;对于模式3来说,SCLK处于高电平。不过,在这两种模式下,芯片都是在SCLK的上升沿采集输入数据,下降沿输出数据。
2.2 W25Q64数据格式
W25Q64数据格式为数据长度8位大小,先发高位,再发低位。
2.3 W25Q64传输速度
W25Q64在标准模式下支持80M bit/s速度,快速模式下支持160M bit/s速度,高速模式下支持320M bit/s速度。
3、W25Q64控制和状态寄存器
通过对“读状态寄存器”指令读出的状态数据可以知道芯片存储器阵列是否可以写入或不可写,或是否处于写保护状态。通过“写状态寄存器”指令可以配置芯片写保护特征。
总线忙标志位(BUSY)
BUSY位是一个只读位,在状态寄存器中的S0位。当W25Q64在执行“页编程”、“扇区擦除”、“块区擦除”、“芯片擦除”以及“写状态寄存器”指令时,该位被硬件自动置1。这时候,除了“读状态寄存器”指令外的所有操作指令讲会被芯片忽略。当芯片执行完这些指令后,硬件会自动将该位清零,表示芯片器件可以接收其他的指令。
写保护位(WEL)
WEL位是一个只读位,在状态寄存器的S1位。在执行完“写使能”指令后,该位会被硬件自动置1。当芯片掉电后和执行“写禁能”、“页编程”、“扇区擦除”、“块区擦除”以及“芯片擦除”指令都会进入“写保护状态”。
块区保护位(BP2、BP1、BP0)
BP2、BP1、BP0这3位为可读可写位,分别在状态寄存器的S4、S3以及S2位。这3个位默认状态为0,即块区处于未保护状态。可以利用“写状态寄存器”指令对这几个位进行置1来达到块区保护的目的。块区保护状态为:没有保护、部分保护和全部保护状态。
注:当状态寄存器的SRP位为1或读写保护管脚(/WP)为低电平时,这3个位不可被更改。
底部和顶部块保护位(TB)
TB位是一个可读可写位,在状态寄存器的S5位,默认值为0。可以利用“写状态寄存器”指令对这个位进行置1或清零。当TB = 0时,表示保护位从顶部开始,当TB = 1时,表示保护位从底部开始。
注:当状态寄存器的SRP位为1或读写保护管脚(/WP)为低电平时,这个位不可被更改。
扇区/块保护(SEC)
SEC位为一个可读可写位,在状态寄存器的S6位,默认值为0。可以利用“写状态寄存器”指令对这个位进行置1或清零。当SEC = 0时,表示每次保护的区域大小为4K;当SEC = 1时,表示每次保护的区域大小为8K。
状态寄存器保护位(SRP0、SRP1)
SRP0和SRP1这2位为可读可写位,分别在状态寄存器的S7和S8(状态寄存器2)位。这两个位的默认值为0,可以利用“写状态寄存器”指令对这个位进行置1或清零。这2个位和读写保护管脚(/WP)决定了状态寄存器写保护的方式。状态寄存器写保护的方式有:软件保护,硬件保护、电源锁定或一次性可编程(OTP)保护。
快速SPI通讯使能(QE)
QE位为一个可读可写位,在状态寄存器的S9(状态寄存器2)位,默认值为0。以利用“写状态寄存器”指令对这个位进行置1或清零。当QE = 0时,W25Q54设置为标准速度模式或快速模式,保持管脚(/HOLE)和读写保护管脚(/WP)启用;当QE = 1时,W25Q54设置为高速模式,保存管脚(/HOLE)和读写保护管脚(/WP)被设置位IO2和IO3功能使用。
4、W25Q64器件标识
5、W25Q64工作原理
W25Q64操作原理
通过SPI接口,用标准的SPI协议发送相应指令给flash,然后flash根据命令进行各种相关操作。
W25Q64常用操作命令
指令名称 |
字节1(CODE) |
字节2 |
字节3 |
字节4 |
字节5 |
字节6 |
写使能 |
06h |
|||||
写禁能 |
04h |
|||||
读状态寄存器1 |
05h |
(S7~S0) |
||||
读状态寄存器2 |
35h |
(S15~S8) |
||||
读数据 |
03h |
A23~A16 |
A15~A8 |
A7~A0 |
D7~D0 |
直至读完所有 |
写状态寄存器 |
01h |
(S7~S0) |
(S15~S8) |
|||
页编程 |
02h |
A23~A16 |
A15~A8 |
A7~A0 |
D7~D0 |
直至255个字节 |
块擦除(64K) |
D8h |
A23~A16 |
A15~A8 |
A7~A0 |
||
半块擦除(32K) |
52h |
A23~A16 |
A15~A8 |
A7~A0 |
||
扇区擦除(4K) |
20h |
A23~A16 |
A15~A8 |
A7~A0 |
||
芯片擦除 |
C7/60h |
|||||
芯片掉电 |
B9h |
|||||
释放掉电/器件ID |
ABh |
伪字节 |
伪字节 |
伪字节 |
ID7~ID0 |
|
制造/器件ID |
90h |
伪字节 |
伪字节 |
00h |
MF7~MF0 |
ID7~ID0 |
JEDEC ID |
9Fh |
MF7~MF0 |
ID15~ID8 |
ID7~ID0 |
6、W25Q64常用指令工作时序
写使能(06H)
写禁止(04H)
读状态寄存器指令(05H)
写状态寄存器指令(01H)
读数据(03H)
页写(02H)
扇区擦除指令(20H)
块擦除指令(D8H)
芯片擦除指令(07H)
掉电指令(B9H)
读ID指令(90H)
写使能(06H)
写禁止(04H)
读状态寄存器指令(05H)
写状态寄存器指令(01H)
读数据(03H)
页写(02H)
扇区擦除指令(20H)
块擦除指令(D8H)
芯片擦除指令(07H)
掉电指令(B9H)
读ID指令(90H)
7、STM32模块编程思路
- 配置SPI模块功能管脚相应的GPIO管脚。
- 配置SPI模块工作方式。
- 使能SPI模块时钟。
- 根据SPI SPI主模式设置步骤设置SPI工作方式。
- 编写SPI读写字节函数。
- 根据目前器件的指令操作器件。
8、硬件原理图
代码资源下载:https://download.csdn.net/download/lalala098/10576508
W25Q64Flash芯片STM32操作相关推荐
- w25q64 linux,W25Q64Flash芯片STM32操作
1.W25Q64Flash芯片介绍 通讯方式:SPI通讯 大小:8M(Byte) (128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字节,每个扇区16页,每页2 ...
- STM32操作加密芯片源代码
STM32操作SMEC98SP加密芯片的事例代码,如果需要完整代码(包括加密芯片代码),请到中巨伟业 http://www.sinormous.com/download.html下载 #include ...
- STM32操作24位AD转换器AD7799芯片
AD7799是早些前ADI公司推出的一款高精度低速24位ADC器件,主要应用于低功耗精密测量场合.最近开发与气压检测相关的产品,选择了这个芯片,经过PCB的合理布线,感觉这颗芯片的效果还不错. AD7 ...
- STM32操作24位AD芯片ADS1246
ADS1246是TI公司大致在2009年中期推出的24位ADC,最高采样速率可达2Ksps,其为单通道器件,与之相对应的还有ADS1247和ADS1248三通道器件,但特性并非完全一致.据TI资料介绍 ...
- 转:STM32操作24位AD芯片ADS1246
ADS1246是TI公司大致在2009年中期推出的24位ADC,最高采样速率可达2Ksps,其为单通道器件,与之相对应的还有ADS1247和ADS1248三通道器件,但特性并非完全一致.据TI资料介绍 ...
- STM32操作OLED显示屏
个人网站:Geek交流圈 文末附代码 简介 OLED主要涉及SPI协议/IIC协议,汉字点阵编码原理等知识,在这里且先不谈,这个系列主要讲运用,尽量减少文本的书写.本文利用STM32RCT6操作七针O ...
- micropython入门 stm32_micropython(1):芯片 STM32 开发,也可以使用micropython开发,都很方便...
目录 前言 1,关于stm32 2,使用ESP8266 3,pyboard 3,esp32 python 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/a ...
- STM32操作访问flash,包括写入数据到flash和从flash读取数据
文章目录 序言:flash相关知识背景 一.FLASH操作流程与操作选址 1.1 FLASH操作流程 1.2 如何查找并选定要写入Flash十六进制地址 二.Flash基本知识点 2.1 Flash容 ...
- 钜泉光电ATT7053C芯片STM32 SPI驱动
一.硬件(低速)光耦隔离,测试速率40Kbps较稳定,80Kbps不稳定. 二.MX软件SPI配置 SPI读函数 void Read_ATT7053_B( uint8_t addr, uint8_t ...
最新文章
- Ansible剧本介绍及使用演示(week5_day2)--技术流ken
- 新起点!新征程!微软技术俱乐部(苏州)成立大会暨微软技术交流会
- apache lucene_Apache Lucene中的并发查询执行
- Autodesk云计算系列视频 --- 云计算与Civil 3D
- sfc流程图怎么画_sfc第四次超级机器人大战流程图
- vcglib中面自相交的检测算法
- 2021-02-20
- 电子合同助力“在线教育”高效发展
- 大鱼吃小鱼html代码,Flash游戏--大鱼吃小鱼(一)
- 【数据库】某医院病房计算机管理中需要如下信息: 科室:科名、科地址、科电话、医生姓名 病房:病房号、床位号、所属科室名 医生:姓名、职称、所属科室名、年龄、工作证号 病人:病历号、姓名、性别、诊
- 渐变的alert_模仿新浪邮箱的alert渐变的提示框
- 有利可图网_公布有利可图的辅助项目手册
- 【线刷大师】纯净root线刷包,线刷教程及工具
- TFN高性能无线电综合测试仪让测试更加精准
- Python实现按键精灵功能
- 【MySQL 8.0 OCP 1Z0-908认证考试】题库精讲--第三讲mysql8.0安装配置升级(中)
- | UML(Jude)
- 袋鼠云数栈基于CBO在Spark SQL优化上的探索
- 【满分】【华为OD机试真题2023 JAVA】 打印文件
- mac自动化appium mac2 drive使用小记