码迷,mamicode.com
首页 > 其他好文 > 详细

STM32:W25Q128的配置与代码

时间:2020-07-03 21:32:59      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:范围   https   接口   支持   执行   ack   切换   复用   info   

1 W25Q128FV特性总结,随便看看

   技术图片

2 结构框图

  /CS引脚:未使能前,引脚属于高阻态,芯片待机状态;片选使能,芯片电压上来,芯片自动准备收发指令数据;

  /WP引脚:使能后,状态寄存器不能被修改;目的是为了防止掉电状态下的SR寄存器可能被噪音之类的修改;下面有图;

  /HOLD引脚:使能CS后,如果使能HOLD,则DO为高阻态,DI,SCK信号无效;

  /RESET引脚:将/HOLD引脚的功能改为复位引脚,然后硬件配置复位;也可以使用复位指令软件复位;

    /WP, /HOLD, /RESET引脚的功能都与QSPI的功能冲突,如果芯片配置成qspi模式,则引脚功能无效;

    WEL出厂默认为0,;当WEL为1时,/WP引脚可与SR寄存器的多bit一起决定block的写保护;

  技术图片

  w25qxx只支持spi模式的模式0和模式3,为什么呢?先占个坑;

  w25qxx在SCK的上升沿读取DI的数据,在SCK的下降沿发送数据到DO;

3 状态寄存器

  w25qxx一共有3个状态寄存器;

  读操作状态寄存器可以知道各种指令操作之后寄存器的状态,可以通过状态寄存器判断指令操作是否完成;

  写操作状态寄存器可以配置芯片的各种功能,如写保护功能,QSPI模式,复位引脚复用等;

  3.1 SR1和SR2:初始化值为0x00;

技术图片技术图片

  (S0)BUSY:当busy为1时,芯片正在执行指令,且不接收新的指令;当busy为0时,芯片不在执行指令,准备接收指令;

  (S1)       WEL:当wel为1时,芯片可以执行写指令;当wel为0时,不能执行写指令;上电后以及执行完各种指令后,wel会被置位为0;

  (S4-S2) BP[2:0]:当配置后,对应地址的擦写操作受到保护,需要先取消保护才能修改;BP[2:0]默认初始化为0,即所有地址均可执行擦写操作;

  (S5)      TB:同BP[2:0]一起决定block protected;默认初始化为0;//可以通过配置SRP[1:0]和WEL来配置TB bit;

  (S6)      SEC:当SEC为1时,BP[2:0]的写保护单位是sector;当SEC为0时,写保护单位是block;

  S[6:2]用来决定数据存储区的非易失性存储功能是否启用;如果启动,则特定block或sector不能直接擦写操作;具体见数据手册第七章末尾的表格;  

  (S8-S7) SRP[1:0]:决定/WP控制状态寄存器的功能是否有效;是针对状态寄存器操作的配置;如下图所示:

  (S9)       QE:当置1后,表示为QSPI模式,且/WP引脚和/HOLD引脚功能无效,将对应引脚杜勇为QSPI数据引脚;

      当QE为0时,/WP和/HOLD引脚功能有效;

      QEbit需要先配置为1,然后执行Enter QPI(38h)指令,才能进入QPI模式;

  (S13-S11) LB[3:1]:当置1后,对应的256bytes的security register永久性只读;是针对安全性寄存器的配置;

  (S14)    CMP:配合前面5bit一起配置非易失性保护;默认初始化为0;

  (S15)    SUS:当SUS为1时,表示执行完了擦写操作75h;当SUS为0时,表示执行完了擦写操作暂停指令7Ah;默认上电初始化为0;

技术图片 技术图片

  (S18)     WPS:当WPS为0时,决定存储区域的非易失性写保护由寄存器的5bit决定;

         当WPS为1时,表示存储区域的写保护通过发送指令来决定;具体见第7章末尾的表格;

  (S22-S21)DRV[1:0]:用来决定驱动输出数据的强度,默认为11b,25%;

  (S23)    HOLD/RESET:默认为0,表示引脚功能为/HOLD;当配置为1时,表示引脚功能为/RESET;

4 指令操作

  芯片为SPI/DSPI/QSPI提供了45条基本指令。这些指令在CS拉低后便准备好接收了;数据传输高位在前先传输;

  芯片为QPI提供了32条基本指令;QSPI接口仅支持从SPI接口使用38h指令切换过去,然后使用FFh切换回QSPI;

  QSPI和QPI的主要差别在于QPI发送指令也是通过4线进行传输的,QSPI发送指令同SPI一样是通过1线进行传输的;

  必须确保所写的地址范围内的数据全部为0XFF,否则在非0XFF处写入的数据将失败!

  SPI的解码缓存是256字节,所以每次执行写操作的时候,写入数据的大小不大于256字节;

  所以执行读写操作数据的时候都要先使能WEL,然后等BUSY位为0;

5 具体代码

  https://github.com/caesura-k/stm32f1_demo.git

  主要是SYSTEM文件夹下的spi/和w25qxx/,提供了stm32上w25q128的flash代码;

STM32:W25Q128的配置与代码

标签:范围   https   接口   支持   执行   ack   切换   复用   info   

原文地址:https://www.cnblogs.com/caesura-k/p/13154546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!