0

我制作了一个 STM32F042k6,电池供电的设备,我想刷 vi DFU 协议。

为此,我断开电池,将 BOOT0 拉到 VCC,然后将设备插入 PC 的 USB3 端口(没有可用的 USB2)。设备无法识别并显示 VID:0000 PID:0002(案例一)

但是,当我第一次连接电池,然后将设备连接到 PC 时,它会毫不费力地被识别(案例 II)。

我面临的问题是我想通过软件中的命令开始跳转到引导加载程序 - 但后来我达到了与我完全相同的条件。

你能帮我确定我违反了正确启动的条件吗?

编辑: 我发现问题的方式是当我实现软件跳转到引导加载程序时。它似乎根本不起作用(VCP 设备消失,并且错误的 <> 设备出现在系统 PID:0002 VID:0000 中)。我想通过拉起 BOOT0 引脚来进入引导加载程序,但我可以看到我只有在电池电源循环时才成功。USB 电源循环导致相同的“失败的描述符”设备。

我怀疑当通过 USB 开机时,booloader 存在一些通信问题,无法建立正确的 PID 和 VID。通过电池供电时 - 不存在此问题。

4

2 回答 2

0

我在 STM32 Mini F401上遇到了同样的问题,并研究了几天。与 OP 不同,我无法找到任何能够可靠地让引导加载程序执行正确操作的电气条件。我可以每 20 次尝试对我的电路板进行一次编程,这确实减慢了我的进程。

最后发现可以进入Windows设备管理器,显示隐藏的设备,在通用串行总线设备里面会有一个入口,叫做STM32 BOOTLOADER. 当问题发生时,板以 dfu 模式连接,但该设备未在设备管理器中标记为活动。

要一致解决问题,您可以手动删除隐藏STM32 BOOTLOADER条目,卸载设备(无需删除驱动程序,只需卸载设备即可)。然后在 DFU 模式下重新启动您的主板,它应该每次都按预期连接。不幸的是,我每次想要编程时都需要执行此过程,但这比之前的不一致/间歇性故障要好得多。

于 2022-01-17T20:56:04.577 回答
0

你有发现板吗?

我阅读了 STM32F042x4/x6 参考手册(DocID025832 Rev 5):

STM32F042x4/x6 嵌入了符合 USB 规范 2.0 版的全速 USB 设备外设。

(第 3.19 部分,第 27 页)。

在 AN2606(Rev 33)中,表格显示了 DFU Bottolader 在 USB FS(全速)中使用的 USB 配置:

在此处输入图像描述

我假设引导加载程序中的 USB 是 2.0,但 USB 3.0 必须与 USB 2.0 兼容。因此可以使用 USB 3.0 端口。

我建议你使用 ST 的DfUSE Demo。它的界面由一个选项卡组成,当检测到可用的 DFU 设备时会在该选项卡中显示。我按照以下步骤在另一个 STM32x 上试用它:

  • 打开 DfuSe 演示软件。
  • 将 BOOT0 插入 Vdd 以将微控制器置于 DFU 模式。
  • 将 USER USB 插入计算机端口。
  • 您的设备名称应出现在“可用的 DFU 设备”字段中。

您也可以尝试直接使用 PA11 和 PA12(根据表 12),而不是板的 USB 端口。

编辑:
在不驱动 boot0 的情况下升级固件的另一种解决方案是直接跳转到固件中 ST 的 DFU 引导加载程序。否则,您可以设计自己的 IAP 引导加载程序(应用内编程)。

我希望这会有所帮助。

于 2018-09-26T12:03:41.960 回答