快速验证移植QSPI操作

2020-08-04 11:49:27 浏览数 (1)

1. 摘要

本篇笔记主要介绍,如何在STM32H743上进行QSPI的操作和驱动。为项目进一步开发快速验证。

2. 准备工作

1), IAR 8.32.1

2), STM32Cube_FW_H7_V1.6.0

3. QSPI简介

4. QSPI驱动

在项目的开发中,我们经常会使用外挂Flash在做一些应用,而STM32H743带QSPI接口,可以用来外挂QSPI Flash,我们以winbond华邦的W25Q256为例来说明,借助ST的HAL库例程可以快速验证,首先要熟悉一下W25Q256的数据手册常用命令操作,基于STM32H743I-EVAL板子的例程(注意例程是驱动双片,要做相应修改),根据实际自己的板卡做一些改动和移植,一般硬件电路比较简单,大部分都通用,

软件驱动我们参考H7_V1.6.0QSPI例程里面的以DMA来读写。

编译例程无误后,移植修改,管脚,中断优先级,主要是不同引脚封装的 CS管脚可能不同,24位地址和32位地址的操作命令也不同,需要注意一下,首先分析例程的框架,熟悉结构,而后即可根据自己的实际应用动手修改。

修改stm32h7xx_hal_msp.c文件,

如果不使用DMA操作则屏蔽掉上面蓝色背景色代码DMA的初始化。

配置参数修改:

根据自己的实际,修改初始化配置参数,如时钟分频,FIFO大小,Flash大小,我们使用的是256M bit即32Mbyte大小的Flash, 225 = 33554432(0x2000000), 这个地址我们要熟悉。地址大小改为32位。

擦除操作修改:

改为4字节SECTOR擦除操作指令,按64k大小擦除,常用的指令都在main.h里面可以参考宏定义。

擦除操作的时序图

写操作修改:

写操作按页写,每一页256字节。将写指令由0x32改为0x34, 程序就是完成下面的时序图

读操作修改:

读操作的修改需要根据时序图加入8个Dummy空周期操作,

修改static void QSPI_DummyCyclesCfg(QSPI_HandleTypeDef *hqspi)函数,改为

注释掉498行,改为499行。

读程序就是完成下面读操作的时序图:

完成移植后,编译无误后,可下载到板子测试。

5. 测试验证

从0地址开始按页写,程序中是64k擦除,按页写,每次测试周期都是擦除->写->读->比较正误。如果读写完全一致,则地址加256,开始下一页循环操作,直到所有地址操作完。

通过测试最后一幅图可以看到测试完整个32M地址空间,测试时间比较长,单页很快,整个空间会比较耗时,至此QSPI的操作移植验证操作完成。

在HAL库中,H743_EVAL的官方还提供了下图的驱动,但是感觉不好用,有兴趣的可以看看。

6. 参考文档

序号

文献

1

STM32H743RM

2

STM32Cube_FW_H7_V1.6.0

0 人点赞