1.引言
STM32 MCU 在 bootloader 模式下,可以通过多种可用外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器中,详细内容可参考应用笔记 AN2606《STM32 microcontroller system memory boot mode》。本文档主要介绍利用 STLINK-V3SET 调试/编程工具的 I2C 接口将程序下载到 SDRAM 中并执行的方法。
2.问题描述
问题源自客户的实际需求,希望通过 I2C 接口将程序下载到 SRAM 中执行,进行芯片功能性测试。
3.问题分析与定位
关于在 Bootloader 模式下的应用程序下载,有多篇 LAT 可参考。例如《如何使用STM32NUCLEO 板来测试串口 Bootloader》、《一种在 IAR 中实现通过 SRAM 应用程序跳转到bootloader 的方法》等。应用程序下载到 SRAM 中,也有 LAT 可参考,如《一种在 IAR 中实现通过将程序在 SRAM 中调试的方法 》。通过调研,STLINK-V3SET 支持 I2C Bootloader 程序下载,可以实现在 bootloader 模式下的将应用程序下载到 SRAM 中。
4.问题解决
本文档以 NUCLEO-F401RE 开发板为例进行介绍。本文档介绍方法分为 3 个步骤,首先进行硬件配置与接线,使得 STM32F401RE 与 STLINK-V3SET 通过 I2C 相连,同时保证 STM32F401RE 复位后可进入 bootloader 模式;其次进行软件配置与编程,通过 IAR 可以将程序下载到 SRAM 中;最后通过 STM32CubeProgrammer 软件进行程序下载并运行。下边按三个步骤分别介绍。
4.1 硬件配置与接线
查看 AN2606 可知,通过 Boot0,Boot1 的硬件设置(Boot0 = 1,Boot1 = 0),可使 NUCLEO板上电复位后进入 bootloader 模式。STM32F401RE 的 I2C1, I2C2, I2C3 均支持 bootloader,这里选取 I2C1 接口实现在 bootloader 模式下的程序下载功能。
关于 STLINK-V3SET 与 SRM32F401RE 之间的 I2C 连接,STLINK-V3SET 模块上已提供 680 欧姆上拉电阻,已通过闭合 JP10 跳线激活。同时还需要通过 NUCLEO 板为 STLINK-V3SET 提供 3.3V 供电。参考 AN2606 中 I2C 接线方式,两者的引脚接线如下表所示:
最后,用一根 USB Type A 转 Micro B 的线连接 STLINK-V3SET 和 PC,同样通过调试线给STM32 NUCLEO-F401RE 供电。
4.2 通过 IAR 将程序下载到 SRAM 中
参考另一篇实战经验:《一种在 IAR 中实现通过将程序在 SRAM 中调试的方法》,主要操作为以下 2 点。
(1)在工程的链接选项中选择 stm32f411xe_sram.icf 。
(2)设置一下中断向量表的位置 :
4.3 通过 STM32CubeProgrammer 将程序下载到 SRAM 中并运行
由于 bootloader 使用了一部分 SRAM 程序,需要修改下地址避免冲突。参考另一篇实战经验:《一种在 IAR 中实现从在 SRAM 运行的应用程序跳转到 bootloader 的方法》,对于 SRAM 中 bootloader 区域,我们从关于 bootloader 的应用笔记可以看到以下信息 :
从红色部分我们可以看到 bootloader 使用了一部分内部 SRAM,因此我们需要在stm32f411xe_sram.icf 中修改代码运行的起始地址来避免与 Bootloader 运行时的冲突:
同时,需要修改下中断向量表的偏移量:
在应用中我们写入以下程序 ,每隔 1s 闪烁 LED 灯。
最后,通过 STM32CubeProgrammer 进行程序下载。打开 STM32CubeProgrammer(版本 2.6),在 Serial number 选择 STLINK-V3SET,相关配置如图所示。端口选择 I2C,波特率设为 400KHz,地址设为 0x39(地址为 7 位,例如 STM32F401RE I2C1 地址为 0b0111001x,则 I2C 设置的地址为 0b0111001,即 0x39,不同系列 MCU 地址可能不同,请查看 AN2606)。
点击 Connect 后,如果连接成功,如图所示。
点击 Erasing & Programming,加载 Hex 文件,勾选 Verify programming 和 Run after programming,如下图所示。点击 Start Programming,开始程序下载。程序下载成功后,可以看到 LED2 以 1Hz 频率闪烁,同时 STM32CubeProgrammer 断开连接。若要重新连接,需要按 NUCLEO 板上的复位键,使得 MCU 进入 bootloader 模式。
小结
利用 STLINK-V3SET,通过 STM32CubeProgrammer 软件的 I2C 接口下载程序生成的 HEX 文件后,我们可以看到程序下载到 SRAM 运行之后,LED 灯每隔 1s 闪烁 1 次,应用程序下载成功。
上一篇:STM32F1和F4的区别?STM32的ADC系统的功能特性
下一篇:巧用外设复位修改只读寄存器
推荐阅读最新更新时间:2024-11-17 06:24
设计资源 培训 开发板 精华推荐
- 用于有线网络的 1.8V、5V DC 到 DC 多输出电源
- LT8705EFE 12V 输出转换器的典型应用电路接受 4V 至 80V 输入(最低启动电压为 5.5V)
- 用于 LED 照明的 3.6W、3-LED 高亮度 LED 驱动器
- 用于电池充电指示器的 NCP301LSN25T1 2.5V 电压检测器的典型应用
- 使用 LTC4162EUFD-LAD 1 节 USB 供电充电器和 PowerPath 的典型应用
- DER-108 - 7.2 W 双输出电源
- TL431A 延时定时器精密稳压器的典型应用
- 100W离线开关稳压器应用电路
- SI-8008TMX 1.5A表面贴装型输出可变降压开关稳压器IC典型应用电路
- 用于开/关控制应用的 AM2G-2415DH30Z ±15V 2 瓦 DC-DC 转换器的典型应用
- ELEXCON 2022 深圳国际电子展11月6日(新档期)开幕,速领门票!更有N重好礼等你拿!
- 实战分享|从零开始,设计一款靠谱的开关电源
- EEWorld加磅双重礼 ELEXCON深圳国际电子展诚邀您参加
- 【EEWORLD第二十八届】2011年07月社区明星人物揭晓!
- 免费下载Vishay最新汽车解决方案
- 第三代半导体如何测试 进阶技能备好了!收集能量抽好礼!
- 有奖直播|如何借助Mentor Xpedition AMS对汽车CAN总线进行仿真优化分析?
- 我们猜啦!MDO3000之竞猜有奖:免费的部分会值多少?
- ADI 伺服电机控制解决方案
- 有奖直播:新科技、新课堂、新学期~ ADI软件定义无线电ADALM-Pluto入门实战