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

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

[复制链接]
zero99 发布时间:2017-10-23 16:01
AN3156+ s) }+ x4 X! t) G0 h
应用笔记
! @) ?' h& t% v' HSTM32 自举程序中使用的 USB DFU 协议
) S7 s7 `$ Y8 F/ X
, W% r8 \4 P  X% }9 ^, r
8 j  A" m4 j7 x' h( b' s前言- b6 X0 G- x8 }. A0 n) B
本应用笔记说明了 STM32 微控制器自举程序中使用的 USB DFU 协议。它详细说明了每个
! ~3 S8 \$ x& g# s支持的指令。若需器件自举程序 USB 硬件资源和要求的更多信息,请参考 “STM32 系统存4 t! A3 J2 I9 @

& a3 S( ^* R% i  z' q" k. E储器自举模式 ” 应用笔记 (AN2606)。! h! g7 ]  W% Q# Q! m" T7 D
7 L8 W$ |4 o8 j& x1 f2 z4 B
10.png
$ P0 S% X4 p) }( P
/ I# N* X5 P3 w+ x4 Y
1 R1 c6 G; H6 G
7 h0 q; i9 m# H/ ?2 Q5 b# F目录
7 ~( e, M/ V0 h- x1 自举程序代码序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 f3 w2 P0 t9 q* e9 q% J
2 USB DFU  自举程序请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8 P+ j6 D# z& ^3 W1 }3 g3 DFU  自举程序指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 s* j* y0 c2 J; j5 ?9 Q, b4 DFU_UPLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12& c; D) }9 B7 [/ A# M
4.1 Read Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
# t, v" k3 ^' u/ R5 s4.2 Get 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 ^- P# j5 J* `. I- r8 ?* S
5 DFU_DNLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
' [* s/ C. r* B6 R6 \0 q5.1 Write memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 E# R3 s# y. N: d0 h  `5.2 Set Address Pointer 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 m5 L/ V5 ?& K0 B4 |. ?
5.3 Erase 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 q) d' k3 T$ C; c2 `) N7 Y
5.4 Read Unprotect 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
" W9 y. c/ i; z. g( W5.5 Leave DFU mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
+ a3 x% [5 Q0 r+ n& g: }( ~' f6 自举程序协议版本演进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
: H  S5 j. Y, F- A* m- n9 A7 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
% Z* Y1 X, B0 _4 `% l  _) e$ Y; `4 a1 i+ L4 m
. S; b5 t% M, ^2 h; y! M+ v9 {
1 E1 W8 R5 I6 b& e
1、自举程序代码序列
7 \" _3 D/ W# f不同版本的自举程序 DFU 在协议 (请求和指令)方面没有区别。要查看具体的区别列表,+ c+ d4 m1 v6 L/ W! H6 |
请参见第 6 节。
' N* d5 a" t" b: B' {% f进入系统存储器自举模式并且 STM32 器件已配置完毕后 (更多详细信息,请参见5 F# w$ @* k% m& b+ ]) j- t
AN2606),自举程序代码会配置 USB 及其中断,并会等待 “ 枚举完成 ” 中断。" ^( Y, X# B2 J
插入 USB 线缆之后,会立即执行 USB 枚举 (如果 USB 线缆已插入,则会立即执行 USB* J: @. a6 F2 K9 }: K
枚举)。如果不希望 STM32 进入 USB DFU 自举程序,必须在复位前先拔出 USB 线缆。
: `" w( }/ |8 F( V) m, }; R# ?2 c8 d自举程序版本会返回到 bcd 器件字段 MSB 中的器件描述符 (示例:0x2000 = 版本 2.0)。
. \4 Q# l  }2 o- ?+ s对于互连型 USB DFU 自举程序,器件会先尝试使用 25 MHz 配置,如果失败,随后会尝试
' L9 e" J. S  k使用 14.7456 MHz,如果失败,最后会尝试使用 8 MHz 配置。如果仍失败,会使用较大的
7 Z; Y2 O' s  b4 k- e超时值重复执行上述操作 (会再次测试三种配置)。如果第二次尝试也失败的话,会生成系
3 {  T9 R% c6 ^" f+ c' m: s统复位。- g/ m) @" U$ ]1 B  U  e

2 C( H) O6 }5 Z: g1 `. y& r0 d 22222.png 4 f' O, a) y& U% C
' H( O3 F1 O. O' j: f3 n) V0 [
1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自* `) ~5 m# G, D' J9 N$ f1 m
举引脚的状态而定。+ R5 Z+ _* N) `
2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。5 H( o" d/ d; l+ U" r1 h
3. 六次尝试后 (三种时钟配置均测试两次),会生成系统复位。$ i& N8 S$ V; \$ }' r
0 `4 d( C$ O! T- X1 X2 {, h# `
/ L0 p- \% }2 K/ r9 U- {
• 如果产品使用 HSE 进行 USB 操作 (连接型产品除外):' V" x' j& R. G" F! }
– 启动时,会测量 HSE (若存在),如果支持,则会配置 USB。如果未检测到
4 s- |" |2 K. Q  JHSE,自举程序将执行系统复位。如果测得的 HSE 时钟值属于不受支持的值,
( R2 g, N% ~  f# jUSB 协议将无法正常执行。
- g2 G6 @' h6 R4 D6 ]; S5 |6 O• 如果产品使用 HSI 进行 USB 操作。
( G  Z  U; y/ |+ {$ K- r– 启动时,会使用 HSI 时钟配置 USB。0 Y  B+ N0 p4 i, r
关于产品配置的更多详细信息,请参见 AN2606。
3 G6 Q: ]& e; w( X$ D
/ z) Q/ Q$ ]6 Q+ O* o: g 12.png
$ O/ O) Q3 o6 Q" Y4 f/ Z1 Z( y
  I  n; B9 T  L" O# w1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自+ ~% x; R4 @. l. p" P
举引脚的状态而定。
: }  B& q( E# x7 S7 F/ b7 t/ I2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。
! K) Q$ }+ m5 y: u3. 对于某些产品,不会为 USB 自举程序操作使用外部振荡器 HSE,而只会使用内部振荡器 HSI。请查阅) C+ I; G, B) t8 m$ k& h
AN2606 产品的相关章节,了解需要为每种产品使用哪种振荡器。
! [" c1 D8 g/ Q3 F: y7 Q' [& g4 ?. O( M7 W

. _9 N, A- b! {# W' d$ o: w" v: F+ i; p" u# D+ B/ |4 x( _* S
2 、USB DFU 自举程序请求. J5 r4 k. X7 N& M
USB DFU 自举程序支持 2004 年 8 月 5 日发布的 1.1 版 “ 器件固件升级通用串行总线器件升
  h; _! C! o( q3 {+ T8 i) O) ?级规范 ” 规定的 DFU 协议和请求。关于这类请求的更多详细信息,请参见规范。
3 T) z/ D( {2 w- K, \/ p表  2 和 表  3 列举了 DFU 类特有的请求及其参数。
8 v1 C0 `) Q& n  C& B. B3 D表 表 2. DFU  
; F; ~( r0 D; \5 Y) k2 i
5 [7 n  Q# M% H.....! f' S" Q6 t7 ]2 N
, m7 E2 V% c! e6 T! W
9 |) _5 x' M2 S2 n- A" s
阅读更多内容,请下载文档:
  O/ ^5 W1 z3 K& T: K# T
  f  |+ N$ }7 U% H* r+ d# u9 s下载地址1>>        下载地址2>>5 N+ l1 w% w  h& j  Z6 J, J
4 ~4 i6 v$ o: E% T- W
" K7 M3 W" V) R
收藏 评论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+ S+ V& k' ]% D9 U
完整中文译文能发出来吗

& Z. b  V( j# a- m5 M7 f& G摘录了部分,底部有下载链接可下载全文啊..
逆-何惧? 回答时间:2019-12-13 20:07:30
zero99 发表于 2017-12-4 09:35; M5 t8 W8 S) W' b9 l
摘录了部分,底部有下载链接可下载全文啊..
1 i8 U1 a. F3 v, q: x0 s
下载下来还是英文版本的" w. h, K- \0 p1 N( a
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版