debug: Serial wire、JTAG-4、JTAG-5的区别,以及如何应用。

之前用的都是最小STM32F103RBt6的芯片,支持JTAG-5。一直用这种调试方式。然后在MDK中选择SWD,这么去用。

但是最近要节约成本,开始考虑管脚更少的,32pin、48pin的。这些就不支持JTAG-5了,只支持Serial wire的方式,也就是两根线:SWDIO、SWCLK。

他跟JTAG-4、JTAG-5的区别在哪?

从管脚上看,少了Rvef、GND、RESET管脚。JTAG-4、JTAG-5就是JTAG方式,是20根管脚的。所以设置时应设置为JTAG。

这个时候J-LINK用的是JTAG的协议与模式控制MCU。

 

那用JTAG-4、JTAG-5时,为什么可以设置为SWD?

其实JTAG-4、JTAG-5就是JTAG方式,是20根管脚的,这样太占用MCU的管脚了。J-LINK也支持SWD的协议和模式,在J-LINK的管脚上也通用。所以设置为SWD后,实际只用了MCU的两根管脚,VTref和GND接在电源上即可(必须接)。这样能节约很多管脚。下图很明了。

所以我之前都设置错了其实,我的板子上不用JTAG 20pin的接口,而是SWD,但我cubemx若选用JTAG-5时,就会用上NJTRST、JTDO、JTDI、JTCK、JTMS.

但实际在MDK中配置为SWD后,用的只有JTCK(SWCLK)、JTMS(SWDIO). 其他的管脚都是没用的,在原理图上也没有连接。所以在配置为JTAG是连不上MCU的。

此时,J-LINK与MCU之间用SWD协议通信。

 

所以其实正确做法应该是配置为Serial wire。这才是SWD(serial wire debug)。

 

所以原子会这么说:

 

真的是醉了,干了三年嵌入式。。。现在才弄明白。。。

 

那么SWD没有接RESET其实,能复位芯片吗?

可以的,实际上用的都是软复位,并不是硬复位,即发送某种命令让MCU复位。

在没有接RESET的情况下,勾选此选项,在下载完程序,的确能够复位。

 

  • 20
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值