【问题标题】:Why is my STM32F407 not being recognized by computer (Windows 10)?为什么我的 STM32F407 无法被计算机识别(Windows 10)?
【发布时间】:2022-06-10 21:49:31
【问题描述】:

概述

  • 我需要对最近购买的STM32F407ZGT6 板进行编程

  • 在“正常模式”下,通过 USB 连接时,我的计算机无法将开发板识别为 Ports (COM & LPT)/STMElectronics Virtual COM Port(我使用的是 Windows 10 Pro)。 LED 灯亮起,我可以让它进入“DFU 模式”。当我尝试调试代码时,我在任一模式下都会收到 "No ST-LINK detected!" 消息。

  • 这是我第一次连接板子,也是我第一次接触STM32

  • 尽管有instructions,我想直接从 STM32CubeIDE

    使用 C 对电路板进行编程

这是我发现的

我发现了这个问题 [1],其中设备管理器将 STM 读取为Disk drives/STM32。我的电脑在Windows 10 Pro 上将其识别为大容量存储和便携式设备。在 DFU 模式下,我可以在 Device Manager 上看到它为 Universal Serial Bus Device/STM32 BOOTLOADER

教程 [2] 使用 Flash Loader 演示,而这个较早的教程 [3] 使用 STSW-STM32080,但是这两个驱动程序在 ST 网站上都被标记为已过时。而是指示了 STM32CuberProgrammer,但我想直接从 IDE 进行闪存和调试。另一个论坛回复 [4] 说“你需要一个 ST-link V2 编程器来编程全新的芯片”。

总结

我可以看到解决方案是以下选项之一:

  1. correct answer 我需要使用 ST-LINK-V2 从 IDE 编程,这是唯一的方法
  2. 我需要通过 STM32CubeProgrammer 刷新引导加载程序才能通过 IDE 工作(是否有标准代码?)
  3. 必须为 MicroPython [5] 构建交叉编译器,然后才能使用 C 进行编程

你的想法是什么?我可能缺少任何其他驱动程序或想法?


更新

我继续使用 ST-LINK V2。我通过 JTAG/SWD 连接器 (see schematic) 进行了连接,我还尝试直接使用引脚连接:

ST-Link JTAG/SWD Pins
SWCLK 9 PA14
SWDIO 7 PA13
GND 10 GND
3.3V 1 3.3V
RST 3 PB4

ST-Link 无法识别。 ST-Link 闪烁,电路板通电,仅此而已。设备管理器beforeafter 显示相同。

所以我继续检查是否缺少任何新的驱动程序/程序。我安装了基于these instructions的STSW-LINK004(STM32 ST-LINK Utility v4.6.0.0),但运气不好,实用程序也找不到它。每次安装驱动程序后我都重置了计算机。如果我在 DFU 模式下通过 USB 连接我的板,它仍然被识别为STM32 BOOTLOADER,如果我使用 ST-Link 连接,则没有任何变化。

还有什么我应该做/安装的吗?应该以某种方式连接我的 BOOT1 吗?

【问题讨论】:

    标签: windows driver stm32 micropython stm32cubeide


    【解决方案1】:

    使用 STM32CubeIDE 进行调试总是需要 ST-LINK 或其他 JTAG 或 SWD 调试探针。

    引导加载程序允许您使用二进制映像对微控制器进行编程,就是这样。 IDE 很乐意生成这样的二进制映像,甚至可能有一个通过 DFU 传输它的向导。但这只是编程,没有调试而且只有在引导加载程序运行时。如果你做了类似调试的事情,比如读取 RAM 内容,你会得到引导加载程序在运行时存储在那里的内容,而不是你自己的程序使用的变量。

    ROM 引导加载程序支持多种接收新代码到闪存的方式——USB (DFU)、CAN、I2C、SPI、UART。最后一个不是 USB 虚拟 COM 端口,它是使用微控制器中的 USART 外设和 RX/TX 引脚的真正的 UART。

    如果您希望自定义固件使用虚拟 COM 端口向 PC 发送数据,则必须对 USB 外围设备进行编程。

    【讨论】:

    • 谢谢你把这个清晰的本。来自 Arduino 世界,这是一种思维方式的转变。所以只是为了确认一下,除了使用 ST-LINK/JTAG/SWD 之外,没有其他方法可以通过 IDE 进行调试吗?我可以在其他地方使用 DFU 进行调试吗?
    • @mgmussi:不,DFU 不支持调试。什么PC端工具都没关系。基本问题是调试器必须在您的代码运行时工作,而 DFU 仅在 ROM 引导加载程序运行时工作。这表现为a very limited command set in DFU:将数据复制进出。 ST-LINK 与“串行线 JTAG 调试端口”通信,而不是与主微控制器通信。
    • 现在,有许多演示板和评估板都内置了 ST-LINK,因此调试所需的只是 USB 连接,例如st.com/en/evaluation-tools/stm32f4discovery.html。但是您的调试 USB 连接实际上是到板上的第二个微控制器,它运行 ST-LINK 固件并控制连接到运行代码的主微控制器的 SWD 引脚。
    • 我刚刚尝试使用 ST-Link,但现在无法识别(请参阅我的更新)。有任何想法吗? @Ben Voigt
    猜你喜欢
    • 1970-01-01
    • 2022-06-30
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多