研究了一下JLINK的硬件,SWIO好像是SPI,但是方向是反的

2020-01-04 18:46发布

无标题.png (93.97 KB, 下载次数: 0) 下载附件 2019-8-18 23:01 上传

如图,我看这个接口就是使用的STM32F205的SPI1,CLK是JLINK发出的,那就是使用的SPI主机模式了,
JATG_TMS是SWDIO引脚,可是U12的方向控制接地,意味着MOSI这个位置上,缓冲器始终是输入状态,可以主机的MOSI不应该是输出吗。
难道是表面上使用的是SPI实际上却是IO模拟的接口,把SPI的主机和从机引脚反过来使用了。好蛋疼的结论。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
布心
1楼-- · 2020-01-06 07:50
momo_li 发表于 2019-8-19 10:25
看SWD的时序,并不是标准的8-16-32位,比如那个ACK就只有3位,我估计这个应该用标准的SPI实现不了,所以 ...

别往SPI上想了,STM32F1/F2系列的GPIO实现双向通行,IO口需要配置为开漏输出,开漏输出的话,就需要外加上拉电阻,这样的话,速度肯定上不去的,1MHz到顶了。如果采用切换配置来事项I和O,速度同样上不去。I永远配置为输入,O永远配置为输出,没有切换。也就是为什么它们中间要加个2K电阻的原因。
momo_li
2楼-- · 2020-01-06 11:59
布心 发表于 2019-8-19 12:50
别往SPI上想了,STM32F1/F2系列的GPIO实现双向通行,IO口需要配置为开漏输出,开漏输出的话,就需要外加 ...

想来想去也只能是开漏做输出和另一个IO配合实现双向了,
为了高速,JLINK特地在输出使用了方向可控的缓冲芯片,这样做输出的时候开漏输出的负载为高阻,提高了输出的速度,
输入时缓冲芯片换方向,同样是高阻输入,解决了输入的速度,看上去很高深的东西,扒光了看看也不过如此。
gliet_su
3楼-- · 2020-01-06 15:30
momo_li 发表于 2019-8-19 13:20
想来想去也只能是开漏做输出和另一个IO配合实现双向了,
为了高速,JLINK特地在输出使用了方向可控的缓冲 ...

关键还是时钟上不去,IO口模拟时钟当然高不了,IO切向耗不了多少时间。
zhikunWang
4楼-- · 2020-01-06 20:37
 精彩回答 2  元偷偷看……
momo_li
5楼-- · 2020-01-06 23:04
zhikunWang 发表于 2019-8-20 08:45
我有个ARM脱机烧写器,第三方厂家做的,烧写需要十几秒,
而jlink只要1秒不到。 ...

估计就是IO模拟swd的效率问题,真正快速就要使用汇编了,或者用fpga
OurWay
6楼-- · 2020-01-07 01:16
这个是新唐的Nu-Link的 SWD接口,看起来是 SPI接口的哈

2019-08-20_092203.jpg (216.04 KB, 下载次数: 0)

下载附件

2019-8-20 09:22 上传

一周热门 更多>