通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法

1. 引言

随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。

2. MDK 下载算法基础知识

FLASH 编程算法是一种用于擦除应用程序或将应用程序下载到 Flash 的程序代码。MDK 本身支持的各种器件都自带下载算法,存放在 MDK 各种器件的软件包里面,以STM32H7 为例,算法存在于 Keil\STM32H7xx_DFP\2.6.0\CMSIS\Flash(软件包版本不同,数字 2.6.0 会不同)。

但是,只有 STM32 官方部分开发板提供了算法工程,大多数用户开发板都需要自己编写下载算法。不同的 QSPI-FLASH 的驱动略有差别,因此下载算法也不同。所以,掌握通用的下载算法制作步骤很重要。

MDK 通过创建一批与地址信息无关的函数,实现的功能主要有初始化,擦除,编程,读取,校验等,然后在 MDK 调试下载阶段,会将算法文件加载到芯片的内部 RAM 里面(加载地址可以通过 MDK 设置),然后 MDK 通过与这个算法文件的交互,实现程序下载,调试阶段数据读取等操作。

3. 程序擦除操作执行流程

如图 1(Algorithm Functions (keil.com))所示,可以看出 Flash 的擦除过程包括以下几个步骤:

  1. a) 加载算法到 RAM(一般指片内 SRAM)
  2. b) 执行初始化函数 Init
  3. c) 执行擦除操作,根据用户的 MDK 配置,这里可以选择整个芯片擦除或者扇区擦除。
  4. d) 擦除操作结束后执行 Uninit 函数

图1.程序擦除操作执行流程
图1.程序擦除操作执行流程

4. 程序烧录操作执行流程

如图 2(Algorithm Functions (keil.com))所示,程序烧录执行流程包括以下步骤:

a)对所有的 AXF 文件做 init 初始化(AXF 是 MDK 生成的可执行文件,也就是需要烧录和调试的代码)
b)查看烧写算法 FLM 文件是否存在,如果不存在,则操作结束;如果存在,则继续
c)加载算法文件到 RAM 中
d)执行初始化函数 Init
e)加载用户程序代码至 RAM 中
f)执行写入编程函数 Program Page
g)执行 Uninit 函数
f)操作结束

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keil5是一款ST公司推出的嵌入式开发环境,适用于开发STM32系列单片机的软件。STM32标准库是ST公司提供的一套软件库,其中包含了许多关于STM32单片机的驱动程序和示例代码。 外部SPI Flash是一种外部存储器芯片,可以通过SPI总线与STM32单片机进行通信,实现数据的读写功能。要在Keil5中进行外部SPI Flash下载算法制作,首先需要了解SPI总线的通信协议以及外部Flash的规格和接口。 在Keil5中,可以通过编写C语言代码的方式实现外部SPI Flash下载算法。首先,需要定义与SPI Flash通信相关的寄存器地址、命令等参数。然后,可以使用SPI总线的驱动函数来初始化SPI接口,并按照SPI Flash的通信协议进行数据的读写操作。 具体而言,可以按照以下步骤进行外部SPI Flash下载算法制作: 1. 定义SPI Flash的相关参数,如芯片选择引脚、SPI总线的时钟速度等。 2. 初始化SPI总线,包括设置IO口模式、配置SPI时钟等。 3. 配置SPI Flash的命令、地址和数据长度。 4. 发送写使能命令,允许对SPI Flash进行写入操作。 5. 发送写命令和地址,将数据写入SPI Flash。 6. 发送读命令和地址,从SPI Flash读取数据。 7. 关闭SPI总线。 通过以上步骤,可以实现外部SPI Flash下载算法制作。然后,可以将制作好的下载算法加入Keil5的工程中,通过编译和下载程序到STM32单片机上,从而实现外部SPI Flash的数据读写功能。这样,可以充分利用外部存储器扩展STM32单片机的存储容量,提高系统的性能和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值