仔细研究了一下 stm32f0f1系列 SWD接口的设计 有几点总结和疑问 欢迎大家讨论 :
总结1: 参考stm32f10x 系列的板子,使用JLNK调试工具时,发现在设计的时候好多都保留了JTAG 接口,同时兼容SWD接口的调试.这是因为stm32f10xxx内核集成了串行/JTAG调试接口(SWJ-DP)(Serial Wire and JTAG)即:JTAG_DP接口和SW_DP接口 两种方式都可以进行程序的调试和下载,但是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:
而官方的stm32_f051rbt6discovery 开发板板载stlink是接NRST的 ,当给外部目标板调试时NRST是可选的。
如下图:
总结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 的上拉电阻。应该可以直接相连的。 开发指南有如下描述: Having embedded pull-up and pull-downresistors removes the need to add external resistors.对于集成了上下拉电阻的可以不不接外部电阻。
有直接相连调试正常的朋友证实我的想法么?
而有的stm32f10xxx板子的JTAG的5条线竟然全部上拉, 根据TCK/SWCLK: Internalpull-down 至少TCK/SWCLK:应该是下拉的。
问题2.2:
对于stm32f0系列是SWD调试端口 是否也有内部集成的上下拉电阻呢?我想应该有的因为我参考了一些设计 都是直接相连而没有上下拉电阻。 例如:
官方的stm32_f051rbt6discovery 开发板板载stlink 同样没有接上下拉电阻 只是串接了 22欧姆的电阻 进SWDIO SWDCLK
以上问题和总结希望大家讨论,指教。一起把问题搞清楚!
|