STM32之GD25Q256应用笔记
前言
- 使用标准SPI指令格式;
- 3字节地址模式或4字节地址模式;
- 支持SPI 总线 模式0 和 模式3;
- 存储容量32MB;
- 时钟频率范围:80Mhz – 104Mhz;
- 主机:STM32F103ZET6;主机的SPI总线模式应该与从机的SPI总线模式保持一致;
- 电路原理
- 内存组织
- 状态寄存器和扩展地址寄存器
备注:外部扩展寄存器仅用于3字节地址模式,用来设置更高的地址;
部分位说明:
WIP位:只读;可以根据这个位判断Flash的工作状态;WIP = 1:Flash正在执行写(数据或状态寄存器)操作或擦除操作;WIP = 0:无执行写(数据或状态寄存器)操作或擦除操作;
WEL位:可读写;WEL = 1:使能写(数据或状态寄存器)操作或擦除操作;WEL = 0:失能写(数据或状态寄存器)操作或擦除操作;
TB位、BP3、BP2、BP1、BP0位、SRP1、SRP0位:可读写;保持0,不使用数据保护模式;
LB3、LB2、LB1位:OTP,一次性可编程;一旦这三个位都被置1,安全寄存器将永久性变为只读;(GD25Q256提供可被编程和擦除的具有2048字节的安全寄存器)
DRV1、DRV0位:可读写;可编程读操作速度,默认值为01,75%;可配置为00,100% 来增加读取速度;
PE位:只读;编程出错标志;
EE位:只读;擦除出错标志;
ADS位:只读;指示当前Flash的地址模式;ADS = 0:3字节地址模式;ADS = 1:4字节地址模式;
ADP位:可读写;决定上电或复位后的Flash的地址模式;ADP = 0:3字节地址模式;ADP = 1:4字节地址模式;
A24位:可读写;A24 = 1:选择高128Mb(01000000h – 01FFFFFF)内存空间;A24 = 0:选择低128Mb(00000000h – 00FFFFFFh)内存空间;
- 一些命令使用的注意事项
- 在传输完一帧数据的最后一个位必须取消片选(把片选线拉高);
- 对于以下命令:页编程、扇区擦除、块擦除、整片擦除、写状态寄存器、写使能/失能、深度休眠指令,必须在传输完一帧数据的最后一个位的字节边界(准确的8的倍数个CLK脉冲后),取消片选,否则命令不会被执行。
- 对于页编程指令,如果写入不足一个字节,那么写使能WEL不会被取消。
- 命令列表
备注:
Table of ID Definitions:
Security Registers Address
Security Register1: A23-A16=00H, A15-A12=1H, A11=0b, A10-A0=Byte Address;
Security Register2: A23-A16=00H, A15-A12=2H, A11=0b, A10-A0=Byte Address;
Security Register3: A23-A16=00H, A15-A12=3H, A11=0b, A10-A0=Byte Address.
- 命令解析
- Write Enable (WREN) (06H)
在页编程、擦除、写状态寄存器之前,必须先进行写使能。
- Write Disable (WRDI) (04H)
以下操作将会使写使能位失效:上电、页编程、擦除、写状态寄存器、写失能指令;
写失能后,不能进行页编程、擦除以及写状态寄存器;注意:不能在执行页编程、擦除、写状态寄存器期间,进行写失能操作,否则命令不会生效;
- Read Status Register (RDSR) (05H or 35H or 15H)
可以在任何时候读取状态寄存器;注意:当WIP被置0时,读取到的值为准!
- Write Status Register (WRSR) (01H or 31H or 11H)
I、
写状态寄存器之前,必须先写使能;ii、 写操作对S0、S1、S8、S10、S15、S18、S19无影响;
iii、必须在传输完最后一位的时候,把片选取消,否则写状态寄存器将会失败;
iv、写状态寄存器期间,WIP位置1,当写操作完成,WIP置0,并且写使能失效(WEL:1 -> WEL:0);
- Read Extended Register (C8H)
- Write Extended Register (C5H)
写操作之前,不需要执行写使能操作;掉电或复位,该寄存器的值将会清除;
- Read Data Bytes (READ 03H or 4READ 13H)
i、
可以读取任意地址;ii、 字节地址自加;
iii、当WIP = 1,不能进行读取操作;
- Read Data Bytes at Higher Speed (Fast Read 0BH or 4Fast Read 0CH)
i、 空闲时钟数量可编程(决定Dummy byte的数量);
ii、字节地址自加;
- Page Program (PP 02H or 4PP 12H)
i、
页编程前,必须先进行写使能操作;ii、 写操作必须以页首地址作为起始地址;
iii、写入前先擦出;(按照Datasheet的说法,应该是写入前不需要先擦除的,但是,如果不先擦除,写入再读出的数据是错乱的)
iv、一次写入的大小不应超过最大页大小;
- Sector Erase (SE 20H or 4SE 21H) Page Program (PP 02H or 4PP 12H)
i、
擦除之前必须先执行写使能操作;ii、 擦除期间,WIP置1;擦除完成,WIP置0;注意:WIP是在片选取消后被置位的;
iii、地址可以是待擦除扇区内的任意地址;
- 32KB Block Erase (BE32 52H or 4BE32 5CH)
i、
擦除之前必须先执行写使能操作;ii、 擦除期间,WIP置1;擦除完成,WIP置0;注意:WIP是在片选取消后被置位的;
iii、地址可以是待擦除块区内的任意地址;
- 64KB Block Erase (BE64 D8H or 4BE64 DCH)
i、
擦除之前必须先执行写使能操作;ii、 擦除期间,WIP置1;擦除完成,WIP置0;注意:WIP是在片选取消后被置位的;
iii、地址可以是待擦除块区内的任意地址;
- Chip Erase (CE) (60/C7H)
i、
擦除之前必须先执行写使能操作;ii、 擦除期间,WIP置1;擦除完成,WIP置0;注意:WIP是在片选取消后被置位的;
- Deep Power-Down (DP) (B9H)
i、
这个模式仅仅只能通过except the Release from Deep Power-Down and Read Device ID (RDI) 命令或者复位来退出;
- Enter 4-Byte Address Mode (B7H)
i、
状态寄存器ADS位自动置1,表示已进入4字节地址模式;
- Exit 4-Byte Address Mode (E9H)
i、
状态寄存器ADS位自动置0,表示已退出4字节地址模式;
- Clear SR Flags (30H)
- Release from Deep Power-Down and Read Device ID (RDI) (ABH)
- Read Manufacture ID/ Device ID (REMS) (90H)
- Read Identification (RDID) (9FH)
- Erase Security Registers (44H)
i、
该Flash有3组2048个字节的安全寄存器;ii、擦除之前必须先执行写使能操作;;
iii、擦除期间,WIP置1;擦除完成,WIP置0;注意:WIP是在片选取消后被置位的;
- Program Security Registers (42H)
i、 写入操作至少写入一个字节;
ii、编程之前必须先执行写使能操作;;
iii、写入期间,WIP置1;擦除完成,WIP置0;注意:WIP是在片选取消后被置位的;
- Read Security Registers (48H)
i、 可以读取范围内任意地址,并且地址自增;
ii、如果A0 – A10范围超过7FFFH,会自动复位为0000H;
STM32之GD25Q256应用笔记的更多相关文章
- stm32寄存器版学习笔记07 ADC
STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...
- stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...
- stm32寄存器版学习笔记05 PWM
STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...
- stm32寄存器版学习笔记03 外部中断
stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...
- STM32串口IAP实验笔记
STM32的IAP功能确实方便,以前对此如何实现有所了解,但是一直没去测试,这两天来练了下,可谓困难重重,搞了两天问题也一一解决,下面做些简要的笔记 IAP就是在线应用编程,方便程序升级,可以不用打开 ...
- 数字麦克风PDM信号采集与STM32 I2S接口应用--笔记目录
数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,由单芯片实现采样量化编码,一般而言数字麦克风的输出有PDM麦克风和PCM麦克风,由于PDM麦克风结构.工艺简单而大量应用,在使用中要注意这二者 ...
- STM32学习及应用笔记一:SysTick定时器学习及应用
这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是 ...
- STM32上移植ds1307笔记
PS:网上关于ds1307的资料最多还是基于51等单片机的,和stm32上还是略有差别,代码是参考了http://www.openedv.com/posts/list/20167.htm 但是他的代码 ...
- STM32移植UCGUI3.90笔记
在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之 ...
随机推荐
- Python环境搭建-2 编译器和解释器
编译器与解释器 编译器/解释器:高级语言与机器之间的翻译官 都是将代码翻译成机器可以执行的二进制机器码,只不过在运行原理和翻译过程有不同而已. 那么两者有什么区别呢? 编译器:先整体编译再执行 解释器 ...
- 「CF438D The Child and Sequence」
一道CF线段树好题. 前置芝士 线段树:一个很有用数据结构. 势能分析:用来证明复杂度,其实不会也没什么关系啦. 具体做法 不难发现,对于一个数膜一个大于它的数后,这个数至少减少一半,每个数最多只能被 ...
- Spring MVC原理解析
SpringMVC Spring MVC的工作原理 ①客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求. ② Dispatche ...
- 什么是Device ID?
Android ID用于唯一识别一部设备的一次刷机行为,虽然不能完全确定该设备的唯一性(真的唯一性是用IMEI号的),但是可以很大程度上过滤重复设备.这是移动互联网广告行业的基础,尤其是CPI广告,设 ...
- Number()、parseInt()、parseFloat()、~~、~
一.Number() 如果是Boolean值,true和false值将分别被转换为1和0. 如果是数字值,只是简单的传入和返回. 如果是null值,返回0. 如果是undefined,返回NaN. 如 ...
- 《Interest Rate Risk Modeling》阅读笔记——第九章:关键利率久期和 VaR 分析
目录 第九章:关键利率久期和 VaR 分析 思维导图 一些想法 有关现金流映射技术的推导 第九章:关键利率久期和 VaR 分析 思维导图 一些想法 在解关键方程的时候施加 \(L^1\) 约束也许可以 ...
- BurpSuite 1.7.32 Cracked 破解版[注册机]下载【无后门版】
首先看一下我的注册后的: 注册机的使用也很简单,首先打开burp-loader-keygen.jar文件,然后随便填写license text,比如我填写的是:mrxn.net效果如下图: 然后点击m ...
- java Vector的特点与使用
Vector Vector的数据结构 基于数组,大小可变(数组扩容). Vector与ArrayList的比较 我看了下源码,最大区别就是Vector的方法加了synchronized,是线程安全的 ...
- 多线程分析之Semaphore
Semaphore分析由来 网上看了许多讲解Semaphore的,用Semaphore来实现顺序打印字母,但是可能大家都没有清楚具体的原因,所以来给大家分析下为什么可以使用Semaphore来实现顺序 ...
- 五、生产者消费者模型_ThreadLocal
1.生产者消费者模型作用和示例如下:1)通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率 ,这是生产者消费者模型最重要的作用2)解耦,这是生产者消费者模型附带的作用,解耦意味着生产者 ...