JTAG与SWD调试接口介绍
JTAG 接口:主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,标准接线是4根线
- TMS:JTAG接口模式选择
- TCK:JTAG接口时钟
- TDI:JTAG接口数据输入
- TDO:JTAG接口数据输出
- TRST:JTAG可选引脚,功能为 测试复位、输入引脚、低电平有效
SWD接口:串行调试(Serial Wire Debug),应该可以算是一种和JTAG不同的调试模式,使用的调试协议也应该不一样,所以最直接的体现在调试接口上。标准接线为2线
- SWDIO:SWD数据线
- SWDCLK:SWD时钟线
SWD与JTAG相比有许多优点:
1. SWD接口相比于JTAG更加可靠
2. 使用更少的GPIO,直接少用了两个IO
3. 使用引脚少自然PCB板面积走线方便
STM32F1的JTAG与SWD接口定义
JTAG接口引脚定义
- JTMS :PA13
- JTCLK:PA14
- JTDI :PA15
- JTDO :PB3
- JTRST:PB4
SWD接口引脚定义
- SWDIO :PA13
- SWDCLK:PA14
遇到问题
在之前一个项目中,使用的是STM32F103RCT6,LQFP64封装,由于一直使用SWD调试接口,就没考虑过JTAG另外三根线问题,而且项目使用资源挺多,就把JTDI、JTDO、JTRST引脚都用上了,当时比较傻、比较天真。。
后来调试过程中发现这三个引脚始终不受控制,当时都快绝望了,换了好几块芯片,都是同样问题,排除硬件问题后,就开始找软件问题,最后都想去给ST发邮件问问是不是有问题了,然而只能闷着头皮看手册发现是JTAG功能口,当时之前其实想过这个问题,不过没放在心上,因为普通IO都是默认IO功能,开启复用才会使用第二功能的。
后来发现只要开启复用时钟,复用掉JATG的JTDI、JTDO、JTRST这些IO口就直接完全正常了了。
现在电脑没有代码,有时间把复用代码贴上来,就两句话。