这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » AN3156 应用笔记 STM32 自举程序中使用的 USB DFU 协议

共1条 1/1 1 跳转至

AN3156 应用笔记 STM32 自举程序中使用的 USB DFU 协议

高工
2017-10-24 18:11:14     打赏

前言

本应用笔记说明了 STM32 微控制器自举程序中使用的 USB DFU 协议。它详细说明了每个

支持的指令。若需器件自举程序 USB 硬件资源和要求的更多信息,请参考 “STM32 系统存

储器自举模式 ” 应用笔记 (AN2606)。


目录

1 自举程序代码序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 USB DFU自举程序请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8

3 DFU自举程序指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

4 DFU_UPLOAD请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1 Read Memory . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 12

4.2 Get 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 DFU_DNLOAD 请求指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

5.1 Write memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2 Set Address Pointer 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.3 Erase 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.4 Read Unprotect 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

5.5 Leave DFU mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6 自举程序协议版本演进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

7 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


表格索引

表 1. 适用产品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

表 2. DFU 类请求. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 8

表 3. DFU 类特有的请求汇总. . . . . . . . . . . . . . . . . . . . . . . . .. . . 8

表 4. DFU 自举程序指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

表 5. 自举程序协议版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

表 6. 文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

表 7. 中文文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


图片索引

图 1. STM32 连接型器件的自举程序 . . . . . . . . . . . . . . . . . . . . . . . . 6

图 2. 其它 STM32 器件的自举程序 . . . . . . . . . . . . . . . . . . . . . . .. . 7

图 3. DFU_UPLOAD 请求:器件端 . . .. . . . . . . . . . . . . . . . . . . . . . . 13

图 4. DFU_UPLOAD 请求:主机端 . . . . . . . . . . . . . . . . . . . .. . . . . . 13

图 5. Download 请求:器件端 . . .. . . . . . . . . . .  . . . . . . . . . . . . 15

图 6. Download 请求:主机端 . . . . . . . . . . . . . . . . . . .. . . . . . . . 16

图 7. Write memory:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

图 8. Set Address Pointer 指令:器件端 . . . . . . . . . . . . . . . . . . . . . 19

图 9. Erase 指令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

图 10. Read Unprotect 指令:器件端 . . . . . . . . . . . . . . . . . . . . . . . 21

图 11. Leave DFU 操作:器件端 . . . . . . . . . . . . . . . . . . . . . . . . .. 23


自举程序代码序列

不同版本的自举程序 DFU 在协议 (请求和指令)方面没有区别。要查看具体的区别列表,

请参见第 6 节。

进入系统存储器自举模式并且 STM32 器件已配置完毕后 (更多详细信息,请参见

AN2606),自举程序代码会配置 USB 及其中断,并会等待 “ 枚举完成 ” 中断。

插入 USB 线缆之后,会立即执行 USB 枚举 (如果 USB 线缆已插入,则会立即执行 USB

枚举)。如果不希望 STM32 进入 USB DFU 自举程序,必须在复位前先拔出 USB 线缆。

自举程序版本会返回到 bcd 器件字段 MSB 中的器件描述符 (示例:0x2000 = 版本 2.0)。

对于互连型 USB DFU 自举程序,器件会先尝试使用 25 MHz 配置,如果失败,随后会尝试

使用 14.7456 MHz,如果失败,最后会尝试使用 8 MHz 配置。如果仍失败,会使用较大的

超时值重复执行上述操作 (会再次测试三种配置)。如果第二次尝试也失败的话,会生成系


--------------------------------------

查看更多,请下载此文档 >>





关键词: AN3156     应用     程序     STM32    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]