[开发工具]

关于stm32f0 f1系列 SWD接口设计的总结及疑问

[复制链接]
20736|17
手机看帖
扫描二维码
随时随地手机跟帖
kamen588|  楼主 | 2014-3-31 19:41 | 显示全部楼层 |阅读模式
仔细研究了一下 stm32f0f1系列 SWD接口的设计 有几点总结和疑问 欢迎大家讨论

总结1
参考stm32f10x 系列的板子,使用JLNK调试工具时,发现在设计的时候好多都保留了JTAG 接口,同时兼容SWD接口的调试.这是因为stm32f10xxx内核集成了串行/JTAG调试接口(SWJ-DPSerial Wire and JTAG即:JTAG_DP接口和SW_DP接口
搜狗截图14年03月31日1930_1.jpg
两种方式都可以进行程序的调试和下载,但是SW方式更节省端口,只需要两根线 SWDIO, SWCLK 配合VCC ,GND 就可以,多余的I/O可以释放用作普通用途.
问题1.1:如果异步跟踪使能 ,TRACESWO 输出的是什么信息,有什么用,什么是异步跟踪。
问题1.2:
为什么有些网友说swd调试,除了SWDIO, SWCLK 配合VCC ,GND之外,最好NRST也要接 这里的指的NRST应该是是STM32的nRST 引脚吧,这个NRST具体作用是?不要说是复位用的,为什么要复位?据我查证有的非官方st-link要么没有nRST引脚, 要么即使有的在调试 stm32f0 f1系列时也不使用,例如:下图的SW-RST:
搜狗截图14年03月31日1934_4.jpg

而官方的stm32_f051rbt6discovery 开发板板载stlink是接NRST的 ,当给外部目标板调试时NRST是可选的。

如下图:


搜狗截图14年03月31日1933_2.jpg


总结2
根据   官方硬件开发指南 AN2586  STM32F10xxx hardware development  getting started》描述:
To avoid any uncontrolled I/O levels, theSTM32F10xxx embeds internal pull-up and pulldown resistors on JTAG input pins:
JNTRST: Internalpull-up
JTDI: Internal pull-up
JTMS/SWDIO: Internalpull-up
TCK/SWCLK: Internalpull-down


大体意思是 未了避免不可控制的I/O口电平,STM32F10xxx系列的JTAG input pins集成了内部的上拉和下拉电阻
JTMS/SWDIO:内部上拉
TCK/SWCLK: 内部下拉


Once a JTAG I/O is released by the usersoftware, the GPIO controller takes control again.
The reset states of the GPIO controlregisters put the I/Os in the equivalent state:
JNTRST: Input pull-up
JTDI: Input pull-up
JTMS/SWDIO: Inputpull-up
JTCK/SWCLK: Input pull-down
JTDO: Input floating

一旦JTAG的I / O由用户软件释放时,GPIO控制器重新获得控制权。
GPIO控制寄存器的复位状态将I / o为如下等效状态
JNTRST:输入上拉
JTDI: 输入上拉
JTMS/SWDIO: 输入上拉
JTCK/SWCLK: 输入下拉
JTDO: 浮空输入

问题2.1:
根据上文所述:下图某知名stm32f103ze开发板的JTAG的上下拉电阻是应该是没有必要了: 尤其是JTDO 的上拉电阻。应该可以直接相连的。
搜狗截图14年03月31日1934_5.jpg
开发指南有如下描述:
Having embedded pull-up and pull-downresistors removes the need to add external
resistors.对于集成了上下拉电阻的可以不不接外部电阻。

有直接相连调试正常的朋友证实我的想法么?

而有的stm32f10xxx板子的JTAG5条线竟然全部上拉, 根据TCK/SWCLK: Internalpull-down 至少TCK/SWCLK:应该是下拉的。

问题2.2

对于stm32f0系列是SWD调试端口 是否也有内部集成的上下拉电阻呢?我想应该有的因为我参考了一些设计 都是直接相连而没有上下拉电阻。
例如:

搜狗截图14年03月31日1934_6.jpg
官方的stm32_f051rbt6discovery 开发板板载stlink 同样没有接上下拉电阻 只是串接了 22欧姆的电阻 进SWDIO SWDCLK



以上问题和总结希望大家讨论,指教。一起把问题搞清楚!

kamen588|  楼主 | 2014-4-1 10:08 | 显示全部楼层
顶!!

使用特权

评论回复
香水城| | 2014-4-1 15:47 | 显示全部楼层
问题1.2
调试器拉一个信号控制目标MCU的复位引脚是个推荐的做法。抛开调试器不说,通常上位机和下位机之间除了数据通信之外,最好能够直接控制下位机复位,在出错或异常时进行直接控制。回到调试器来说,比如目标MCU上电就进入了低功耗或关闭了JTAG引脚,那么我的调试器在连接的时候,先把目标MCU复位,使得能够立刻在目标MCU运行起来到进入低功耗模式或关闭JTAG引脚之前,控制目标MCU的JTAG模块,并将目标MCU halt住。


另外,LZ的信息收集-->比较-->学习精神值得大家学习!

使用特权

评论回复
香水城| | 2014-4-1 16:12 | 显示全部楼层
问题2.2

SWDIO和JTMS是映射在同一个GPIO上的(PA13);SWCLK和JTCK是映射在同一个GPIO上的(PA14)。而引进上的上下拉都是在GPIO模块里集成的,因此SWCLK和SWDIO都可以说是分别集成了下拉和上拉。

使用特权

评论回复
评论
kamen588 2014-4-1 16:31 回复TA
谢谢版主 解惑 
kamen588|  楼主 | 2014-4-1 18:04 | 显示全部楼层
顶 !

使用特权

评论回复
hxb20122012| | 2014-4-1 18:28 | 显示全部楼层
学习了,原来NRST是出于这样的考虑。

使用特权

评论回复
zhu51231| | 2014-4-12 15:08 | 显示全部楼层
MARK

使用特权

评论回复
vod0000| | 2014-4-12 16:27 | 显示全部楼层
学习了!!

使用特权

评论回复
Cheribat| | 2014-11-25 14:41 | 显示全部楼层
学习一下

使用特权

评论回复
silong1123| | 2014-11-27 19:38 | 显示全部楼层
MARK

使用特权

评论回复
hqfmcu201| | 2015-8-4 11:31 | 显示全部楼层
真不错,MAKE

使用特权

评论回复
北斗stone| | 2015-8-6 10:54 | 显示全部楼层
学习了!

使用特权

评论回复
sjdcz| | 2016-3-28 13:35 | 显示全部楼层
问题1.1 请大侠答一个啊

使用特权

评论回复
整鼓猩| | 2016-4-14 14:36 | 显示全部楼层
好贴!

使用特权

评论回复
伟大的阿Q| | 2016-5-5 23:14 | 显示全部楼层
好贴,解决了我的问题

使用特权

评论回复
qjp1988113| | 2016-9-17 22:03 | 显示全部楼层
很好,解决了我设置SWD电路的困惑。谢谢楼主。

使用特权

评论回复
740071911| | 2016-11-4 13:11 | 显示全部楼层
学习一下

使用特权

评论回复
lxs060402| | 2019-8-6 15:00 | 显示全部楼层
很细心

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

240

帖子

3

粉丝