
1 前言 我们之前经常有讲到过如何通过 USB 的 DFU 方式来对固件进行升级,在示例中我们通常是通过一个按键来触发 APP 跳转到 BOOT 从而进入到 DFU 升级模式。但是也有一种情况,客户的环境是没有任何按键或者其它触发条件,只有一 个 USB 口连接运行 windows 操作系统的上位机。这不,前不久就碰到这么个客户,下位机 MCU 端仅仅只有一个 USB 口连 接上位机,且 MCU 端与上位机之间的 USB 是常连的,并不能通过 USB 的拔插操作来触发 APP 的跳转,在此情况下,我们 又该如何来实现客户的需求? 2 分析/ u* S: V+ g1 H 7 i+ Z4 X: L! E# q8 o ![]() 6 J* V* z; x: a, a. M- O' q 如上图所示,在 MCU 内部 FLASH 中,BOOT 与 APP 同时存在,BOOT 为 DFU 模式,负责对固件进行升级,而 APP(Runtime 模式)为客户的应用程序。当 APP 运行时,通过某个事件触发(DFU_DETACH)程序从 APP 跳转到 BOOT 中从而进入到 DFU 模式中。7 Y+ i9 J& X, G8 D; f5 k/ H - V) j! m6 z. Z; d ![]() 这个 DFU_DETACH 的操作在这里我们可以通过 PC 端软件 DfuSe Demo 来触发。( Q1 p$ L: N/ q: n; i. Y3 _ ![]() 在进入到 DFU 模式时,DfuSe Demo 软件的运行界面如上所示,上图界面中有一个“Leave DFU mode”的按键,通过 它可以使运行在 MCU 的程序从 DFU 模式切换到 APP 中。同时我们也发现,在按键“Leave DFU mode”的左边有一个灰色按 键“Enter DFU mode/HID detach”,从字面就可以知道,它应该是进入到 DFU 模式的按键,在 APP 模式下此按键应该是激活 的,但是,在进入到 APP 模式后,此界面就检测不到 DFU 设备了,此软件将不再可用。那么我们又将如何来激活这个“Enter DFU mode/HID detach”按键呢? 9 ?$ \: y$ D! m 从帮助文档可知,在 APP 模式时,当 DfuSe Demo 这个软件识别到一个特定的 HID 设备时,“Enter DFU mod/HID detach”按键将激活,通过进一步了解,我们知道此时 DfuSe Demo 这个软件是需要使能此项功能才可以,所幸地是,我们已 经有了此软件,在与此文对应的附件中,可以找到一个名为 DfuSeDemo_A.exe 的可执行程序,将它拷贝到 DfuSeDemo 的 安装目录下,如下图所示: 6 p/ ^( h/ d* C7 q1 g8 R4 { ![]() 当运行在 APP 模式下时如下所示:: O5 G1 Y, ?5 M F ![]() 如上图所示,在 APP 模式下时,当程序检测到有效的 HID 设备时,DfuSe Demo 的”Available DFU Device”下拉框中会显示 这个 HID 设备,并且“Enter DFU mode/HID detach”按键激活。当按下此键时,MCU 会重启并进入到 DFU 模式。当然此 APP 是需要实现一个符合某种要求的 HID 设备才行。下面我们通过制作这样一个 APP 来讲解。 $ s9 M" V! F$ ~' S ( X1 v% I: P5 w 3 制作 APP * K: \$ O7 k A! U 我们基于之前 DFU 培训时使用的 STM32F072-Discovery 板来实现此 APP。 打开 STM32CubeMx 软件新建一个基于 STM32F072RB 的工程,使能 USB 和 RTC 外设,RTC 我们主要用它的备份域寄存 器,用来保存跳进入到 DFU 模式的标志; Pinout 如下所示:6 _* M! N- P/ @1 I; \3 |2 y ![]() ................. 1 O/ F4 t5 t! O% U. ^( G1 G想了解更多,请下载原文阅读 / }7 }$ p! v( H& t- o6 L1 R |
给出的链接里,有两个有DFU_HID_V0.1.zip这个压缩文件,但下载后大小是0,解压后是空的。 |
急需下载地址2里的内容啊,版主能给修复下链接么?谢谢 |
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现