使用 STM32 JTAG 引脚

4
我使用SWD来加载stm32芯片固件和进行调试。它使用3个引脚:SWCLK(TCK)SWDIO(TMS)GND
我可以使用其他JTAG引脚(TDI, TDO, TRST)来实现自己的目的吗,同时保留了在芯片中烧录固件的可能性?
5个回答

9
实际上,SWD只使用两个引脚:SWD和SCLK。地针是通用的,不能用于其他任何目的。SWO仅在使用(和需要)半主机功能等特性时才需使用。
如果您运行CubeMx,则会发现如果选择SWD,则所有其他JTAG引脚都可供一般用途使用。

1

嗯,这可能取决于您的调试器能力...

但是一般来说:是的,您可以仅通过SWD进行闪存编程,并将剩余的JTAG引脚用于其他目的。例如,Lauterbach调试器可以做到这一点。

但是,如果您的调试器工具支持跟踪记录,则不建议使用TDO引脚用于应用程序,因为在SWD模式下,该引脚通常可以用作SWO跟踪引脚(对于Cortex-M3 / M4或M7)。


1
在重置后,uC将准备好通过SWD或JTAG连接,这完全取决于你的调试器(因为所有引脚都将处于默认配置),但是当你的应用程序重新配置调试接口使用的IO之一时,你失去了通过此接口连接核心的能力。
如果您不使用任何SWD引脚(CLK和DIO),您将能够随时连接到目标,甚至无需重置uC,因为这些引脚将随时准备好连接。
但是,如果您重新配置其中一个引脚以读取推按钮等操作,则需要在代码运行之前重置目标并连接到它,此时您需要向调试接口添加RESET引脚连接,以便调试器重置目标并立即连接到它。(显然,在调试期间不能按下按钮)这就是始终向调试器连接RESET的原因

1

我想补充一下,如果你在调试器设置中选择在重置时连接,则始终可以通过 JTAG 或 SWD 连接到 stm32。
当您有意或无意地重新配置 JTAG 或 SWD 引脚时,这是必需的。但它也取决于连接到这些引脚的硬件,因此有时它可能无法正常工作。
尽管如此,它应该足以加载固件。


0

是的,您可以使用其他JTAG引脚。 如果您不需要调试,刷完芯片后也可以使用SWD引脚,但在这种情况下,您很可能需要从系统存储器启动以进行芯片重新编程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接