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

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

[复制链接]
zero99 发布时间:2017-10-23 16:01
AN3156: `2 S8 l$ k3 q3 y5 m6 K
应用笔记9 f% [" }4 E- c& p+ o
STM32 自举程序中使用的 USB DFU 协议3 M# M9 X& S( a1 O) k$ z( l

9 J! C6 u# d5 g: S
8 `! [( i. S- a4 E$ S# }) A前言
' v" @* ]4 G2 N3 j5 ?$ V  Y! m本应用笔记说明了 STM32 微控制器自举程序中使用的 USB DFU 协议。它详细说明了每个
$ s3 {+ z; @/ a" [支持的指令。若需器件自举程序 USB 硬件资源和要求的更多信息,请参考 “STM32 系统存# Q" Q% _# `5 K+ w
) o# i6 Z. k" @; y2 m
储器自举模式 ” 应用笔记 (AN2606)。
' S1 J! z6 |# a7 j- V6 m/ B& X; j% n% y: P
10.png
) i6 s0 M. P! `2 ^* t5 w' O' l: M
% c0 C$ x2 d+ J/ x7 a' `) N
9 |3 A" ]7 x1 x7 f9 `5 f3 c
目录$ D( |1 l- b% e! o+ Y
1 自举程序代码序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5/ x7 [9 z7 ^+ D2 n8 M; z: V% C" y: Y8 \+ w
2 USB DFU  自举程序请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
" g( j! P' p: a0 l4 G3 DFU  自举程序指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
: N# X. W8 j3 S" m6 c  W1 B/ M; h4 DFU_UPLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
* {/ c) P% X9 s$ R) D' |4.1 Read Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12; A: s9 ^! P" \- l
4.2 Get 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12% U2 N, f% U. q. Q
5 DFU_DNLOAD  请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 O+ L) A$ k. V% ~3 {
5.1 Write memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17. ]1 |" ?, Q& n9 ^0 F4 j
5.2 Set Address Pointer 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
( T, E$ |6 l( F. X5.3 Erase 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19$ p+ L+ n# j+ l3 i6 ^) @% m
5.4 Read Unprotect 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
" S! h5 W. Z0 b  d6 I5 O: C& B5.5 Leave DFU mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 j- x1 _9 a+ S: M) M  h
6 自举程序协议版本演进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24# C8 k$ R2 V, K% d5 q
7 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 w6 U( Y) s: k3 ~  X
  S1 J6 h: O' X1 I! w  V# R+ r' I9 V6 z  Z( ]; u) w* D
$ ~" z% P! A" ]! T7 `
1、自举程序代码序列9 @7 P' F3 e' D% _$ z
不同版本的自举程序 DFU 在协议 (请求和指令)方面没有区别。要查看具体的区别列表,
! ^+ P1 @# s* a4 A请参见第 6 节。. y9 }, Z; u" h' _, E4 [3 V
进入系统存储器自举模式并且 STM32 器件已配置完毕后 (更多详细信息,请参见; n1 y( P+ I* X+ }9 K8 R
AN2606),自举程序代码会配置 USB 及其中断,并会等待 “ 枚举完成 ” 中断。
2 W- G, [: J; I5 u& m2 i& a插入 USB 线缆之后,会立即执行 USB 枚举 (如果 USB 线缆已插入,则会立即执行 USB
0 u5 e3 \5 z7 t. R: o枚举)。如果不希望 STM32 进入 USB DFU 自举程序,必须在复位前先拔出 USB 线缆。: @& Y/ M8 {/ H* ~
自举程序版本会返回到 bcd 器件字段 MSB 中的器件描述符 (示例:0x2000 = 版本 2.0)。( {& Y: a4 }) A, S
对于互连型 USB DFU 自举程序,器件会先尝试使用 25 MHz 配置,如果失败,随后会尝试
# r1 Y+ \. X8 k6 G使用 14.7456 MHz,如果失败,最后会尝试使用 8 MHz 配置。如果仍失败,会使用较大的
8 _/ U2 n8 [2 r! ^# K超时值重复执行上述操作 (会再次测试三种配置)。如果第二次尝试也失败的话,会生成系: B9 d" F3 u* Q/ s/ V. ~! F
统复位。
7 R: v4 m) z0 u2 b2 ]% L0 H; E+ Z' n9 A( P" @
22222.png
8 J% u) X" Q* M" g9 W) B3 p5 ]3 G& `0 V' ~3 K0 p1 p, I' q
1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自  x& F4 ^' q+ P* q4 ^4 Y
举引脚的状态而定。9 W2 c5 H% `$ o3 h! y8 y
2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。' G) p5 ^; `0 e  c7 ^! f
3. 六次尝试后 (三种时钟配置均测试两次),会生成系统复位。
: y  r" P% s7 Z: E: u5 Z
9 Z8 r7 B. ^- L+ ]: G8 Z1 w2 m8 r  I* R6 C9 ]# I5 X, m* A
• 如果产品使用 HSE 进行 USB 操作 (连接型产品除外):
  h+ m0 {2 F7 H1 `! E' W( H) v– 启动时,会测量 HSE (若存在),如果支持,则会配置 USB。如果未检测到
5 H$ D6 V3 z- }' X0 W) r8 L/ vHSE,自举程序将执行系统复位。如果测得的 HSE 时钟值属于不受支持的值,* w- a8 F7 i' d/ g
USB 协议将无法正常执行。
$ _; A! S# q$ q2 a& _* Y3 F% `• 如果产品使用 HSI 进行 USB 操作。
( ^5 V% z& o$ Q– 启动时,会使用 HSI 时钟配置 USB。& H* c& [8 V5 Y7 K! O
关于产品配置的更多详细信息,请参见 AN2606。
9 m+ Q7 o) m( R0 e) p. M) Z" y) O% F! S
12.png
6 o' ]( ^0 Q# [' J1 e
; L8 C7 ?- r) j! Y0 ]1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自2 w! n) f' v1 [$ G# w# S
举引脚的状态而定。" W8 M, k% d% g4 ~
2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。
% [# }" r7 C! B8 w0 ]3. 对于某些产品,不会为 USB 自举程序操作使用外部振荡器 HSE,而只会使用内部振荡器 HSI。请查阅
! Y+ z7 V' E& A9 |$ }9 XAN2606 产品的相关章节,了解需要为每种产品使用哪种振荡器。% i- e) a) B* i0 x  x
- m" L. Y1 ?9 |: E4 s& P

: J" P! I- o8 J' |! `  f3 w. j: k4 y9 b' X  o
2 、USB DFU 自举程序请求
7 \4 M2 W* y) SUSB DFU 自举程序支持 2004 年 8 月 5 日发布的 1.1 版 “ 器件固件升级通用串行总线器件升4 d$ ^9 e2 H8 ?7 V" ^& Z
级规范 ” 规定的 DFU 协议和请求。关于这类请求的更多详细信息,请参见规范。
2 i/ ^, Q8 M7 T) H, J4 F表  2 和 表  3 列举了 DFU 类特有的请求及其参数。
7 G% O5 i. g6 ]8 P5 d表 表 2. DFU  " d$ e1 o* t/ ^2 Z) i* v$ E

* F7 j8 a# Q( r* {3 P.....( D! W! f( k+ F' h  ^! H! W7 y

3 j8 Q7 Y/ g9 A3 X) C! \+ `8 o2 E  f% v4 i
阅读更多内容,请下载文档:
9 c7 }6 [8 E5 @+ Z2 e
+ ]7 A' |# H5 g' I) |, R, H0 `  w% p下载地址1>>        下载地址2>>- o1 ^/ @" j1 W2 ?
/ h. D% `, A: l: o/ O, I
; Y3 ]0 D9 x3 `8 v! t0 B
赞 收藏 评论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
* `- m: @: J% O+ O, v完整中文译文能发出来吗

- W$ Z% g- M- a: u摘录了部分,底部有下载链接可下载全文啊..
逆-何惧? 回答时间:2019-12-13 20:07:30
zero99 发表于 2017-12-4 09:35' i! Z) |+ t* s4 _2 L' t8 x* V3 t- `
摘录了部分,底部有下载链接可下载全文啊..

) W5 l+ ?& {) ]下载下来还是英文版本的& y6 a, u: |9 P$ U) i

所属标签

相似技术帖

官网相关资源

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