你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 如何通过 USB 烧录程序

[复制链接]
STMCU小助手 发布时间:2022-6-21 12:52
搭载STM32F103C8 核心的 STM32 开发板由于其 ARM Cortex M3 架构而越来越受欢迎,它具有较高的运行速度和更多的外设选项。此外,由于该板可以使用 Arduino IDE 轻松编程,因此它已成为许多爱好者和工程师快速原型设计的首选。( ^& {/ Q( I$ r1 c0 b! i
) w8 n' |8 x4 u: Y( A( ^3 T6 a& B3 Y$ W
在前面的文章中,我们介绍了使用“Arduino IDE + FTDI ”对STM32F103C8 开发板进行了编程使板载 LED 闪烁。但它有一个小小的缺点,需要对其烧录时,我们需要使用FTDI模块,并且在烧录和测试代码时还必须在跳线0和 1 之间来回切换,有点麻烦。开发板上的 mini-USB 端口也完全未使用。而我们把USB插上电脑时,是识别不到该板的,因为它没有 Arduino bootloader。接下来我们就把Arduino bootloader烧写进STM32F103C8 ,实现USB烧录程序。目前尚不知道这种方式会不会出现不可预知的bug,不建议用于关键应用程序。3 j7 s+ L# s, C. ~6 W, x# Z$ B

+ F  J2 Y5 p; c" _4 i! p所需材料
% H3 G3 O1 `7 z& a3 }§ STM32 开发板 ( STM32F103C8 )
6 F) q. n8 ~& j) y" U# T! ]0 E  h
2 h3 Z" Q' g6 i; g9 C! {5 @§ FTDI 模块
9 s4 o2 y3 V+ L
% y7 {+ o" v: e! v1 P- [# J- i  M% N§ 面包板/ B; \7 ]0 Q8 ]3 D6 I! u

" {5 t0 H+ _* l: E* Y: e§ 连接线
5 J$ P$ w2 \/ w8 Z3 ?5 s4 b
! N# l9 I5 m3 B0 }  C§ 一台联网的电脑, k. x! G# }( @- @9 d, w6 L
; h8 D/ c' S! Q- t( _8 A5 t
连接电路图
" B5 M5 z; M( Q' I( j# B5 s9 K5 W要直接通过 USB 端口对 STM32 进行烧录, 我们需要先将引导加载程序刷入 MCU。为此,我们需要使用FTDI 板(也可以使用CH340这类模块)。该板连接到 STM32 的 Rx 和 Tx 引脚,如下所示。
4 V/ a7 u$ Y9 b6 e& I; m- W4 z) ]+ u" Y
0c223ba1f2e5439775030d8616a5b982.png ! J3 Q, T- ^. I$ a) z$ G
3 S$ ]0 ^: ^3 U/ {
FTDI板的Vcc管脚连接到板子供电的STM32 5V管脚。地连接到STM32的地。FTDI板的Rx和Tx引脚分别连接到STM32的A9和A10引脚。其中 A9 是 STM32 MCU 的 Tx 引脚,A10 是 Rx 引脚。
8 i+ U, o! X! U1 i  D
9 u4 k( i+ W, S4 q7 z/ r' {  p% e1 d 036a6c17e2101b0e545d6ff2f5d9aa45.png
- [, K. M5 r$ L* Y+ F  z! e- S
' B" D3 c( r% }0 e; [) a在上传引导加载程序时,确保板上的引导 0 跳线针设置为 1。上传(烧录)完成,该引脚更改回初始位置。3 m# l. f: `) d& e* ?

) |, \  y- G# _- {# w 3361226955e86e2eead7900a8237d0b6.png
6 ^4 L( [" e/ Y& c/ Y. _; s3 L- H9 r( ^( _3 {7 |) T0 P
将Bootloader 上传到 STM32 开发板
: o0 U. T$ c% q' ?# X完成上述连接后,将 FTDI 板连接到您的计算机,然后按照步骤将BootLoader 刷入 STM32。
. m; u  n! a- Q# C# N
: A, {2 y) d  e) E# D3 r! k, h8 G第 1 步:准备好BootLoader 文件。
+ u1 W, I5 t9 n& e" I& l) F' B5 U( I9 @$ O/ {7 a
第2步: 接下来下载并安装STM Flash loader软件,将下BootLoader 文件刷入STM32。9 y9 h  @7 M- X4 _" `
8 r' x- c1 j% O( ^, ~+ |9 i
进入ST网站,滚动到底部点击Get latest2 t+ g& D7 Y& |- ^0 M
3 [+ d1 a; G# a, Z# p! _
3045928d914d231c76a222b05ed7c58d.png
1 P- \9 _9 L8 ]9 F/ {% g8 Q% a
& k$ K8 V/ |' ~9 s
4 P/ ~0 b7 c& I3 Q# v第 3 步:下载前需要填写相关信息,主要是输入邮箱要正确,其他信息不重要,下载地址会发送到邮箱,从邮箱点击下载。9 {# T# l5 U+ U$ h" v( k

+ Q: e4 A$ p/ W( c第 4 步:下载安装软件后,确保STM32 板Boot 0跳线置于1位置,并已通过 FTDI 板连接到计算机,然后启动软件。软件会自动检测 COM 端口,但还是建议查看硬件管理以确保您选择了正确的 COM 口号。) y# \4 T/ `" w( W, E
1 n, c( }; h! j; V$ j. ~0 v
8cf5db15a10e02b399f7b0d19b6ffd58.png
) y6 }1 u' p, h$ ?- P; \! @
, H4 J; J: b3 w5 N第 5 步: 点击Next按钮两次,软件会再次自动检测板子详细信息并显示如下图。我们使用的板子是 STM32F1,带有 128K 闪存。
+ r. y5 i9 I* z3 a3 O5 }% V- _1 A% T4 M2 S
8d4b937822f0817a2dceba856c30d063.png
1 c5 `/ |! |$ ~
$ R$ L. w: u! e% S- a第 6 步: 在Next中,选择“Download to device”,浏览到我们在第 1 步中准备 BootLoader 文件的位置并选择它。点击Next。
3 M2 T- z. _/ z3 C) J1 f
& |% l8 y* D5 I- P8 j6 k! e第7步: 等待烧写完成。8 ^8 f& f9 X9 ^1 G
3 p9 d7 S$ _6 u
ad6ef0db242b5d24907152f776213f20.jpg
( U8 d% y- Z1 J$ `  ]2 k9 t/ B$ L7 a% X: n4 V
第 8 步: 烧写成功后,我们将看到以下屏幕。单击关闭并退出应用程序。接着我们准备 Arduino IDE 并安装驱动程序,然后才能使用USB烧录 STM32 板。# h7 c0 u" ^7 E9 p

