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

AN3156:STM32 自举程序中使用的 USB DFU 协议(中文译文)

[复制链接]
zero99 发布时间:2017-10-23 16:01
AN3156
# g$ U8 V! E# T3 H6 f7 i应用笔记7 M# c5 j4 y0 O% z9 V' n
STM32 自举程序中使用的 USB DFU 协议
, h5 K1 e" r! [* J. a
4 w2 N. \& l5 p9 ~- u) N! W$ [2 u+ ^. D6 J5 ^! d4 M; ~- v
前言9 {7 F# b( M( R
本应用笔记说明了 STM32 微控制器自举程序中使用的 USB DFU 协议。它详细说明了每个
  w8 M* W9 E  }) ^9 _% ]* ~支持的指令。若需器件自举程序 USB 硬件资源和要求的更多信息,请参考 “STM32 系统存; k  t! x: H/ R" }
  l( W% g8 Q2 S
储器自举模式 ” 应用笔记 (AN2606)。
7 `9 }5 b# F" ?
% [! |& p! x; T, v' f 10.png
! r" D! Z* L# z- R0 E6 k. z+ R, @; s$ p

% w$ z8 N$ w7 ?' g
4 ~; Z& O6 X6 ]& ]9 ?目录, [. I0 G4 M1 Z+ M6 }1 E: R
1 自举程序代码序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 w! i: U( y( U) u; j$ A7 y
2 USB DFU  自举程序请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 D- l7 y* y4 e1 u6 @! C5 U$ G# |. {3 DFU  自举程序指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
/ L/ Y! {& o; ?: h( K$ W4 DFU_UPLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
, i2 d4 n, R! z3 V' R0 |3 X4.1 Read Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
; X! J5 M9 {+ P! s$ \5 c4.2 Get 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
( a  f. ^8 r' I2 R5 DFU_DNLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6 z( i6 @* _" s5.1 Write memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
/ Y3 D) C, g4 w, ^. {6 K" N  p5.2 Set Address Pointer 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18& g$ K3 r) w* }. z( j1 l5 o: @5 H3 V3 x
5.3 Erase 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
* O' P- q/ b+ l5 T& E% g" O1 V5.4 Read Unprotect 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 D9 z  p/ n& J
5.5 Leave DFU mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21: D$ X0 L" r6 w. B. g3 `+ g
6 自举程序协议版本演进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 O! P) N, y. ^# j, F& ]0 @
7 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 a' z9 G+ j5 Y4 e6 P. I

