STM32CubeMX+HAL库采用SPI方式驱动FLASH芯片-SST25VF080B

本文详细介绍了如何使用STM32单片机进行SST25F080BSPIFLASH的读写操作,包括配置SPI接口、理解区块页结构、编写驱动程序以及执行各种命令如写使能、读状态和擦除等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        SST25F080B是美国微芯科技推出的一款8Mbit SPI串行FLASH,今天我们来简单了解下如何用STM32单片机进行FLASH的读写操作。首先我们打开STM32CubeMX软件进行SPI的硬件基本配置:

SPI工作方式我们配置为全双工主模式:

基本参数配置保持默认即可:

然后生成代码即可,这里不在过多的赘述关于STM32CubeMX的配置部分,有需要的可以参考我的其他文章。

        这里需要注意的是:时钟极性CPOL和时钟相位CPHA这两个参数需要根据FLASH数据手册的SPI协议来配置,根据SST25VF080B芯片数据手册得知,该芯片工作于模式0或者模式3,我们这里配置为CPOL:0,CPHA:0,

        在写驱动程序之前,我们首先了解下该FLASH芯片的区块页概念:对于该芯片来说总共是8Mbit,也就是1Mbyte,众所周知FLASH闪存是由区块页组成的,但是这些区块页之间的换算关系很多人却搞不明白,我在这里给出计算公式,就拿我们这个芯片SST25VF080B举例说下,简单直观:

对于我们这个FLASH芯片来说:总共是8Mbit,大家都知道1byte=8bit,1K=1024byte,1page=256byte,1sector=4Kbyte,1block=64Kbyte,故我们的芯片SST25VF080B:

总位数bit:8Mbit = 8*1024*1024 = 8388608bit

总字节数byte:8388608bit/8=1048576byte=1M字节

总页数page:1048576byte/256=4096页

总扇区sector:4096page/4=1024扇区

总块block:1024sector/64=16块

所以,对我们这个芯片来说::总共有16个块(64Kbyte*16),每块又有16个扇区(4Kbyte*16),每个扇区又有16页(256byte*16).

SST25VF080B的基本指令表:

根据该表我们在SST25VFxx.h文件中我们做如下定义:

#include "main.h"

#define SST25VF_CSL HAL_GPIO_WritePin(SPI2_CE_GPIO_Port,SPI2_CE_Pin,GPIO_PIN_RESET);   /*配置spi-cs引脚*/
#define SST25VF_CSH HAL_GPIO_WritePin(SPI2_CE_GPIO_Port,SPI2_CE_Pin,GPIO_PIN_SET);
//SST25VF指令表
#define SST25VF_WrStrEnable 0x50			 //写状态使能
#define SST25VF_WriteEnable 0x06       //写使能
#define SST25VF_WriteDisable 0x04      //写禁止
#define SST25VF_ReadStatusReg 0x05     //读状态寄存器
#define SST25VF_WriteStatusReg 0x01    //写状态寄存器
#define SST25VF_ReadData 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值