如何使用STM32CubeProgram连接到STM32评估板?

1.什么是STM32CubeProgrammer?

STM32CubeProgramer是我们的独立软件工具,可以通过非常简单的图形或命令行界面自动进行STM32编程。该工具还可用于读取和配置Option字节。

此工具通过各种支持的调试和引导加载程序接口支持编程操作。。
您可以使用此工具对连接到STM32微控制器的内部和外部存储器进行编程、读取或擦除。
 

2.简介

在第一篇文章中,我们将介绍STM32CubeProg的一些视图和功能,例如配置面板和内存视图;我们将与他们互动,看看如何使用NUCLEO-G0B1RE进行基本的内存操作。
尽管该示例使用NUCLEO-G0B1RE,但您可以对其他基于STM32的板使用相同的步骤。主要的区别通常是我们在每个接口中都有ST-LINK接口,因此建议您查看板的用户手册以了解这些细节。
本文将从连接NUCLEO-G0B1RE开始,介绍我们可以连接到同一块板的不同方式,并使用ST-LINK V3等外部调试器进行连接。

 

3.了解观点

这是打开与计算机相连的NUCLEO-G0B1RE STM32CubeProgrammer时的第一个视图。

3.1 ST-LINK配置视图

在右上角,您应该看到ST-LINK序列号,这是NUCLEO-G0B1RE板中的ST-LINK。每个ST-LINK都有一个唯一的序列号,可以将多个板连接到计算机,并选择要连接的板;使用下拉框,然后选择与目标相对应的右侧ST-LINK。

3.1.1端口

之后我们有端口下拉框,在这里,我们可以在可以连接到STM32目标微控制器的不同端口之间进行选择;在我们的案例中,我们使用的是SWD,因为该板有STM32G0B1,这是一个仅支持SWD的ARM Cortex-M0+内核;如果我们使用不同的MCU,如带有Cortex-M7内核的STM32H7,我们可以在SWD和JTAG之间进行选择,因为两者都由该内核支持。。

3.1.2频率

谈到速度,第三个下拉框是频率(kHz),这应该根据我们使用的接口提供几个选项,在这种情况下,我们可以从5到4000 kHz。由于我们使用的是2引脚SWD,与5引脚JTAG相比速度较慢。有时,当您的EMI设计不佳,导致编程过程中出现问题时,您可以降低此频率,以在ARM Cortex内核和调试接口之间建立更安全的连接。

3.1.3模式

下一个下拉列表是模式,这让我们可以在关于如何在会话开始时连接到核心的一些重要选项之间进行选择,您可能有一个启用了低功耗的应用程序,调试接口已关闭,这可能会阻止成功连接,或者,我们可以运行一个应用程序,但我们不想在连接期间重置核心。
最可靠的选项是最后一个“重置下”选项,它在连接时保持设备处于重置状态。

3.1.4接入端口

下一个是访问端口,这个几乎总是0,因为我们几乎所有的STM32设备都只有一个端口,即端口0,但这将是您通过Jtag接口访问ARM Cortex Core的访问端口。

3.1.5复位模式

与模式一起,当您试图连接到已经运行的应用程序时,重置模式下拉框是最重要的选项之一,该应用程序可能处于低功耗模式或其他引脚配置;在这里,您可以选择调试接口尝试连接到ARM Cortex Core时的重置行为:您可以在软件系统重置之间进行选择,该重置将通过Cortex-M应用程序中断和重置控制寄存器(AIRCR)重置除调试之外的所有STM32组件,通过nRST引脚重置STM32设备的硬件重置(需要注意的是,JTAG连接器的reset引脚(引脚15)必须连接到STM32微控制器重置引脚才能使用此配置,否则将无法工作)或通过AIRCR仅重置Cortex-M的核心重置。

3.1.6共享

下一个下拉框是“已共享”,当您必须读取内存并调试或授予访问两个不同平台(如STM32CubeIDE和STM32CubeProgramer)的权限时,这将非常有用;启用此选项将允许从其他主机访问ST链路探测。
就在下面,我们有一个小复选框“在低功率模式下调试”,它与模式和重置模式一起可能非常有用;这使我们能够在一些STM32系列中进行调试,如STM32L4、STM32WB和STM32U5。一些STM32Cube示例项目已启用此功能,因此在运行这些示例时,我们需要启用此选项。
除此之外,我们现在有一些关于Target微控制器、板和ST-LINK本身的信息;目标电压是VDD引脚处的目标STM32微控制器电压,固件版本是ST-LINK固件版本。成功连接后,目标信息视图将更新为目标STM32微型控制器信息。

 

4.固件升级-逐步升级

