SPI实例之FLASH芯的使用;

原创 2017年05月11日 14:53:36

本实例旨在梳理W25Q128BV基本使用流程,不是涵盖其全功能,也不针对任何平台,具有通用性!

大家都知道芯片数据手册太多且太繁琐,不涉及特殊需求时而我们实际使用的仅仅是其中很小的一部分功能;

现在以W25Q128BV为例进行分析,可推广至其他芯片;


第一步:硬件初始化,即init;

这里的硬件初始化是指初始化芯片W25Q128BV,而不是MCU的GPIO初始化,MCU对应W25Q128BV  GPIO初始化应该在此之前;

W25Q128BV中的初始化为reset指令,分别为0x66和0x99指令,通过SPI将这两个指令发送给W25Q128BV  即可;

好的初始化一般含有初始化反馈,通过读取状态指令可得到该结果,读取状态指令为0x05,通过SPI将这个指令发送给W25Q128BV  即可,返回值中S0位进行判断,若为1即为BUSY,若为0即为空闲;


第二步:读设备号

W25Q128BV中的读设备号指令,分别为0x90指令,通过SPI将这个指令和地址0x000000发送给W25Q128BV ,返回的数据即为ID,且大端在前;


第三步:擦除块

W25Q128BV中的擦除扇区的指令为0x20,通过SPI将这个指令和需要擦除扇区的24bit地址0xXXXXXX发送给W25Q128BV即可;

擦除是否成功,擦除过程中可能失败,失败的表现为超时,与第一步中相同还是通过状态指令得到结果,读取状态指令为0x05,通过SPI将这个指令发送给W25Q128BV  即可,返回值中S0位进行判断,若为1即为BUSY,若为0即为空闲,在超时时间内完成擦除返回成功,否则返回超时;


第四步:写数据

W25Q128BV写数据时必须先开写使能0x06,再写指令,然后写数据;

写使能指令为0x06,通过SPI将这个指令发送给W25Q128BV即可;

使能是否成功,使能过程中可能失败,失败的表现为超时,与第一步中相同还是通过状态指令得到结果,读取状态指令为0x05,通过SPI将这个指令发送给W25Q128BV  即可,返回值中S0位进行判断,若为1即为BUSY,若为0即为空闲,在超时时间内完成擦除返回成功,否则返回超时;


写扇区指令为0x2,,通过SPI将这个指令和需要写的目标扇区的24bit地址0xXXXXXX发送给W25Q128BV即可;

写数据,通过SPI将数组发送给W25Q128BV即可;

SPI在数据传输时也可能发生错误,这个过程中发生错误也可选择性进行上报;


写数据是否成功?写数据过程中可能失败,失败的表现为超时,与第一步中相同还是通过状态指令得到结果,读取状态指令为0x05,通过SPI将这个指令发送给W25Q128BV  即可,返回值中S0位进行判断,若为1即为BUSY,若为0即为空闲,在超时时间内完成擦除返回成功,否则返回超时;


补充:特别注意在写扇区的时候,可能数据的大小大于一个扇区或者数据的地址跨过两个扇区的情况,需进行处理!



第五步

读数据



第六步

对比数据



版权声明:本文为博主原创文章,未经博主允许不得转载。

SPI实验W25Qxx讲解

W25Q64 是华邦公司推出的大容量SPI  FLASH 产品,W25Q64 的容量为 64Mb,W25Q128的容量为128Mb。 W25Q64 的擦写周期多达 10W 次,具有 20 年的数...
  • special00
  • special00
  • 2017年10月23日 17:54
  • 94

W25Q128(W25Q系列SPI Flahs和W25X系列的SPI Flash)驱动,使用句柄方式,分离底层,便于移植

W25Q128(W25Q系列SPI Flahs和W25X系列的SPI Flash)驱动,使用句柄方式,分离底层,便于移植。 编写一些应用代码,将底层与实际应用进行分离,方便移植使用,具体思路就是讲所...
  • cp1300
  • cp1300
  • 2018年01月14日 12:50
  • 91

CMSIS-RTOS2 应用笔记 五 操作理论

系统启动 您的应用程序的main()应至少按照给定的顺序执行以下操作: 硬件的初始化和配置,包括外设,内存,引脚,时钟和中断系统。使用相应的CMSIS-CORE功能更新系统内核时钟。使用osK...
  • wylwws
  • wylwws
  • 2017年05月05日 11:01
  • 2626

初识STM32 SPI

串行外设(SPI) :接口是一种全双工同步串行外设,只允许嵌入式处理器与各种外围设备以串行方式进行通信,数据交换。基于SPI接口的外围设备主要包括Flash RoM,RAM,A/D转换器,网络控制器,...
  • qq_17308321
  • qq_17308321
  • 2016年12月20日 13:50
  • 379

STM32单片机中FLASH空间的分配之bootloader

根据程序运行流程: 正常的程序启动流程:从FLASH启动时,首先从闪存的物理地址入口0x08000000进入,然后是复位中断跳转到复位中断服务程序;复位中断服务程序执行完成后,再跳转到main函数入口...
  • lh2008xp
  • lh2008xp
  • 2017年04月21日 09:44
  • 1125

嵌入式学习笔记(一)——初识NAND FLASH

初识NAND FLASH 今天买了本二手书(《嵌入式系统原理及接口技术》)刚从目录扫到“NAND FLASH”这个概念,晚上就得到了老师的任务,要我做NAND FLASH FTL,神马香港博士做好了接...
  • huqinweI987
  • huqinweI987
  • 2013年10月15日 22:43
  • 5022

GPIO口模拟SPI - 驱动W25Qxx

废话少说,直接上代码: DataFlash_reg.h:/* Using SPIO simulator PB8 -- spi cs PA9 -- spi clock PA10 -- spi MO...
  • EFM32
  • EFM32
  • 2016年01月11日 22:26
  • 4052

STM8S005K6与W25Qxx系列Flash的硬件SPI代码

  • 2015年01月26日 12:46
  • 1.33MB
  • 下载

设备树学习之(十)spi flash

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boo...
  • lizuobin2
  • lizuobin2
  • 2017年01月15日 22:30
  • 1297

SPI_FLASH 操作

一.概念: SPI:serial peripheral interface 串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备 flash按照内部存储结构不同,分为...
  • jscese
  • jscese
  • 2014年06月18日 17:12
  • 3233
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SPI实例之FLASH芯的使用;
举报原因:
原因补充:

(最多只允许输入30个字)