如何通过串口烧写STM32

How to flash STM32 via Serial Port

我有一个 STM32F102 微控制器,我想通过串行端口对其进行编程。

虽然 windows 可以使用闪光灯,但我想在 Linux 机器上进行。我试着用这个脚本来做

我设置了BOOT0 = 1和BOOT1 = 0,重启了单片机。但它不起作用。我得到以下输出

Can't init. Ensure BOOT0=1, BOOT1=0, and reset device
Traceback (most recent call last):
  File "stm32loader.py", line 552, in <module>
    bootversion = cmd.cmdGet()
  File "stm32loader.py", line 140, in cmdGet
    if self.cmdGeneric(0x00):
  File "stm32loader.py", line 137, in cmdGeneric
    return self._wait_for_ack(hex(cmd))
  File "stm32loader.py", line 88, in _wait_for_ack
    raise CmdException("No response to %s" % info)
__main__.CmdException: No response to 0x0

这里有一些提示:

  • 在重置/启动开发板之前连接串行电缆。否则一些瞬变会使串行引导加载程序混乱。

  • 确保您使用的是 TTL 电平 USB 转串口转换器,而不是 RS-232 电缆。 RS-232电平反相,更糟糕的是,它的-15V到15V电压范围可以烧掉你的STM32

  • 确保RX和TX连接正确。

  • 请尝试使用 stm32flash

  • 我记得大多数STM32的串口bootloader都不支持高于115200的波特率。 bootloader可以自动检测波特率,我常用的是57600.

其中一些芯片在出厂时带有锁定的引导加载程序。您将需要使用 STM32 Flash loader demonstrator 来移除保护。 Windows 不幸的是,一旦解锁,您就可以使用任何机器。