实现简单的SPI读写FLASH
一、前言
继上篇文章SPI的相关知识,本章主要介绍使用SPI协议实现简单的读写FLASH,写入功能主要介绍的是定量数据的页写入,在文章末尾有不定量数据写入的代码例子。使用的开发板是STM32f10x系列,Flash芯片是W25Q64。
二、简介
Flash是属于非易失性存储器,又称为闪存,和EEPROM一样都是掉电后数据不会丢失的存储器。不过,Flash和EEPROM的区别在于,①Flash的存储容量大于EEPROM,②Flash在写入之前的擦除操作时,需要以扇区为最小单位擦除(意思是一大片一大片的擦粗),而EEPROM是允许以字节为单位擦除。
下文中不会对Flash进行仔细地介绍,但要注意的是SPI协议对Flash进行的命令操作,需要进行通过查阅对应Flash的芯片数据手册才能得知,在下文的写宏的头文件(bsp_spi_falsh.h)中,会定义好Flash的内部代码命令。
SPI对Flash的操作,是将要执行的功能的指令编码先发送给Flash,让它知道你要用什么功能。该表中的第一列为指令名,第二列为指令编码,第三至第 N 列的具体内容根据指令的不同而有不同的含义。其中带括号的字节参数,方向为 FLASH 向主机传输,即命令响应,不带括号的则为主机向 FLASH 传输。