前言

  • 使用标准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应用笔记的更多相关文章

  1. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  2. stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)

    STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...

  3. stm32寄存器版学习笔记05 PWM

    STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...

  4. stm32寄存器版学习笔记03 外部中断

    stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...

  5. STM32串口IAP实验笔记

    STM32的IAP功能确实方便,以前对此如何实现有所了解,但是一直没去测试,这两天来练了下,可谓困难重重,搞了两天问题也一一解决,下面做些简要的笔记 IAP就是在线应用编程,方便程序升级,可以不用打开 ...

  6. 数字麦克风PDM信号采集与STM32 I2S接口应用--笔记目录

    数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,由单芯片实现采样量化编码,一般而言数字麦克风的输出有PDM麦克风和PCM麦克风,由于PDM麦克风结构.工艺简单而大量应用,在使用中要注意这二者 ...

  7. STM32学习及应用笔记一:SysTick定时器学习及应用

    这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是 ...

  8. STM32上移植ds1307笔记

    PS:网上关于ds1307的资料最多还是基于51等单片机的,和stm32上还是略有差别,代码是参考了http://www.openedv.com/posts/list/20167.htm 但是他的代码 ...

  9. STM32移植UCGUI3.90笔记

    在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之 ...

随机推荐

  1. Java记录2---包的使用

    javac -d . A.java -d 表示自动生成包层 . 表示这个包层在当前目录下建立 package link.roland;//package 语句必须是第一条语句 //该语句表示把该文件中 ...

  2. windows 批量杀进程 类似pkill

    轉:http://blog.sina.com.cn/s/blog_55fb522f0100whki.html 1.开始-运行(或win+R),输入cmd,打开命令行模式: 2.输入tasklist,可 ...

  3. Python 之并发编程之进程上(基本概念、并行并发、cpu调度、阻塞 )

    一: 进程的概念:(Process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位. 资源分配:分配的是cpu和内存等物理资源 进程号是进程的唯一标识 同一个程序执行两次之后是两个进程 ...

  4. Python 基础之import导包

    首先需要将import内容建立一个大概如下层级的包: 以黑色框为第一级,蓝色框为第二级,棕色框为第三级,红色框为第四级 一.import 引入初识 首先在module.py写入代码如下: xboy = ...

  5. Write-up-Bob_v1.0.1

    关于 下载地址:点我 哔哩哔哩视频:哔哩哔哩 信息收集 网卡:vmnet8:IP在192.168.131.1/24 ➜ ~ ip a show dev vmnet8 5: vmnet8: <BR ...

  6. LeetCode刷题--26.删除排序数组中的重复项(简单)

    题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成. 示例 ...

  7. Lesson 13 The search for oil

    What do oilmen want to achieve as soon as they strike oil? The deepest holes of all are made for oil ...

  8. springMVC的执行请求过程

    springMVC的运行流程: 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器 3.处理器映 ...

  9. 九 SpringMvc与json交互

    将json输出到页面: 1 加入jar包 2 配置Controller层,开启注解ResponseBody,将json发送到页面: 3 访问url 4 响应json,在形参列表里面加上注解

  10. 使用Linux命令修改数据库密码

    通过登录mysql系统,# mysql -uroot -pEnter password: [输入原来的密码]mysql>use mysql;mysql> update user set p ...