STM32 如何使用 USB 烧录程序
搭载STM32F103C8 核心的 STM32 开发板 由于其 ARM Cortex M3 架构而越来越受欢迎,它具有较高的运行速度和更多的外设选项。此外,由于该板可以使用 Arduino IDE 轻松编程,因此它已成为许多爱好者和工程师快速原型设计的首选。
在前面的文章中,我们介绍了使用“Arduino IDE + FTDI ”对STM32F103C8 开发板进行了编程使板载 LED 闪烁。但它有一个小小的缺点,需要对其烧录时,我们需要使用FTDI模块,并且在烧录和测试代码时还必须在跳线0和 1 之间来回切换,有点麻烦。开发板上的 mini-USB 端口也完全未使用。而我们把USB插上电脑时,是识别不到该板的,因为它没有 Arduino bootloader。 接下来我们就把Arduino bootloader烧写进 STM32F103C8 ,实现USB烧录程序。目前尚不知道这种方式会不会出现不可预知的bug,不建议用于关键应用程序。
所需材料
§ STM32 开发板 ( STM32F103C8 )
§ FTDI 模块
§ 面包板
§ 连接线
§ 一台联网的电脑
连接电路图
要直接通过 USB 端口对 STM32 进行烧录, 我们需要先将引导加载程序刷入 MCU。为此,我们需要使用FTDI 板(也可以使用CH340这类模块)。该板连接到 STM32 的 Rx 和 Tx 引脚,如下所示。
FTDI板的Vcc管脚连接到板子供电的STM32 5V管脚。地连接到STM32的地。FTDI板的Rx和Tx引脚分别连接到STM32的A9和A10引脚。其中 A9 是 STM32 MCU 的 Tx 引脚,A10 是 Rx 引脚。
在上传引导加载程序时,确保板上的引导 0 跳线针设置为 1。上传(烧录)完成,该引脚更改回初始位置。
将Bootloader 上传到 STM32 开发板
完成上述连接后,将 FTDI 板连接到您的计算机,然后按照步骤将BootLoader 刷入 STM32。
第 1 步: 准备好BootLoader 文件。
第2步: 接下来下载并安装STM Flash loader软件,将下BootLoader 文件刷入STM32。
进入ST网站,滚动到底部点击Get latest
https://www.st.com/en/development-tools/flasher-stm32.html#get-software
第 3 步 :下载前需要填写相关信息,主要是输入邮箱要正确,其他信息不重要,下载地址会发送到邮箱,从邮箱点击下载。
第 4 步 :下载安装软件后,确保STM32 板Boot 0跳线置于1位置,并已通过 FTDI 板连接到计算机,然后启动软件。软件会自动检测 COM 端口,但还是建议查看硬件管理以确保您选择了正确的 COM 口号。
第 5 步: 点击Next按钮两次,软件会再次自动检测板子详细信息并显示如下图。我们使用的板子是 STM32F1,带有 128K 闪存。
第 6 步: 在Next中,选择“Download to device”,浏览到我们在第 1 步中准备 BootLoader 文件的位置并选择它。点击Next。
第7步: 等待烧写完成。
第 8 步: 烧写成功后,我们将看到以下屏幕。单击关闭并退出应用程序。接着我们准备 Arduino IDE 并安装驱动程序,然后才能使用USB烧录 STM32 板。
准备 Arduino IDE 并安装驱动程序
按照以下步骤下载并准备与 STM 32 开发板一起使用的 Arduino IDE。
第 1 步: - 安装步骤(略)
第 2 步: - 安装 Arduino IDE 后,下载安装 STM32 开发板所需的包参考之前的文章
通过下面的网址安装STM32的开发库
http://dan.drown.org/stm32duino/package_STM32duino_index.json
第 3 步: 安装驱动文件(找不到网址了)
install_drivers.bat 和 install_STM_COM_drivers.bat。
第 4 步: 单击两个 bat 文件并安装驱动程序。您将看到如下所示的 DOS 屏幕。
现在 Arduino IDE 已准备好对 STM32开发板进行编程,并且驱动程序也已安装。
通过 USB 端口直接烧录STM32
从开发板上移除 FTDI 板及其他连接。只需使用STM32板上的micro-USB端口将其连接到计算机,如下图所示。确保 跳线 0 引脚定位回 0 。此后,我们不再需要切换跳线来烧录和运行程序。
把开发板用USB线连上计算机,现在计算机应该能够发现开发板了。如果您看到正在安装任何其他驱动程序,请稍等片刻。然后进入 “设备管理器” 并检查是否发现了您的 STM32 板,如下所示。我的连接到 COM6,名称为 Maple。
打开Arduino IDE转到 “工具” 并向下滚动以找到通用 STM32F103C 系列,如下所示。然后确保变体为 64k Flash 类型,CPU 速度为 72MHz ,并将“Upload method”更改为 STM32duino Bootloader。还要根据“设备管理器”选择正确的 COM 端口。
完成所有更改后,检查 Arduino IDE 的右下角,您应该看到配置信息。我的 STM32 板连接到 COM6,但你的可能不同。
现在 Arduino IDE 已准备好对 STM32F103C8 开发板进行编程。让我们将示例闪烁程序从 Arduino IDE 上传到 STM32F103C8 板,测试是否正常。示例程序可以通过如下步骤找到
在打开的示例程序中, 我们必须做一点小改动 。默认情况下,该示例是为 PB1 编写程序,但在我们的板载 LED 连接到 PC13 ,因此将所有 PB1 替换为 PC13 。修改后的 完整示例程序 如下。
按下 Arduino IDE 上的“上传”按钮,您的程序应该被编译和上传。如果一切顺利,那么你应该在 Arduino IDE 控制台上看到以下内容。
接下来,您应该会看到蓝色 LED 以 1 秒的间隔闪烁,您还可以修改延时时间以增加或减少延迟,检验是否上传(烧录)成功。现在您可以像使用任何其他 Arduino 板一样开始使用 STM32F103C8开发板了,即不再需要更改跳线的位置或使用外部硬件来上传(烧录)和测试程序。
STM32F103C6T6开发板多种烧录方法
# 烧录方法
下面介绍三种方法
1.USB转TTL串口的烧录方法(烧录工具)
2.SWD的烧录方法(STLink和JLink)
3.USB转TTL串口的烧录方法(Arduion)
hex文件的生成可以用keil或Arduion
# USB串口
首先购买的开发板要支持USB串口下载功能
## STM32-FlyMcu
直接用STM32-FlyMcu软件工具进行烧录
通过usb连接开发板,无需短接
选择串口,选择文件,开始编程
STM32F103C6T6 依赖于芯片在出厂时预先烧写的bootloader程序
未知问题:读FLASH失败 一共32KB 可能已经读完了
已读出31KB,进度24%,耗时43547毫秒
读FLASH失败!!!
## STMFlashLoader Demo
硬件 boot0(在SWD那里)接3.3v boot1(PB2)接GND
usb连接
一直下一步
Download to device选择要下载的文件 选文件的时候记得选格式 否则不显示
下载成功后拔掉短接 按复位键
每次都要拔插不方便
# STM32 ST-LINKUtility
## 连接
需要STLink
sw模式下 STLink
1管脚 VCC
7管脚 SWIO
9管脚 SWCLK
20管脚 GND
STLink貌似供电不足 需要usb额外供电
而且只连接了SWIO和SWCLK
## 烧录
硬件正确连接后
点击左上角插头表示连接stlink
下面可以查看指定位置的数据
右边可以看见芯片信息
点击文档按钮
选择hex文件烧录
起始位置为0x08000000
出现“Verification...OK”,说明下载成功
# Keil
下载芯片支持包
Pack Installer
查找 STM32F103C6等待下载
## STLink
硬件连接
sw模式下 STLink
1管脚 VCC
7管脚 SWIO
9管脚 SWCLK
20管脚 GND
配置STLink
https://blog.csdn.net/kebidaixu/article/details/125172873
几个注意的地方
若是在Add中没有
下面文件夹下的.FLM文件
`C:\Users\admin\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Flash`
复制到
`C:\Keil_v5\ARM\Flash`
文件夹中如果也没有
官网下载对应芯片的flash文件
https://www.keil.com/dd2/pack/#!#eula-container
## JLink
硬件连接
sw模式下 STLink
1管脚 VCC
7管脚 SWIO
9管脚 SWCLK
20管脚 GND
一定要接VCC和GND否则无法烧录成功
在上面配置的基础需要修改和注意的地方
## JLink用J-Flash Lite工具烧录程序
硬件连接
sw模式下 STLink
1管脚 VCC
7管脚 SWIO
9管脚 SWCLK
20管脚 GND
# Arduino
下载程序时需要短接引脚
boot0(在SWD那里)接3.3v boot1(PB2)接GND
连接USB
## 第一
首先要增加对stm32开发板的支持
启动aduinoide 在 工具>开发板>开发板管理器的界面中搜索 Arduino SAM Boards
选择 Arduino SAM Boards(32-bits ARM Cortex-M3)开发板的项目安装
(安装完成后没有变化)
## 第二
打开 https://github.com/rogerclarkmelbourne/Arduino_STM32
下载库包并解压到ARDUINO IDE安装目录的hardware文件夹下
## 第三
重启ide
工具>开发板 按照自己板子芯片型号选择开发板系列,本文是Generic STM32F103C series
工具>Upload method :"Serial" 上传方式选择串口
工具>端口 选择好自己对应的串口号
## 其他连接硬件
usbttl的rx和tx分别接到开发板的 Tx Rx上
boot0接3.3
boot1接GND
## 测试程序
示例>A_STM32_Examples>Digital>Blink
PB1连接一个LED灯
其他板子查看自己板子的管脚定义
# 总结
上面种种烧录方法
总结只有两个
1.USB转TTL串口烧录
2.SWD烧录
USB转TTL串口烧录,单片机内有一段预先内置的bootloader程序可以与电脑UART串口通信(芯片引脚tx rx),通过短接的方式触发进入bootloader,电脑将程序传给单片机,单片机bootloader程序将接收到的程序放在指定运行位置。(为什么STM32-FlyMcu不需要短接,可能是通过信号触发的,与DTR、RTS有关)
SWD烧录,芯片硬件上支持(寄存器边界扫描技术),SWD用于调试芯片程序调试的接口。
断点调试
最终建议使用JLink可下载可调试,而且还支持JTAG调试模式
相关问答
lpc1754如何 烧录 ?关于这个问题,LPC1754是一款基于ARMCortex-M3内核的微控制器,烧录方式一般有两种:1.使用JTAG/SWD烧录器进行烧录通过JTAG/SWD烧录器进行烧录是较为常见的...
flash烧录 和ic烧录?,IC烧录原理如何选??[回答]一、定义上的区别1、Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。2、NORF...
32单片机串口 烧录 如何配置?要配置32单片机的串口烧录,首先需要确定使用的烧录工具和烧录软件。然后,连接烧录工具到单片机的串口引脚上,确保连接正确。接下来,在烧录软件中选择正确的...
在座的资深人士!推荐一下: flash烧录 和ic烧录?,IC烧录座子xx...[回答]别的不说,在价格方面弘月科技是一个平价适合大小行业去尝试的,是一个有效果且收费的合理的公司spiflash只是用过这方面的器件芯片,它需要进行串行...
Arduino2560板子上的spi引脚跟ICSP引脚有什么区别?Arduino上的SPI跟ICSP是有关联的两个概念,SPI是通讯总线,ICSP是在线烧录程序的接口,后者使用SPI通信。我们先看Arduino2560的SPI引脚:50--MISO51--M...
怎样利用stc-isp 烧录 程序?要使用STC-ISP来烧录程序,需要先准备好以下几个步骤:确定目标板型号和芯片型号。找到芯片的数据手册或者规格书,了解芯片的引脚布局、寄存器地址等信息。下...
arduino icsp怎么用?Arduino上的SPI跟ICSP是有关联的两个概念,SPI是通讯总线,ICSP是在线烧录程序的接口,后者使用SPI通信。我们先看Arduino2560的SPI引脚:50--MISO51--M...
给芯片 烧录 程序时是在线编程还是脱机编程?有,制作编程烧写工装将编程引脚引线接入到仿真器或者量产编程器的对应脚位,然后将芯片放入烧写工装,余下工作就像在板下载一样的了。有,制作编程烧写工装将编...
IC芯片程序 烧录 问题?,ic程序 烧录 效果怎么样??[回答]您的描述,建议您参考下列信息:先把硬件电路弄通,然后用相应的软件把程序烧进去以上回复希望对您有所帮助,感谢您对英特尔产品的支持与关注。英特尔...
高电平输出怎么转低电平输出?想将接收板的输出端口改为默认输出为高电平,简单方法就是采用NPN型三极管来倒相,这样即可将低电平输出的端口转为高电平输出,电路如上图所示。电阻R1左端接接...