打印
[其他ST产品]

LabVIEW实现ST-Link自动烧录单片机

[复制链接]
1696|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在讲解LabVIEW实现ST-Link自动烧录之前先聊一聊ST官方提供一款专用的Flash烧录工具:ST-Link utility。






官方下载链接:STSW-LINK004 - STM32 ST-LINK utility (replaced by STM32CubeProgrammer) - STMicroelectronics

安装完成后打开界面如下图所示,ST-Link utility具体操作请自行查看帮助文档或网络相关资源。



使用特权

评论回复
沙发
grfqq325|  楼主 | 2024-1-28 01:24 | 只看该作者
ST-Link utility工具提供了CLI(Command Line Interface),帮助文档也详细介绍了相关指令如何使用,这里我就是通过CLI去实现自动下载的,其中的命令有很多,我只介绍几个有关烧录的,其它的自行查阅文档。


接下来看看具体的实现步骤。

项目资源下载请参见:https://download.csdn.net/download/m0_38106923/87661155

使用特权

评论回复
板凳
grfqq325|  楼主 | 2024-1-28 01:24 | 只看该作者
1、添加CLI到系统环境变量中
将ST-Link_CLI.exe所在目录的路径(如D:\Program Files (x86)\STM32 ST-LINK Utility v4.6.0\ST-LINK Utility)添加到系统环境变量中,如下图所示:

使用特权

评论回复
地板
grfqq325|  楼主 | 2024-1-28 01:25 | 只看该作者
2、查询ST-Link/V2烧录器信息
先安装烧录器的USB驱动以确保能够正确识别到该烧录器硬件,驱动下载链接:

官方:my.st.com

一切正常可以在设备管理器中找到它,如下图所示:

使用特权

评论回复
5
grfqq325|  楼主 | 2024-1-28 01:25 | 只看该作者
在命令行中输入:ST-LINK_CLI -List ,即可获取烧录器的SN和固件版本,如下图所示:



如果同时连接了多个,这里将展示出多个烧录器信息,SN信息在连接芯片时需要用到。

使用特权

评论回复
6
grfqq325|  楼主 | 2024-1-28 01:26 | 只看该作者
3、连接待烧录的MCU芯片
烧录前请确保硬件连接正常,使用 -c [ID=<id>/SN=<sn>] [JTAG/SWD] [FREQ=<frequency>] [UR/HOTPLUG] [LPM] 命令进行连接,其中包含了很多参数,简单说明如下:参数1(ID/SN):提供烧录器的ID或SN信息,ID从[0..9],根据连接的烧录器数量递增,SN信息可以通过-List命令获取;
参数2(JTAG/SWD):选择使用的接口协议类别,是用JTAG还是SWD,默认使用的是JTAG,这里我选用SWD;
参数3(FREQ):设置不同协议的频率,JTAG和SWD支持的各不相同,JTAG默认使用的是9.0MHz, SWD默认使用的是4.0MHz,通常使用默认即可,也可以通过索引去设置 FREQ=x,SWD(x=0~10), JTAG(x=0~6),分别代表了不同的频率,具体请查看文档;
参数4:设置复位模式,UR(Connect to the target under reset), HOTPLUG(Connect to the target without halt or reset),这里我选用UR;
参数5:激活在低功耗模式下调试。详细内容请阅读帮助文档,如下图所示:

使用特权

评论回复
7
grfqq325|  楼主 | 2024-1-28 01:31 | 只看该作者
使用ID连接如下图所示:

使用特权

评论回复
8
grfqq325|  楼主 | 2024-1-28 01:31 | 只看该作者
使用SN连接如下图所示:

使用特权

评论回复
9
grfqq325|  楼主 | 2024-1-28 01:32 | 只看该作者
4、下载固件到Flash
使用 -P <File_Path> [<Address>] 命令进行操作,其中地址是可选的,如果没有特定要求可以不指定,STM32的Flash映射地址是从0x08000000开始的,固件文件格式支持3种:.bin, .hex, .srec;如果文件路径中有空格,需要包含在双引号中,演示如下图所示:

使用特权

评论回复
10
grfqq325|  楼主 | 2024-1-28 01:32 | 只看该作者
如果需要验证烧录是否成功,需要使用 -V [while_programming/after_programming] 命令,一种是在烧录中进行验证,另一种是在烧录完后进行,如下图所示:

使用特权

评论回复
11
grfqq325|  楼主 | 2024-1-28 01:32 | 只看该作者
到这里烧录功能就已经实现了,接下来说几个可能会用到的命令。

5、可能会使用的命令
5.1、-Rst
复位MCU,如下图所示:

使用特权

评论回复
12
grfqq325|  楼主 | 2024-1-28 01:33 | 只看该作者
5.3、-SE
擦除指定的扇区,-SE <Start_Sector> [<End_Sector>],如果只指定起始扇区号,就只擦除这个扇区,如 -SE 0 (擦除扇区0);如果指定了起始和结束扇区号,那么会擦除指定区间范围内的所有扇区,如 -SE 2 12 (擦除扇区2~扇区12),如下图所示:

关于指令就介绍这么多,其它的功能需要用到的话请自行查阅帮助文档。

使用特权

评论回复
13
grfqq325|  楼主 | 2024-1-28 01:33 | 只看该作者
6、封装好的LabVIEW库
以上指令都是在命令行中输入的,用来手动验证还是不错的,为了更方便地使用,我把它们封装好了,如下图所示:

使用特权

评论回复
14
grfqq325|  楼主 | 2024-1-28 01:33 | 只看该作者

使用特权

评论回复
15
grfqq325|  楼主 | 2024-1-28 01:34 | 只看该作者

使用特权

评论回复
16
grfqq325|  楼主 | 2024-1-28 01:34 | 只看该作者

使用特权

评论回复
17
grfqq325|  楼主 | 2024-1-28 01:34 | 只看该作者

使用特权

评论回复
18
grfqq325|  楼主 | 2024-1-28 01:34 | 只看该作者

使用特权

评论回复
19
kuanglele| | 2024-9-23 09:38 | 只看该作者
谢谢楼主分享,但是我遇到一个问题。下载之前单片机的flash是锁定状态,先要通过SWD接口解锁flash。不然下载不进去,这个有LCI命令控制吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

514

帖子

4

粉丝