个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结

1、该芯片的通信接口为串行SPI接口,需要注意的是由于STM32F1系列芯片引脚内部结构的特性,许多人在配置MISO引脚的时候将该引脚配置为复用推完输出(GPIO_Mode_AF_PP),这是没有错误的(图1);
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第1张图片

2、模式配置需要根据芯片手册来设置,8位宽度,模式0或模式3,高字节在前等(图2);
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第2张图片

3、STM32外设SPI写一个字节惯用的方式如图3,需要考虑的是,为什么该函数有返回。其实这个返回在很多时候就是你要读取的数据,许多SPI通信的模块都是这么处理的,至于第几个返回是有用数据需要根据模块手册来编写;
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第3张图片

4、根据手册编写如下接口:写使能,写禁止,忙检测,写状态寄存器(图4);个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第4张图片


5、扇区擦除接口,这里输入的地址是实际的扇区地址,不需要移位处理。有的人在写这个接口时喜欢数据第几个扇区,然后移位处理(图5)。
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第5张图片

6、初始化的时候需要修改状态寄存器的值,因为状态寄存器上电默认是全块写保护的(图6)。
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第6张图片

7、不同型号的芯片都有一个固定的JedecID,本芯片的JedecID为:0xbf2541,且该值可以直接读取。另外还有各自的设备ID和制造商ID可以直接读取,形参类型idtype为两个元素的枚举类型typedef enum IDTYPE{Manu_ID,Dev_ID} idtype;(图7);
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第7张图片

8、读数据接口,分两种读取方式,读和高速读,区别在于高速读取需要在正式读取之前添加一个单字节写操作(图8);
个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第8张图片

9、一个简单的没有扇区处理的写接口,写入方式为AAI操作,非字节编程。AAI写入又细分为硬件检测,状态寄存器读取,固定时间等待三种处理机制,这里选择的是直接读取芯片状态寄存器来判断忙状态。直接提醒的是每次写入都需要写使能,且
写入的地址必须处于擦除状(图9);

个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结_第9张图片

这里完成了基本接口的编写,但是实际应用中并不是这么简单,如果要添加文件系统,就需要移植文件系统。写入的扇区处理也是比较重要的一个环节。


你可能感兴趣的:(个人笔记)