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

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

[复制链接]
zero99 发布时间:2017-10-23 16:01
AN3156
, ?. U# O( B# B4 s. e0 A9 p应用笔记! @  O0 m- i% U" @; l7 p
STM32 自举程序中使用的 USB DFU 协议* y8 A: E. n: v* `( Y) ?5 T
& ?( D6 k  J! a& r, a
/ ~3 ]$ M6 r: |; k
前言9 `  S9 c6 E; c$ S4 Q. x; H
本应用笔记说明了 STM32 微控制器自举程序中使用的 USB DFU 协议。它详细说明了每个
3 r1 x9 H1 W, T1 m支持的指令。若需器件自举程序 USB 硬件资源和要求的更多信息,请参考 “STM32 系统存. l# a- G4 j8 O4 h% [' ~: S
+ |4 m- _, ]) }2 j7 [' L  Q# k
储器自举模式 ” 应用笔记 (AN2606)。) _/ U: l, `  \" d7 p
0 z" E, F# @9 G3 C( F+ E
10.png * d4 ~* _6 B% k3 M& V/ X! L

; g1 i& @2 V5 o# l
3 O+ r% K- w$ d1 @. X
: O! ~( p6 F. m8 ]目录
# X9 Z" C$ \; P& Z1 自举程序代码序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
7 d6 x" U6 u! r; X$ L* }7 T+ W2 USB DFU  自举程序请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Y' T* ?' f4 @) R3 DFU  自举程序指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, ]* O0 w& z/ W/ S
4 DFU_UPLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12& U3 [( m2 F- `. f$ p3 k, M+ C
4.1 Read Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12: C% c# ]4 G$ W( T, e5 V
4.2 Get 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12: h$ X! U# D2 `# v2 Y; k! Z5 ^. v
5 DFU_DNLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 @% J3 Q4 K9 t! Z& g$ s* [4 J, z
5.1 Write memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 o: {# H4 C# F2 |% _" Z3 O- u0 f5.2 Set Address Pointer 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
. |( _2 |6 G. k% O5.3 Erase 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6 F: @5 l( g! C8 f5.4 Read Unprotect 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
9 v- }0 t$ n; O, E& v9 F5.5 Leave DFU mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21% j+ Q6 G  y' }7 p8 f! S, @! T9 B
6 自举程序协议版本演进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24. X. R' a7 a, ~5 @! y
7 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
( E' O4 f( {- ~9 }: W7 f
7 R. U+ A$ I( |# Q5 R0 b& g0 Y; y) L: }, j. p* ^4 x

$ V+ }" J  G/ \1、自举程序代码序列  v( G( K9 E% ?8 }. o5 C) _! E# d
不同版本的自举程序 DFU 在协议 (请求和指令)方面没有区别。要查看具体的区别列表,1 c* r* j2 o. e
请参见第 6 节。) v2 Y! t% O0 X$ n5 T( O6 s1 U" I
进入系统存储器自举模式并且 STM32 器件已配置完毕后 (更多详细信息,请参见
5 `. {0 U% L' N' Q* b  b6 jAN2606),自举程序代码会配置 USB 及其中断,并会等待 “ 枚举完成 ” 中断。2 \( U8 `# G1 }( q2 ]" U, M: D
插入 USB 线缆之后,会立即执行 USB 枚举 (如果 USB 线缆已插入,则会立即执行 USB0 M1 c5 \8 `: C2 }
枚举)。如果不希望 STM32 进入 USB DFU 自举程序,必须在复位前先拔出 USB 线缆。5 q" g, X' W5 o) L. [7 l( P
自举程序版本会返回到 bcd 器件字段 MSB 中的器件描述符 (示例:0x2000 = 版本 2.0)。/ Y/ U* W6 n" E" q$ m4 [4 z
对于互连型 USB DFU 自举程序,器件会先尝试使用 25 MHz 配置,如果失败,随后会尝试' y0 M: ]! e5 x) X  l+ I7 b- h
使用 14.7456 MHz,如果失败,最后会尝试使用 8 MHz 配置。如果仍失败,会使用较大的
1 A" [0 a( g- S0 N  }超时值重复执行上述操作 (会再次测试三种配置)。如果第二次尝试也失败的话,会生成系8 l# e' o' d6 I" q; A% I  J. U. P# e
统复位。
. l- N1 b& v0 c# M1 @
; A  ?$ w/ d# }: p0 v 22222.png
  c1 m6 H. u/ b; K9 _0 q
2 W8 d% i5 y7 I# H$ R& I+ P1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自+ b/ K6 N( b7 y4 I- r) O/ X3 t. F+ i
举引脚的状态而定。; m1 G$ {0 u- F7 e
2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。; n: [& X, K# O7 B2 o
3. 六次尝试后 (三种时钟配置均测试两次),会生成系统复位。
- P, l0 g: [' m- A- M, f" [! h6 Y& l& Q& X6 A6 e2 g; n

: h5 T8 l7 Y3 q• 如果产品使用 HSE 进行 USB 操作 (连接型产品除外):2 t$ u3 G) o" t9 U% C! }& D! w' x( p
– 启动时,会测量 HSE (若存在),如果支持,则会配置 USB。如果未检测到
' m  J) J; c( s; A. wHSE,自举程序将执行系统复位。如果测得的 HSE 时钟值属于不受支持的值,1 }5 V4 X  V1 @3 b' D
USB 协议将无法正常执行。+ t$ f- E5 d- N3 K
• 如果产品使用 HSI 进行 USB 操作。8 M4 M( b! w( L1 \- r% P( ]* T
– 启动时,会使用 HSI 时钟配置 USB。
8 z0 x8 t8 m$ O关于产品配置的更多详细信息,请参见 AN2606。
- s, D; j/ R+ s7 `7 ]6 ~, M  v" Q! z$ [7 K  [; ^
12.png ( t& [1 h2 v/ Q, S% w; R# s
2 Z. c5 k/ n  a$ a3 q$ L
1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自# o4 k" T' ?7 X
举引脚的状态而定。2 F: a( z- U  m1 b! I
2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。$ v8 E1 ]9 a6 [' i0 |
3. 对于某些产品,不会为 USB 自举程序操作使用外部振荡器 HSE,而只会使用内部振荡器 HSI。请查阅
7 v4 k  v8 Q" U( DAN2606 产品的相关章节,了解需要为每种产品使用哪种振荡器。! F& S6 z8 L9 H. s

4 ]3 }% \  c9 i( {3 ^3 t  `$ h9 C% C: b. x* [
3 L4 G; y# @% |- v+ f
2 、USB DFU 自举程序请求
* J9 T! _. R. t4 K2 Z* E. l( TUSB DFU 自举程序支持 2004 年 8 月 5 日发布的 1.1 版 “ 器件固件升级通用串行总线器件升
0 Y6 M( J% C  b, x级规范 ” 规定的 DFU 协议和请求。关于这类请求的更多详细信息,请参见规范。' T6 V& i6 j* V4 s
表  2 和 表  3 列举了 DFU 类特有的请求及其参数。( @% X6 Q9 G% G+ M5 d" T5 P9 R
表 表 2. DFU  
7 c' y+ P9 x% M, U" K. H# T- g! ]# }' l$ Z, W$ R0 T
.....7 Y7 C0 T6 y5 K/ P

5 I# Q* b4 B4 _( o/ z
6 d/ g- W7 t( z/ `: }7 O6 v阅读更多内容,请下载文档:
& L0 v7 O1 g4 A; h
4 B' n  v$ d2 J3 e0 \- G下载地址1>>        下载地址2>>
$ B* r5 r( y) V( r$ ?6 `4 D% h0 x* O; U- W9 c. j7 d

; f9 ^  k3 R  C4 Y' i/ b/ a
收藏 评论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
, O) v) I7 o! k" _# l7 e完整中文译文能发出来吗

- E( J% M; u7 w1 @; {) N摘录了部分,底部有下载链接可下载全文啊..
逆-何惧? 回答时间:2019-12-13 20:07:30
zero99 发表于 2017-12-4 09:35
& k% g5 i: l0 K" a0 _( r+ `" u5 s摘录了部分,底部有下载链接可下载全文啊..
. w8 |1 c3 Q, Y1 y* t/ c
下载下来还是英文版本的
; X# S! C4 [1 ]3 N: D/ N
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版