前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速验证移植QSPI操作

快速验证移植QSPI操作

作者头像
用户1605515
发布2020-08-04 11:49:27
7760
发布2020-08-04 11:49:27
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档