在STM32F303上激活DFU(USB编程)

时间:2017-09-13 19:29:32

标签: stm32 bootloader

我正在建立一个基于STM32F303RET6的电路板。

Processor Datasheet,第17页/第3.5节,提到编程可以“使用USART1(PA9 / PA10),USART2(PA2 / PA3)或USB(PA11 / PA12)到DFU(设备固件升级) “

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

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

然而,无论何时我使用BOOT0 HIGH重启它,USB都不会枚举任何设备。 我将引脚直接连接到USB插头,无需任何外部电阻。数据表似乎表明不需要这些。

为了使事情变得有点棘手,这款处理器具有不具备BOOT1引脚的额外特性;这是一个软件位。

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

非常感谢, 佩德罗。

PS:ST实际上已经获得了关于此处理器上USB编程支持的冲突信息。虽然数据表显示支持,Application Note AN2606,第81页(第19节)仅提及支持通过USART1,USART 2和I2C编程。它引用了USART,但目前还不清楚如何使用它们。

1 个答案:

答案 0 :(得分:1)

  

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

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

  

我将引脚直接连接到USB插头,无需外接   电阻器。

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

enter image description here

当没有上拉时,主机无法检测设备何时插入,因此不会对其进行枚举。

  ST实际上在此处理器上获得了有关支持USB编程的相互矛盾的信息。虽然数据表表示支持,但应用笔记AN2606,第81页(第19节)仅提到支持通过USART1,USART 2和I2C进行编程。

那里没有相互矛盾的信息。 第81页的第19节涉及其他一些控制器。

STM32F303RET6的功能在第36页的表36第18.1节中列出。(As I've already pointed it out.)另请参见第23页的表3,STM32F302xD(E)/ 303xD(E)行。