0 l$ C) G* ?0 y) J- Q
. }5 b" s4 e; S- y( ^" M2 R
6 _) s8 X! V1 E1、自举程序代码序列: x2 e! e- J1 }- `' W3 c
不同版本的自举程序 DFU 在协议 (请求和指令)方面没有区别。要查看具体的区别列表,
7 [  j9 R8 t+ c( M' w请参见第 6 节。
8 s2 O3 J' _2 g5 v进入系统存储器自举模式并且 STM32 器件已配置完毕后 (更多详细信息,请参见
3 X. k; W# L7 P6 ^AN2606),自举程序代码会配置 USB 及其中断,并会等待 “ 枚举完成 ” 中断。# E1 U! m0 O( i. o
插入 USB 线缆之后,会立即执行 USB 枚举 (如果 USB 线缆已插入,则会立即执行 USB
) p! F0 y) Y9 \枚举)。如果不希望 STM32 进入 USB DFU 自举程序,必须在复位前先拔出 USB 线缆。
/ ^0 t5 C) c0 h5 ^0 q. |自举程序版本会返回到 bcd 器件字段 MSB 中的器件描述符 (示例:0x2000 = 版本 2.0)。
% V; v- T7 j% ~, u6 t, }$ k. r对于互连型 USB DFU 自举程序,器件会先尝试使用 25 MHz 配置,如果失败,随后会尝试  v7 A5 Z7 I. {/ \# N
使用 14.7456 MHz,如果失败,最后会尝试使用 8 MHz 配置。如果仍失败,会使用较大的
9 Y7 N) [- l2 _$ g+ m0 Y1 J; J超时值重复执行上述操作 (会再次测试三种配置)。如果第二次尝试也失败的话,会生成系5 [8 D. B% j+ G! r
统复位。7 L' A3 G  q2 t2 n
$ {  [; G" |# z5 w3 L7 Q4 y
22222.png 6 b* w: v- i6 Y- Z" D
  d- C! s1 d: V8 M
1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自
) E. d! f: D( ]8 l* {举引脚的状态而定。; O. q( ]# y. X$ E4 d
2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。$ I$ R5 l/ v) V/ n
3. 六次尝试后 (三种时钟配置均测试两次),会生成系统复位。0 t) L1 U' L5 E7 P' H) x$ ]  h
: W0 K2 p- h2 h0 `% u* t% W
5 V9 `3 W0 h& p
• 如果产品使用 HSE 进行 USB 操作 (连接型产品除外):  J  ~, R$ ^% v
– 启动时,会测量 HSE (若存在),如果支持,则会配置 USB。如果未检测到2 e2 }( C! ]  i: [. Z
HSE,自举程序将执行系统复位。如果测得的 HSE 时钟值属于不受支持的值,
; n) k  c% j% a; S5 w! J+ Y0 nUSB 协议将无法正常执行。
0 W) M  H; O+ m5 J. \$ A$ q• 如果产品使用 HSI 进行 USB 操作。
7 q( m: M% j; [9 J: {( m' v4 W– 启动时,会使用 HSI 时钟配置 USB。* T0 C( E& I+ v
关于产品配置的更多详细信息,请参见 AN2606。
8 |8 ^$ |; ~: ^  |
3 Q5 q7 r( W0 x) {' i" O 12.png
% u5 i$ J* ~1 l7 K8 Y5 d# R
* i3 I! P. ?8 @; z) D, k1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自# ^! S' U+ t; d& T
举引脚的状态而定。
$ `7 Z8 Y  ~) j# {7 a2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。
) l& p! \8 |; T# M3 e/ i3. 对于某些产品,不会为 USB 自举程序操作使用外部振荡器 HSE,而只会使用内部振荡器 HSI。请查阅. R4 m* G; x' M: g% f- p
AN2606 产品的相关章节,了解需要为每种产品使用哪种振荡器。' d# X, B$ G7 ?& I* ?# [( ~# E& u
% i4 W' D* V- A: D9 }
; k" r6 @* c7 m; l" m

) [  w0 m2 V* ~; n# c1 g* z- G( x2 、USB DFU 自举程序请求
2 D  j8 D8 j7 R) U: W# IUSB DFU 自举程序支持 2004 年 8 月 5 日发布的 1.1 版 “ 器件固件升级通用串行总线器件升4 D, ]! }4 ]! k6 F/ C7 Z3 t3 X
级规范 ” 规定的 DFU 协议和请求。关于这类请求的更多详细信息,请参见规范。
8 {9 l% _. m' T& ?/ T6 D" t表  2 和 表  3 列举了 DFU 类特有的请求及其参数。
5 F' I( X0 j! l) W表 表 2. DFU  
! v) ^9 z+ i6 X3 Y- N+ n% s2 C, v  D$ [3 r. X. q0 Y7 K0 F% O8 [
.....
! l' w! j( p* Z) m7 K2 K0 J+ m0 H+ t

  \- W* h5 m) U$ _2 G# r% S# B+ L阅读更多内容,请下载文档:
+ V' F! s) {5 V7 n* F% {9 k5 @. X/ F5 U' u
下载地址1>>        下载地址2>>
8 a' a' l0 |6 P( c9 s6 e1 {) x) u" ?( f' H9 w
+ N# ^) O3 F3 M* c/ ?9 F
收藏 评论3 发布时间:2017-10-23 16:01

举报

3个回答
行者person 回答时间:2017-12-1 10:41:27
完整中文译文能发出来吗
zero99 回答时间:2017-12-4 09:35:04
CHLRX 发表于 2017-12-1 10:41
2 t0 E0 x8 a- N完整中文译文能发出来吗

2 k- v6 X; q7 {* f3 G) |9 g2 j摘录了部分,底部有下载链接可下载全文啊..
逆-何惧? 回答时间:2019-12-13 20:07:30
zero99 发表于 2017-12-4 09:35: P0 {! F( k& v/ _1 Q" L
摘录了部分,底部有下载链接可下载全文啊..
+ ]8 a/ d( l' R% P# j! W
下载下来还是英文版本的. l1 h' H$ \# T, h6 L" v

所属标签

相似技术帖

官网相关资源

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