【官方原创】STM32CubeProgrammer与STM32 Bootloader连接全流程实战指南 LAT1631

张开发
2026/6/1 1:18:13 15 分钟阅读
【官方原创】STM32CubeProgrammer与STM32 Bootloader连接全流程实战指南 LAT1631
关键字Bootloader STLINK-V3SET STM32CubeProgrammer简介STM32器件的片内Bootloader存放于系统存储器boot ROM中由ST在芯片生产期间预编程用户无法修改。其主要功能是通过可用的串行外设如USART、CAN、USB、I2C、I3C、SPI、FDCAN等将应用程序下载至内部Flash。片内Bootloader提供一系列命令主机端可通过这些命令控制MCU执行读、写、擦除等操作。STM32CubeProgrammer是一款集成化的软件工具支持多操作系统提供图形界面和命令行界面支持多种连接方式JTAG、SWD、USB、UART、SPI、CAN和I2C既可手动操作也可通过脚本自动执行。它可作为Bootloader主机端通过Bootloader命令与MCU交互实现对Flash的读写擦除及选项字节的修改等功能。当前版本v2.20.0支持的Bootloader接口包括USB、UART、SPI、CAN和I2C。其中部分接口I2C、SPI、CAN需配合STLINK-V3SET/V3MOD/V3PWR使用否则无法通过STM32CubeProgrammer连接。鉴于部分用户对如何通过STM32CubeProgrammer利用Bootloader接口与MCU建立连接存在疑问本文特此进行详细介绍。1. 实验准备本文实验基于以下环境进行用户可根据实际需求选择方法大致相同。➢ 硬件▪ 目标板NUCLEO-L476RG▪ 调试器STLINK-V3SET也可以是STLINK-V3MOD/V3PWR➢ 软件▪ STM32CubeProgrammer v2.20.0➢ 下面是一些可以用到的文档▪ AN2606: Introduction to system memory boot mode on STM32 MCUs▪ UM2448: STLINK-V3SET debugger/programmer for STM8 and STM32▪ MB1136-DEFAULT-C03 Board schematic (NUCLEO-L476RG的原理图)▪ RM0351 STM32L47xxx, STM32L48xxx, STM32L49xxx and STM32L4Axxxadvanced Arm®-based 32-bit MCUs2. 连接UART/I2C/SPI/CAN/USB 接口的Bootloader本章介绍如何通过 STM32CubeProgrammer 搭配 STLINK-V3SET可选实现与STM32 设备 UART/I2C/SPI/CAN/USB 接口 Bootloader 的连接。2.1. 环境准备2.1.1. 确保STLINK-V3SET已经组装好I2C/SPI/CAN接口STLINK-V3SET或V3MOD/V3PWR提供专有USB接口支持通过多种协议与任意STM8或STM32目标设备通信包括SPI、I2C、CAN和UART。该接口可用于与目标设备的Bootloader进行连接和通信。若需通过STM32CubeProgrammer与目标设备的SPI/I2C/CAN Bootloader建立连接并通信必须使用SLTINK-V3。下图最左侧展示的是全新的STLINK-V3SET如需使用这些接口SPI/I2C/CAN请根据图示进行重新组装具体操作详见UM2448。图1. STLINK-V3SET 组装过程2.1.2. 查看Bootloader 的版本信息如下图所示 : 根据AN2606STM32L476RG包含两个Bootloader版本分别为0xA3版本10.3和0x92版本9.2其版本ID地址均为0x1FFF6FFE如下图所示。图2. AN2606 Rev68 Table3 -bootloader ID信息由于不同版本的Bootloader支持的接口可能存在差异需先确认当前MCU所使用的版本。通过STM32CubeProgrammer可通过以下两种方式查看版本ID如下图所示▪ 方式1连接MCU后STM32CubeProgrammer右下角会显示Bootloader版本号本例中为0x92版本9.2。▪ 方式2读取地址0x1FFF6FFE的内容可直接查看当前Bootloader版本ID示例为0x92版本9.2。图3. 查看MCU的bootloader 版本由于当前Bootloader版本为0x92建议参考AN2606 Rev68中“71.2 BootloaderV9.x”章节了解接口及相关配置信息。图4. AN2606 Rev68-“71.2 Bootloader V9.x”章节2.1.3. 确保已添加LSEUSB接口或HSEUSB/CAN接口• 使用USB接口时需确保MCU已外接LSE32.768 kHz或HSE24、20、18、16、12、8、6、4 MHz。• 使用CAN接口时需确保MCU已外接HSE24、20、18、16、12、8、6、4MHz。• 使用其他接口时因直接使用内部时钟所以无需外接HSE或LSE。详细内容请参考AN2606具体如下图所示图5. AN2606 Rev68 Table 158 – HSE LSE要求图6. AN2606 Rev68 Figure 97- Bootloader V9.x selection for STM32L47xxx/48xxx由于本文涉及CAN和USB两种接口的Bootloader为确保其正常运行已在NUCLEO-L476RG开发板上外接8 MHz的HSE。图7. 在NUCLEO-L476RG添加 HSE2.1.4. 确保MCU运行在Bootloader关键步骤在连接之前需要将MCU配置为从Bootloader启动也可由用户应用跳转至Bootloader本文不作介绍。本文以STM32L476为例用户可根据实际芯片型号进行相应配置。图8. RM0351-STM32L47x的Boot modes从上图可见若要选择从系统存储区Bootloader所在位置启动需要设置BOOT01BOOT10。• BOOT0 的值由 BOOT0 引脚的电平状态决定。• BOOT1 则是选项字节中 nBOOT1 位的反向值。在复位后BOOT0 引脚和 nBOOT1 位上的值会被锁存。虽然出厂时 nBOOT1 默认值为 1即 BOOT1 为 0但为确保正确建议通过STM32CubeProgrammer 进行检查。若发现 nBOOT1 不为 1则需将其设置为 1。具体检查方法如下图所示。图9. 通过STM32CubeProgrammer检查nBOOT1的值是否为1在NUCLEO-L476RG原理图中BOOT0引脚通过10kΩ电阻下拉至地默认处于低电平状态。根据Boot Mode的要求需将BOOT0设置为高电平才能从系统存储区Bootloader所在位置启动。因此需要通过跳帽或杜邦线等方式将CN7接口的5脚VDD与7脚BOOT0连接使BOOT0引脚拉高达到启动Bootloader的目的。图10. MB1136NUCLEO-L476RG原理图-BOOT0引脚的外部电路图11. NUCLEO-L476RG - 将BOOT0引脚接到VDD通过上述配置可确保复位后BOOT0和BOOT1的值分别为1和0。此时按下板上的黑色“Reset”按钮进行复位可根据实际情况进行操作MCU将进入系统存储区片内Bootloader运行。接下来详细介绍STM32CubeProgrammer与Bootloader各接口的连接方法。2.2. UART接口AN2606中描述STM32L476 V9.x版本Bootloader支持三组USART引脚分别为USART1PA9 PA10、USART2PA2 PA3和USART3PC10 PC11。图12. AN2606 Rev68 Table158 - USART接口配置STM32L476 Bootloader的USART接口配置如下具体连接步骤请参考3.2.3章节• 数据位Data8位• 校验位Parity偶校验Even parity• 停止位Stop bit1位• 波特率Baudrate1200~115200由于电脑通常不具备直接串口接口需使用USB转串口工具连接一端连接电脑USB口另一端连接目标设备的USART接口才能让电脑识别为串口设备。USB转串口工具既可选用第三方设备也可使用STLINK的虚拟串口功能。2.2.1. 使用NUCLEO板载STLINK虚拟串口连接目标设备USART接口由于当前使用的是NUCLEO开发板板载的STLINK虚拟串口已直接连接到MCU的USART接口。如果使用自制板则可选择第三方USB转串口工具或使用STLINKV3SET连接Bootloader的USART接口具体请参考3.2.2章节。在NUCLEOL476RG板上STLINK虚拟串口已连接至Bootloader的USART2PA2 PA3接口如下图所示。图13. MB1136(NUCLEO-L476RG)-STLINK虚拟串口电脑连接NUCLEO板后设备管理器中会显示ST-LINK虚拟串口对应的COM端口如下图所示COM端口号因电脑而异。具体连接步骤请参考3.2.3章节。图14. 设备管理器中识别到的NUCLEO板上的虚拟串口2.2.2. 使用STLINK-V3SET的虚拟串口连接目标设备的USART接口STLINK-V3SET 同样提供虚拟串口功能可用作USB转串口工具。图15. STLINK-V3SET 的 VCP连接器位置可使用杜邦线将 NUCLEO-L476RG 的 PC10 和 PC11 引脚分别连接到 STLINKV3SET CN3 接口的 TX 和 RX 引脚如下图所示。请注意STLINK-V3SET CN3 的 TX 是输入引脚应连接到目标设备的 UART_TX 引脚RX 亦同理。表1. STLINK-V3SET的CN9与NUCLEO-L476RG板上 USART3引脚对应关系图16. STLINK-V3SET 与NUCLEO-L476RG接线示意图USART接口将STLINK-V3SET 和NUCLEO-L476RG均通过USB线连接至电脑后设备管理器中会显示STLINK-V3SET虚拟串口对应的COM端口如下图所示COM端口号因电脑而异。图17. 设备管理器中识别到的STLINK-V3SET的虚拟串口2.2.3. 使用STM32CubeProgrammer连接目标设备的USART Bootloader打开STM32CubeProgrammer选择UART接口按照AN2606中的描述进行配置如下图所示。配置完成后点击“Connect”按钮即可建立连接。图18. STM32CubeProgrammer的UART配置图19. UART接口连接成功后的界面连接成功后可像通过 SWD/JTAG 连接 STM32CubeProgrammer 那样对设备进行编程仅部分功能如 CPU 选项卡无法使用。2.3. I2C接口如前所述若需通过STM32CubeProgrammer与目标设备的I2C Bootloader建立连接并通信必须使用STLINK-V3系列设备此处以STLINK-V3SET为例说明。根据AN2606STM32L476 V9.x版本Bootloader支持三组I2C引脚分别为I2C1(PB6 PB7) 、I2C2(PB10 PB11) 和I2C3(PC0 PC1) 。图20. AN2606 Rev68 Table158 – I2C接口配置STM32L476 Bootloader的I2C接口配置如下具体连接步骤请参考3.3.2章节• 速率Speed最高400 kHz• 7位地址7-bit address0b1000011xx0表示写x1表示读连接时在STM32CubeProgrammer中输入的地址为0x430b1000011• 模拟滤波器Analog filter开启ON2.3.1. 使用STLINK-V3SET的I2C桥接口连接目标设备的I2C接口STLINK-V3SET提供了I2C桥接口I2C信号可通过MB1440的CN7、CN9或JP10无须上拉时引出。适配器模块还提供可选的680欧姆上拉电阻通过闭合JP10跳线激活。若闭合JP10跳线T_VCCCN1、CN2、CN6或JP10跳线必须连接至目标设备电源。图21. STLINK-V3SET的I2C接口相关位置以下几种接线方式均可实现连接请根据实际需求选择适合的方案。方式1STLINK-V3SET的JP10与NUCLEO-L476RG的I2C3连接表2. STLINK-V3SET的JP10与NUCLEO-L476RG板上 I2C3 引脚对应关系图22. STLINK-V3SET 与NUCLEO-L476RG接线示意图I2C接口方式2STLINK-V3SET的CN9与NUCLEO-L4764G的I2C3连接表3. STLINK-V3SET的CN9与NUCLEO-L476RG板上 I2C3引脚对应关系图23. STLINK-V3SET 与NUCLEO-L476RG接线示意图I2C接口方式3STLINK-V3SET的CN9带上拉与NUCLEO-L476RG的I2C3连接表4. STLINK-V3SET的CN9带上拉与NUCLEO-L476RG板上 I2C3引脚对应关系请根据上表完成连接并在STLINK-V3SET的JP10位置安装两组跳帽使SCL和SDA均通过JP10连接到T_VCC。接线示意图如下图24. STLINK-V3SET与NUCLEO-L476RG接线示意图I2C接口2.3.2. 使用STM32CubeProgrammer与目标设备的 I2C Bootloader连接打开STM32CubeProgrammer选择ST-LINK接口随后在“Serial number”中选中STLINK-V3SET。根据AN2606中的描述进行配置如下图所示配置完成后点击“Connect”按钮即可建立连接。图25. STM32CubeProgrammer的I2C配置图26. I2C接口连接成功后的界面连接成功后可像通过 SWD/JTAG 连接 STM32CubeProgrammer 那样对设备进行编程仅部分功能如 CPU 选项卡无法使用。2.4. SPI接口如前所述若需通过STM32CubeProgrammer与目标设备的SPI Bootloader进行连接和通信必须使用STLINK-V3系列设备此处以STLINK-V3SET为例说明。根据AN2606STM32L476 V9.x版本Bootloader支持两组SPI引脚分别为SPI1(PA4、PA5、PA6 与 PA7) 和I2C2(PAB12、PB13、PB14 与 PB15) 。图27. AN2606 Rev68 Table158 – SPI接口配置STM32L476 Bootloader 的 SPI 接口配置如下具体连接步骤请参考3.4.2章节• 模式从机Slave mode• 工作模式全双工Full duplex• 数据位宽Data Size8位• 首位传输First bit最高有效位优先MSB First• 时钟极性CPOL低电平Low• 时钟相位CPHA第一个时钟边沿采样Low• NSS管理硬件NSS信号Hardware NSS Single注意MCU的VDDUSB引脚需连接至VDD否则SPI的“Memory Write”操作可能因电压不足而失败不同型号MCU略有差异详见AN2606。NUCLEO-L476RG板上VDDUSB默认已连接至VDD因此本实验无需额外操作。图28. AN2606对VDDUSB的相关描述2.4.1. 使用STLINK-V3SET的SPI桥接口连接目标设备的SPI接口STLINK-V3SET 提供SPI桥接口SPI信号可通过MB1440的CN8和CN9引出。图29. STLINK-V3SET 的SPI桥接口位置以下为使用STLINK-V3SET CN9接口与NUCLEO-L476RG板上SPI1接口连接的详细说明。表5. STLINK-V3SET的CN9与NUCLEO-L476RG板上SPI1引脚对应关系请按照上表进行连接建议使用质量较好的屏蔽线以降低信号干扰和性能下降的风险。接线示意图如下所示图30. STLINK-V3SET与NUCLEO-L476RG接线示意图SPI接口2.4.2. 使用STM32CubeProgrammer与目标设备的 SPI Bootloader连接打开STM32CubeProgrammer选择ST-LINK接口在“Serial number”中选中STLINK-V3SET。根据AN2606中的描述进行配置如下图所示配置完成后点击“Connect”按钮即可建立连接。注意若断开连接后重新连接可能需要先复位MCU设备。图31. STM32CubeProgrammer的SPI配置图32. SPI接口连接成功后的界面连接成功后可像通过 SWD/JTAG 连接 STM32CubeProgrammer 那样对设备进行编程仅部分功能如 CPU 选项卡无法使用。2.5. CAN接口如3.1.3章节所述使用STM32L476 Bootloader的CAN接口时需确保已外接HSE且频率仅限于24、20、18、16、12、8、6或4 MHz。前文提到已在当前板上已添加8 MHz的HSE。此外若需通过STM32CubeProgrammer与目标设备的CAN Bootloader建立连接和通信必须使用STLINK-V3系列设备此处以STLINK-V3SET为例说明。根据AN2606STM32L476 V9.x版本Bootloader支持一对CAN引脚CAN1PB8 和 PB9。图33. AN2606 Rev68 Table158 – CAN接口配置STM32L476 Bootloader的CAN接口配置如下具体连接步骤请参考3.5.2章节• 初始波特率125Kbps• 标识符(Identifier) : 11-bit2.5.1. 使用STLINK-V3SET的CAN桥接口连接目标设备的CAN接口STLINK-V3SET 提供CAN桥接口CAN信号可通过MB1440的CN9和CN5引出 。• MB1440的CN9用于连接外部CAN收发器Transceiver的输入端。• MB1440的CN5适用于无外部CAN收发器Transceiver的目标设备CN5的CAN_TX连接目标设备的CAN_TX引脚CN5的CAN_RX连接目标设备的CAN_RX引脚。使用CN5时需满足以下条件▪ JP7CAN ON已闭合▪ CAN电压提供给CN5.CAN_VCC图34. STLINK-V3SET 的CAN桥接口位置由于NUCLEO-L476RG板上未集成CAN收发器Transceiver因此选择MB1440的CN5接口。以下为使用STLINK-V3SET的CN5与NUCLEO-L476RG CAN1接口连接的详细说明。表6. STLINK-V3SET的CN5与NUCLEO-L476RG板上CAN1引脚对应关系请根据上表完成连接并确保闭合JP7跳线。接线示意图如下所示图35. STLINK-V3SET 与 NUCLEO-L476RG接线示意图CAN接口2.5.2. 使用STM32CubeProgrammer与目标设备的 CAN Bootloader连接打开STM32CubeProgrammer选择ST-LINK接口在“Serial number”中选择STLINK-V3SET。根据AN2606中的描述进行配置如下图所示配置完成后点击“Connect”按钮即可建立连接。注意若断开连接后重新连接可能需要先复位MCU设备。图36. STM32CubeProgrammer的CAN配置图37. CAN接口连接成功后的界面连接成功后可像通过 SWD/JTAG 连接 STM32CubeProgrammer 那样对设备进行编程仅部分功能如 CPU 选项卡无法使用。2.6. USB 接口如3.1.3 章节所述使用STM32L476 Bootloader的USB DFU接口时需确保已外接LSE32.768 kHz或HSE24、20、18、16、12、8、6、4 MHz时钟。前文提到当前板上已添加8 MHz的HSE。根据AN2606STM32L476 V9.x版本Bootloader支持一对USB引脚USBPA11 和 PA12。图38. AN2606 Rev68 Table158 – USB接口配置注意MCU的VDDUSB引脚需连接至3.3V不同型号MCU可能有所差异详见AN2606。NUCLEO-L476RG板上VDDUSB默认已连接至VDD因此本实验无需额外操作2.6.1. 连接目标设备的USB接口若目标板已将USB引脚PA11与PA12连接至USB插座可直接使用USB线连接该插座与电脑随后参考3.6.2章节进行配置和通信以下内容可跳过。虽然NUCLEO-L476RG板与PA11、PA12连接的USB插座但这两个引脚已引出。只需剥开USB线将其DM线和DP线分别连接到PA11和PA12引脚即可。根据USB 2.0规范USB线中不同信号线有对应的颜色标识剥开后可通过颜色区分具体信号线。图39. USB2.0 规范里面对USB线缆的规定以下为使用剥开的USB线缆与NUCLEO-L476 板上USB接口引脚连接的详细说明表7. 剥开的USB线 与NUCLEO-L476RG板上 USB引脚对应关系图40. 剥开的USB线与NUCLEO-L476RG接线示意图USB接口2.6.2. 使用STM32CubeProgrammer与目标设备的 USB DFU Bootloader连接打开STM32CubeProgrammer选择ST-LINK接口在“Port”中选择DFU模式下连接的USB设备。PID 和VID通常无需修改STM32CubeProgrammer默认使用ST产品的默认值PID0xDF11VID0x0483如下图所示。配置完成后点击“Connect”按钮即可建立连接。图41. STM32CubeProgrammer的USB配置图42. USB接口连接成功后的界面连接成功后可像通过 SWD/JTAG 连接 STM32CubeProgrammer 那样对设备进行编程仅部分功能如 CPU 选项卡无法使用。3. 小结本文系统介绍了如何使用STM32CubeProgrammer结合STLINK-V3系列工具通过多种接口USART、I2C、SPI、CAN、USB与STM32系列MCU的片内Bootloader建立通信。内容涵盖了不同接口的硬件连接要求、时钟配置及软件设置结合AN2606、UM2448等官方文档规范明确了各接口对应的引脚和参数确保用户能够正确配置和连接目标设备。结合具体示例指导用户快速完成Bootloader通信的搭建和调试。希望本文能启发用户掌握查阅官方文档的方法了解所用MCU的Bootloader版本及支持的接口理解硬件连接和时钟配置要求从而灵活应用于不同型号的STM32器件。重要通知 - 请仔细阅读 意法半导体公司及其子公司 “ST”保留随时对 ST 产品和 / 或本文档进行变更的权利恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用 ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章旨在交流与分享并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档包括代码电路图等信息 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利

更多文章