7 l( S  t8 a, }! \ d71c3f048026ac60e4e5411830558fec.jpg , w7 R  X7 m+ F& M' t
  k# G1 J* k6 v- b7 @/ t
准备 Arduino IDE 并安装驱动程序
8 J# Q, N: A2 z6 P, \按照以下步骤下载并准备与 STM 32 开发板一起使用的 Arduino IDE。
* G" C9 {9 h2 C0 W
+ M6 J7 D( l& }第 1 步: - 安装步骤(略)
  k, b8 i: P) q" u' u. q' B9 [9 b
; r+ J% M, H3 D0 E0 g; x: g4 G% z第 2 步: - 安装 Arduino IDE 后,下载安装 STM32 开发板所需的包参考之前的文章+ e2 |6 }+ R" ^

) p$ O' I) C7 Y+ [4 {. T通过下面的网址安装STM32的开发库
4 T+ c% P% s1 t$ o2 ]' ~6 C* F6 ~: K) M# p' O/ P7 I9 x* C2 j
第 3 步: 安装驱动文件(找不到网址了)- t! b; ?  L1 i8 t( ^4 w

1 L; M- {1 ~: n4 l: j" i" P0 kinstall_drivers.bat 和 install_STM_COM_drivers.bat。
+ q( T  v* t; Y+ X/ c
" r. a7 Q5 k# X0 Z; U3 P第 4 步: 单击两个 bat 文件并安装驱动程序。您将看到如下所示的 DOS 屏幕。
4 L3 k# V7 Z4 ]4 i" v" g# {# P$ d- B( H& x! x: r9 D
61afbca918982b5d54a8c311bada51a1.png
& i4 W+ r! u& P2 h( U& B: A" {7 C) ?7 w" g6 |4 }
03b2016294cf188b417ed56fd13dbdd2.png
4 ]9 q3 C2 G! l4 I* W3 W& M
" C7 ^" r* I" W1 H现在 Arduino IDE 已准备好对 STM32开发板进行编程,并且驱动程序也已安装。9 d2 ^8 ^3 y9 r+ j) U
: X( t8 s- ~2 j3 O; `3 \3 x+ i4 b
通过 USB 端口直接烧录STM328 @$ B! H4 v" r" N' v# z! Y4 Q
从开发板上移除 FTDI 板及其他连接。只需使用STM32板上的micro-USB端口将其连接到计算机,如下图所示。确保 跳线 0 引脚定位回 0 。此后,我们不再需要切换跳线来烧录和运行程序。
$ A) X( D! W7 w2 i; h; m6 f$ I$ R
5aba8a8d626c61850924b07c4d56de13.png / B2 R+ B. S; v3 @. l
9 U7 Z( r5 V6 v# x! O) k
把开发板用USB线连上计算机,现在计算机应该能够发现开发板了。如果您看到正在安装任何其他驱动程序,请稍等片刻。然后进入 “设备管理器” 并检查是否发现了您的 STM32 板,如下所示。我的连接到 COM6,名称为 Maple。
8 Y7 `) t+ O: ?  J  v/ b6 b1 L" b6 I. {- z1 L' S9 h$ x3 w
0d7dbe78d4ab6b9e8c955b2f9eb95e8a.png 9 t) H* N* w& M. k; `

! O1 }% B9 @+ i: o打开Arduino IDE转到 “工具” 并向下滚动以找到通用 STM32F103C 系列,如下所示。然后确保变体为 64k Flash 类型,CPU 速度为 72MHz ,并将“Upload method”更改为 STM32duino Bootloader。还要根据“设备管理器”选择正确的 COM 端口。# v3 g1 _/ m; M9 Q) c, f( X

+ ?/ A- r) O# T7 U2 e: T% @ 3783dc3f903b82b65eaf1e68a1e93add.jpg 6 D! @$ u  ^0 a% k
$ h" b& a% l1 y
完成所有更改后,检查 Arduino IDE 的右下角,您应该看到配置信息。我的 STM32 板连接到 COM6,但你的可能不同。0 ]2 U% T& `" g* a# @
5 l8 r+ A( Z2 ^% d, U3 o$ `
ab960563c0e85b84d2a54507e4b23629.png ( Q2 b7 G) u3 j" w* k: I

: q. o" I) [8 M$ Y( E现在 Arduino IDE 已准备好对 STM32F103C8 开发板进行编程。让我们将示例闪烁程序从 Arduino IDE 上传到 STM32F103C8 板,测试是否正常。示例程序可以通过如下步骤找到
$ ~2 B2 p( V5 `( _  n( K1 ^, V# u9 L; q$ N, ^& Q
f7c327acf0061d2d78f9eb686197ac80.png
6 \; Z) h- F5 h5 I' ]6 a8 f3 t' ?6 R* I( {- X. R" B
在打开的示例程序中, 我们必须做一点小改动。默认情况下,该示例是为 PB1 编写程序,但在我们的板载 LED 连接到 PC13 ,因此将所有 PB1 替换为 PC13 。修改后的 完整示例程序 如下。$ i+ E( o3 k- L2 T
4 x& C; E! ^6 R8 e
94f65e6d61adf8f6b8da77c823d553c7.png 0 e5 L3 s7 l, R1 a" w- w( q7 Y4 R
0 ]& i  E  |1 m9 ^: ~& b( {3 G& r' S
按下 Arduino IDE 上的“上传”按钮,您的程序应该被编译和上传。如果一切顺利,那么你应该在 Arduino IDE 控制台上看到以下内容。+ V& c+ c& d) \: g! [7 ?3 _, ^% G

0 P6 l! B5 ^- U5 y( ]8 F, ] 6005b39328ff9c53b441608fd2bb70d4.png
$ X5 n. \) ^! B* I/ l. n* ?; b. F2 j1 z' _$ f9 {2 L
接下来,您应该会看到蓝色 LED 以 1 秒的间隔闪烁,您还可以修改延时时间以增加或减少延迟,检验是否上传(烧录)成功。现在您可以像使用任何其他 Arduino 板一样开始使用 STM32F103C8开发板了,即不再需要更改跳线的位置或使用外部硬件来上传(烧录)和测试程序。& `5 E$ @2 N1 _/ i. ?3 l

% }+ c, f/ q# `; ?" F* n2 C* T# v8 e: R8 c* _
赞 收藏 1 评论0 发布时间:2022-6-21 12:52

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版