
前言 本应用笔记说明了 STM32 微控制器自举程序中使用的 USB DFU 协议。它详细说明了每个支持的指令。若需器件自举程序 USB 硬件资源和要求的更多信息,请参考 “STM32 系统存储器自举模式 ” 应用笔记 (AN2606)。 ![]() 1自举程序代码序列 不同版本的自举程序 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 配置。如果仍失败,会使用较大的超时值重复执行上述操作 (会再次测试三种配置)。如果第二次尝试也失败的话,会生成系统复位。 ![]() 1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自举引脚的状态而定。 2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。 3. 六次尝试后 (三种时钟配置均测试两次),会生成系统复位。 • 如果产品使用 HSE 进行 USB 操作 (连接型产品除外): – 启动时,会测量 HSE (若存在),如果支持,则会配置 USB。如果未检测到 HSE,自举程序将执行系统复位。如果测得的 HSE 时钟值属于不受支持的值,USB 协议将无法正常执行。 • 如果产品使用 HSI 进行 USB 操作。 – 启动时,会使用 HSI 时钟配置 USB。 关于产品配置的更多详细信息,请参见 AN2606。 ![]() 1. 系统复位后,器件可能会返回到 BL_DFU 循环,也可能执行 Flash 存储器中的代码,具体视连接状态和自举引脚的状态而定。 2. 先发出 0 Data Download 请求,然后再发出 GetStatus 请求和 Device Reset 请求,即可退出 DFU 模式。 3. 对于某些产品,不会为 USB 自举程序操作使用外部振荡器 HSE,而只会使用内部振荡器 HSI。请查阅AN2606 产品的相关章节,了解需要为每种产品使用哪种振荡器。 注: 自举程序启动时,内部振荡器 (HSI) 会用作 USB 接口的时钟源。检测到 USB 事件后,外部振荡器会配置为 USB 时钟源。 完整版请查看:附件 |
CD00264379_ZHV4.pdf
下载436.59 KB, 下载次数: 2
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现