没有以下仪器的不建议复刻!!!否则调试阶段不可能成功:50M以上带宽示波器、万用表、6通道24M采样以上采样逻辑分析仪
更多的是提供一个双向开漏接口隔离的思路
如果真的要复刻:确保你的STLINK V2是如下图所示的便宜货:(已在这两个上面调试验证通过)
DC3-10Pin接口的线序必须和图上相同,不能错买为下图上面这种
另外,由于本设计电路对外部电路参数极度敏感,本人完全不保证本设计可以适用于你的STLINK与单片机电路
你需要作出以下三种努力:
尺寸:81*26*15mm (L*W*H)
重量:(没有称)
通信速率:4MHz(SWD) 800K(SWIM) (都是默认速度)
输出低电平:0.5V
输入有效低电平:<0.2V
准备一台带USB-A接口的电脑、STLINK V2、DC3-10Pin双头母口线与本机,按次序连接即可使用
VOLSET用于切换供应到PWR上的电压是5V还是3.3V
RSTMODE用于选择是否让STLINK接管目标板的复位,这在使用会强制目标板保持复位状态的软件(如STVP)时有用
RST按键用于对目标板手动复位
该设计从计划到完成经历了三个版本的迭代,所有设计都是基于电平差原理(详情见原理图注释与附件SLLA417B)
第一个版本使用了Π220n30作为隔离主芯片,但是由于输出低电平太高(0.8V),信号无法被STLINK识别而失败
一二个版本之间探索了一些新的双向接口隔离方案,如H7TOOL-SWD隔离 - 嘉立创EDA开源硬件平台 (oshwhub.com) ,但Mulitisim仿真显示这种互锁原理的电路会因为信号传递到对面的延迟不断叠加,最终陷入自锁状态
第二个版本试图兼容不同线序(如前言)的STLINK,还试图让SWIM与SWDIO两个双向通道分时复用一个隔离通道,为此添加了模拟开关,但由于模拟开关带来了可观的插入损耗,且SWIM SWDIO需要的速度等级与偏置电流不同而失败
第三个版本放弃兼容性且使用分别隔离传输方案,提高了成本,但使得设计最终成功运行
不要使用BOM,元器件选择直接参考原理图与实物图,注意取值与封装
隔离电源模块采用4脚窄体SIP模块B0505S
隔离芯片采用CA-IS37xx系列,速度快(150Mbps),价格低廉(本设计中两颗芯片一共4元)
电路板可直接免费打样
(以开源原理图为准,实物图展示的是用于调试的版本,公开版本是调试版本修改了所有BUG后的改进版)
先焊接背面贴片元器件:在背面焊盘上涂上适量锡膏,按PCB摆放元器件,使用风枪、加热台等焊接
再焊接正面LED、插座、开关与按键
先不焊隔离电源模块,使用可调CC/CV的电源,设置5V200mA接入隔离电源模块的焊盘测试,确保初次级都没有短路后再焊接隔离电源模块
(喂,前面可是地狱啊) 被逻辑分析仪五花大绑的板子.jpg
安装STM32CubeProgrammer与STVP,分别作为SWD与SWIM接口调试的上位机,同时准备STM32与STM8的开发板各一个
将隔离器与STLINK等一长串连接到电脑上,看PWR LED是否亮起,是否因为切换VOLSET改变亮度
测量初次级5V 3V3电源轨是否在10%误差范围内
测量三极管基极电压是否是0.86V(SWDIO主机端的三极管基极电压为1.1V)
将本端输入下拉到地(可以使用镊子),测量本端低电平,测量对端是否被拉低,低电平是否在0.5V左右(SWDIO主机端的输出低电平约0.7V),此步骤需要在SWD/SWIM 主机端/设备端分别做四次
接上开发板,测试STVP的Read Current Tab是否成功与稳定,测试CubeProgrammer是否可以成功Connect Target,如不成功可以降低CLK速率再尝试
详细调试波形与文件见附件
(正常读取SWIM的波形)
(4MHz速率握手界面 STM32 ST-LINK Utility)
(4MHz下下载程序)
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持