通过ST-LINK探针连接到STM32微控制器板时,最重要的步骤之一是确保ST-LINK固件是最新的;
这里有一个按钮,您可以在其中更新ST-LINK探针固件,就像它看起来一样简单。
单击它将打开STLinkUpgrade工具窗口,其中将显示我们需要检查的一些选项:

 

  • 首先,我们需要检查下拉框是否正确显示了ST-LINK探针的版本/型号,因为我们使用的是NUCLEO-G0B1RE,所以应该是ST-LINK/V2-1。

  • 其次,重要的是要(再次)检查ID是否是我们想要更新的ST-LINK探针的正确ID,以防我们连接到计算机的次数超过。

  • 然后,在更新模式下单击“打开”,这将使我们的STM32微控制器处于Bootloader模式下的ST-LINK探针中,这样我们就可以更新其固件。

  • 您应该会听到操作系统发出的通知声,窗口将更新为ST-LINK固件版本信息,如下所示:

在这里,如果我们想在STM32调试+大容量存储+VCP或STM32调试+VCP之间切换,我们可以更改类型,这将启用或禁用拖放功能来更新NUCLEO-G0B1RE板中的固件。
之后,如果我们有旧版本的固件,我们可以点击升级按钮更新ST-LINK探针固件:


加载栏完成进度后,我们将听到另一个操作系统通知声音,窗口将更新为底部的Upgrade Successful消息:

5.STM32CubeProgrammer–逐步演示

 

现在,我们推出了STM32CubeProgramer,选择了NUCLEO-G0B1RE板,并确保我们的ST-LINK探针固件已更新,我们可以查看内存交互。单击窗口右上角的绿色“连接”按钮。
整个将更新内存和文件版本视图,这将向我们显示内存地址和这些地址的内容,如下所示:


现在我们已经连接,我们可以读取、写入或擦除STM32G0B1微控制器。
让我们读一些地址,在那里我们可以找到要检查的东西。在这个STM32G0系列中,我们在基本地址0x1FFF 7590处有唯一设备ID寄存器,这与我们在STM32CubeProgrammer窗口右侧看到的ID相同,因此,如果我们在设备内存视图左上角的地址框中键入此地址,我们将能够确认;键入地址后,请确保将大小和数据设置为所需的适当值。
由于我们要检查ASCII数字,请使用大小0x400和数据宽度8位,然后单击同一面板右侧的蓝色“读取”按钮,您会看到如下内容:

如您所见,在第7、第6和第10个数据中,我们在目标信息(ascii)0x34 0x36 0x37上看到的ID相同,即0x467。

这个相同的过程可以用来读取STM32微控制器内的任何内存(闪存、RAM、EEPROM、Option Bytes)。
  • 现在,要从elf文件在微控制器内存中编程,可以使用相同的窗口视图;只需单击屏幕顶部的“打开文件”选项卡,即可打开操作系统文件资源管理器,选择与目标STM32微控制器兼容的精灵,然后在同一文件系统资源管理器窗口中单击“打开”。
  • 然后,视图会发生一些变化,显示您选择的精灵文件以及将在内存地址视图中闪烁的内容,如下所示:

您现在会注意到,我们有右上角蓝色按钮上的不同选项,标记为“下载”。
当我们点击加载条时,加载条将显示固件下载到我们的目标STM32微控制器的进度,然后将出现文件下载完成窗口向我们表明该过程是完整的:

STM32CubeProgrammer的另一个有用功能是验证STM32内部的固件是否与文件相同,以确保固件版本的完整性。
要做到这一点,您只需要转到下载按钮上的右下拉箭头,然后选择验证。当您执行此操作时,STM32CubeProgrammer会将其视图中打开的elf文件与与其相连的目标STM32微控制器内的内存进行比较。如果未发现内存和文件之间有任何差异,您将看到一条消息,显示“验证成功完成,未发现数据不匹配”:


要完成本文,请擦除此STM32G0B1内存。要做到这一点,我们需要朝左下角看,找到橡皮擦图标:


当您点击Full chip erase(全芯片擦除)时,目标STM32微控制器的整个闪存将被擦除,因此将出现一个弹出窗口,询问您是否真的想这样做:


之后,会出现一条成功的消息,我们完成了,整个目标闪存都被擦除了。
我们可以确认,查看其内存和文件版本视图:


完成所有交互后,不要忘记点击右上角的绿色按钮,现在应该标记为“断开连接”。

6.有用的链接

  • STM32Cube编程器用户手册:https://www.st.com/content/ccc/resource/technical/document/user_manual/group0/76/3e/bd/0d/cf/4d/45/2...

  • STM32Cube编程器页面:

https://www.st.com/en/development-tools/stm32cubeprog.html
 

  • 使用STM32CubeProgramer视频系列对STM32 MCU进行编程:

https://www.youtube.com/watch?v=WY1hQzMh6wo

7.结论

连接并运行STM32CubeProgrammer是一个简单的步骤,步骤如下:

  • 将板/ST-LINK探针连接到计算机,并确保其列在STM32CubeProgramer ST LINK Configuration(STM32Cube程控仪ST链路配置)面板上。
  • 如果需要,请更新ST-LINK探头固件。

  • 将ST-LINK探头连接到STM32CubeProgrammer

    1. 这将更新内存和文件版本视图

    2. 你可以读取全部或部分内存

    3. 您可以使用二进制文件对内存进行编程

    4. 您可以擦除整个STM32内存

  • 断开连接并享受您的应用程序。