乐于分享
好东西不私藏

【项目分享】SWD下载接口隔离模块

【项目分享】SWD下载接口隔离模块

 1 开 篇
最近忙里偷闲做了一个SWD接口隔离模块,起因是前一段时间,有朋友私信反馈,在使用J-Link调试目标板的时候,总是烧LDO,一问应用场景,全是电机驱动板;
通过查资料和分析,评估造成这个问题的原因有两个,一是地环路存在电位差,导致电流倒灌,二是开关噪声叠加瞬态高压经过调试接口传导到J-Link;
要想解决也不难,要么直接买一个专用隔离式调试器,要么在J-Link和驱动板之间加一个隔离模块,前者成本比较高昂,非壕很难接受,还是后者更有性价比。
因此,本期内容将给朋友们分享一个适用于SWD接口的隔离方案
 2 成品外观
在正式开始介绍之前,展示一下外观;
    正面外观    
    IDC-20Pin刺破式母口    
    2.54排针*SWD接口    
    功能说明    
 3 原理介绍
别看一个小小的SWD接口隔离,着实是费了一些力气,这还要从SWD接口协议说起;
一个标准的SWD接口至少要包含四个信号线,VCC、SWDIO、SWDCLK、GND,VCC和GND形成3.3V供电回路,SWDIO负责传输协议数据,SWDCLK负责提供驱动数据传输的时钟信号,由烧写器一方产生。
这么看,好像也没什么复杂的,但其中的SWDIO的工作模式比较特殊,它是一个双向传输信号线,J-Link通过SWDIO向MCU调试接口发出数据请求,然后MCU内核再通过SWDIO向J-Link回复应答数据;
而市面上现有的隔离IC清一色都是单向的,虽然也有自动切换数据流方向的隔离IC,但是,要么价格贵,要么就是速度慢,只有几十K到几百K;
所以要想满足速度快、性价比高的诉求,就只能另辟蹊径,对只有单向通道的隔离IC进行外围改造,让它能够双向传输信号,奔着这个思路找了一圈,还真是有惊喜;
在找了两天后,看到了TI官方提供的一种用于I²C总线的隔离电路demo,核心原理如下:
这个电路非常有意思,只用一些简单元件和三极管搭出一个电压比较器,将一个正向通道和一个反向通道组合成一个“双向通信”,纯硬件实现,无需软件干预。
由于I²C总线中的SDA也是双向信号,SCL是时钟,简直完美契合SWD接口隔离场景,只要稍加调整就可以直接应用,原理如下:
方案的核心是TI的ISO7731隔离芯片,最高速率可达100Mbps,最大隔离电压1500Vrms;它共有三个通道,两个正向、一个反向,其中一个正向通道用于SWCLK时钟输出,另外一个正向通道和反向通道组合成一个“双向通道”,传输SWD协议数据。
 4 使用演示
SWD隔离模块自带IDC-20Pin刺破式连接器,可以直接适配J-Link,也可以直接适配我之前做的J-Link mini,展示如下:
    适配J-Link    
    适配J-Link mini    
调试时,只需要使用杜邦线连接SWD接口和目标板即可,环境搭建演示如下:
    J-Link+隔离板    
    J-Link mini+隔离板    
经过实测,还可以搭配DAP-Link进行调试,环境搭建演示如下:
    DAP+隔离板    
通过使用Keil5下载程序并在线调试,实测速率可以跑到6M,这个速率虽然不算很快,但也足够满足大部分的MCU调试场景了,更关键的是它性价比超高。
 5 总 结
以上就是这次SWD下载隔离模块项目的全部内容,如有朋友需要,可以后台私信【SWD】,就可以获取隔离模块的完整原理图和BOM清单;
同时SWD隔离模块也会同步上架,如果不想折腾,也可以选择成品或半成品,总之,无论以哪种方式,都希望能够帮到大家。