如何在STM32F103C8T6在PCB上运行后将代码上载到其上?

如何在STM32F103C8T6在PCB上运行后将代码上载到其上?,stm32,microcontroller,circuit,Stm32,Microcontroller,Circuit,对于学校项目,我们需要制造包含STM32F103C8T6微控制器的PCB。我们一直在使用“blue pill”板进行测试,该板已经有一个用于将计算机代码上传到板上的端口,但对于我们的PCB,我们将只使用MCU芯片LQFP48。我在数据表上看到PA13和PA14作为SWDIO和SWCLK工作,所以我假设这些是我需要的引脚。那么我会购买ST-LINK并将其用作连接方法吗?是的,SWD调试端口是首选方法。添加带有GND、SWDIO、SWDCLK和VCC的引脚头 如果你的电路板耗电不多,而ST-Link

对于学校项目,我们需要制造包含STM32F103C8T6微控制器的PCB。我们一直在使用“blue pill”板进行测试,该板已经有一个用于将计算机代码上传到板上的端口,但对于我们的PCB,我们将只使用MCU芯片LQFP48。我在数据表上看到PA13和PA14作为SWDIO和SWCLK工作,所以我假设这些是我需要的引脚。那么我会购买ST-LINK并将其用作连接方法吗?

是的,SWD调试端口是首选方法。添加带有GND、SWDIO、SWDCLK和VCC的引脚头

如果你的电路板耗电不多,而ST-Link支持(较新的不支持),你甚至可以通过ST-Link为电路板供电。否则,您将需要通过另一种方式供电

备选方案包括:

  • 为UART1添加标题。有一个用于上传固件的内置引导加载程序。但是,您不能通过UART进行调试

  • 在焊接芯片之前,上传一个具有USB功能的特殊引导加载程序。但是,此引导加载程序不是内置的,可能会被意外覆盖。所以你可以很容易地用砖块把木板砌起来


您可能还想阅读

您可以使用许多不同的连接器:最常见和最容易焊接的是2x10路2.54mm节距引脚头。不过它相当大。下一个标准是2x5 1.27mm收割台

ARM的本文档中描述了这两个方面:


如果您需要访问串行端口以供正常使用,则可以使用内置ST串行引导加载程序在同一接口上编程。您可以使用适合您拥有的任何USB-UART适配器的pin头(例如FTDI TTL-232R-3V3)。在这种情况下,您还需要访问reset和BOOT0信号,或者您可以将按钮放在电路板上。

SWD接口是一种选择,因为SWD接口(带ST Link)允许您调试自定义电路板上运行的代码。我不想在SWD上考虑UART/DFU选项,尤其是对于原型或学校项目。

Tom V答案中链接的Cortex-M调试连接器非常标准。我认为ST Link/V2带有一个用于较大20针连接器的连接器,但您可以为较小的10针连接器单独购买适配器电缆。如果10针cortex调试连接器太大,则tag-connect.com提供了一些解决方案


除SWDIO和SWCLK外,SWD接口还需要GND连接。我认为您还应该添加VCC连接,以便ST Link可以监控STM32电源。我认为您还应该添加nRESET(NRST)信号,以便ST-Link可以在对闪存编程后重置电路板。最后,SWO(TRACESWO)信号是可选的,但如果您的IDE支持它,它可以添加一些高级调试功能。

如果是单向的,这个问题会更适合。uart是另一个。一些部件支持带有dfu util的usb。这一切都在st关于该芯片的文档中。st-link只是一个解决方案,可以让你从一些主机软件进入swd的董事会,你可以花几美元购买j-link克隆,做同样的事情。只需一两美元,你就可以得到一块usb到ttl uart转接板,并使用uart引导加载程序(在技术上,新的st部件是可行的,但如果你不小心的话,你可能会被阻塞)。你需要下拉boot0(如文件所述),你需要一个跳线或一个按钮(如蓝色药丸上所示)因此,您可以强制启动0高,然后通电或重置(有一个boot0按钮和一个复位按钮是理想的,下一个是带复位按钮的boot0跳线,但如果没有boot0控制,您可能会在swd和/或uart方面遇到困难和/或失败。我见过的每个微控制器都有一个数据表,其中概述了各种接口方式。试着为您的部分阅读它。