在STM32F303上激活DFU(USB编程)

Activating DFU (USB programming) on STM32F303

我正在构建一个基于 STM32F303RET6 的开发板。

Processor Datasheet,第 17 页/第 3.5 节提到可以进行编程 "using USART1 (PA9/PA10), USART2 (PA2/PA3) or USB (PA11/PA12) through DFU (device firmware upgrade)"

我正在使用带有此处理器的 NUCLEO 开发板。

我已将 USB 的 Vdd、Gnd、D+ 和 D- 引脚连接到 NUCLEO 板,并禁用了附加编程器板的电源。

然而,每当我用 BOOT0 HIGH 重新启动它时,USB 从不枚举任何设备。 我在没有任何外部电阻的情况下将引脚直接连接到 USB 插头。数据表似乎表明不需要这些。

为了让事情变得有点棘手,这个处理器还有一个额外的特殊性,那就是没有 BOOT1 引脚;它是一个软件位。

我的问题是,处理器是否真的通过使用内置引导加载程序支持 DFU? 如果是这样,应该如何启动它并通过 USB 进行编程?

非常感谢, 佩德罗

PS:ST 实际上已经 关于在该处理器上支持 USB 编程的相互矛盾的信息。 虽然数据表说它受支持,但 Application Note AN2606 页81(第 19 节)仅提及支持通过 USART1、USART 2 和 I2C 进行编程。它引用了 USART,但不清楚如何使用它们。

I have connected the Vdd, Gnd, D+ and D- pins of USB to a NUCLEO board and disabled the power from the add-on programmer board.

检查Vdd上的实际电压和电流。主机可能会限制电流,或者在枚举前消耗超过 100mA 时关闭端口。换个外接电源试试。

I am connecting the pins directly to the USB plug without any external resistor.

您需要在 D+(全速)或 D-(低速)上进行 1.5k 上拉。这是来自 STM32F3 Discovery 原理图(这是一个 OTG 插座,忽略常规 4 线端口的 ID 线)

没有pullup时,主机无法检测到设备何时插入,因此不会枚举。

ST has actually got conflicting information about support for USB programming on this processor. While the Datasheet says it's supported, Application Note AN2606, page 81 (section 19) only mentions support for programming via USART1, USART 2 and I2C.

那里没有冲突的信息。 第 81 页第 19 节提到了一些其他控制器。

STM32F303RET6 的功能列于第 77 页的 table36,第 18.1 节。另请参见第 23 页的 table3,STM32F302xD(E)/303xD 行(五).