STM32开发板如何利落地连接外部编程器?从0设计一款SWD适配器
扫描二维码
随时随地手机看文章
来源:beningo.com
作者:Jacob Beningo
编译:付斌
为STM32开发板设计一个简单的编程适配器
几乎每个开发板都带有内置的编程工具,不同的供应商可能是PE Micro,SEGGER J-Link OB,甚至是供应商自己的工具,如ST-Link。
大多数情况下,板载编程器的功能相当有限,使用外部编程器则是很有意义的一件事。连接编程器通常需要使用从编程器到开发板进行跳线,这个过程可能导致错误的接线,更有甚者还连成了“老鼠窝”。
一天,我与IAR的美国东海岸FAE Aaron Bauch谈及此处时,他创建了一块电路板来使他的I-Jet编程器JTAG / SWD连接适应ST Microelectronics所采用的6针单排连接大多数板子。这是一个好主意,但不幸的是,Aaron无法分享他的电路板或设计。所以在这篇文章中,将向您介绍如何创建自己的适配器。
过程的第一步是选择一个带有6针连接器的开发板。碰巧在我的几个课程中使用STM32F429I-Disco板,所以这个板子是这次的主角。由于这个适配器板非常简单,只是从一组引脚到下一个引脚的路由跟踪,我决定启动Altium并创建一个带有单个原理图表的SWDAdapter项目。
查看开发板上6针SWD连接器是一个很好的着手点,但从连接器来看,仅可看出它是一个1×6,标准.100的连接器,我还见过百万次标准连接器。通过打开STM32F429I-Disco板的用户手册,在文档中搜索了描述SWD头的页面。我发现下表描述了每个引脚的作用:
快速浏览一下这张表,你注意到有什么问题吗?我会给你一个提示,看看针脚1 ...... 它是VDD_Target,即应用程序的VDD。这个引脚不提供目标电源供程序员检测,而是充当内置ST-Link的感应线!这意味着这些引脚实际上是为了对不在开发板上的部件进行编程而设计的!
如果我们要创建一个外部编程器适配器,那么适配器也需要一种方法来检测微控制器电压。由于VCC不在6针连接器上,我决定将另一个双针连接器添加到适配器,这将为我提供一个未使用的引脚,然后将MCU VCC跳线到外部编程器,虽然不是一个理想的解决方案,但至少比跳6线好太多了。为了确保我没有忘记引脚或者引脚1未被使用,我复制了引脚表并将其粘贴到我的原理图表上。
最后,唯一需要查阅的就是找出我的J-Trace Pro for ARM Cortex-M处理器的引脚。我找到了官方的数据表,然后在我的原理图中添加了一个2×5标准.100连接器,并再次粘贴了一份引脚。为什么我会使用10针头而不是第一张图像中的20针。这样做的原因是因为我有一个20针到10针的适配器,使用这个较小的尺寸可以让PCB也保持小尺寸。
现在所有连接器都在板上,我花了几分钟连接所有连接。将原理图放在一起时,我在制作这个过程时候喜欢做这些工作来让我制作效率更高:
留下记录,以便我记得为什么我做了一些事情
使用易于识别的信号描述标记每个网络
自动指定部件
使用No ERC符号标记任何未使用的引脚
结果如下:
结果很好,下一步是开发PCB,对构建这些简单适配器板的成本进行一些分析。
PCB布局以及原型设计:BOM和成本
完成原理图后,只需按一下按钮,即可将组件和网络推入PCB文档。在铺设电路板时,过程遵循以下几点:
将组件排列在空白纸上
自动路由以确保存在有效的路由解决方案
定义板轮廓(在这种情况下~1英寸乘0.75英寸)
路由任何电源信号(VCC等)
设定返回路径和地面的策略
路由信号
添加多边形填充
添加版权,备注等
检查布局
进行任何调整
生成生产文档
在元件布置阶段,确保连接器方向正确至关重要。
如图所见,使用两层,路由这些信号非常简单,无需添加任何过孔即可实现!
在设计电路板时,我喜欢查看生成的电路板,了解它在3D渲染中的样子。执行此操作时,可以为连接器添加3D模型,然后可以将其导出给机械工程师,以便使用电子模型构建外壳和其他工作。对于这个简单的电路板,我没有花时间添加这些连接器模型。最终电路板的外观如下所示:
从上往下看这个模型,在左侧,10针连接器将与两个针式公连接器一起安装在顶部。P3是连接到目标的母连接器,实际上将放置在电路板的底部。
电路板的材料清单(BOM)也非常简单。主板选择了以下组件:
这里有几点需要注意:
对于开发人员来说,组件P2可能会有很大不同,这取决于他们在编程器上使用的布线。我选择使用旧式IDC连接器。
连接器BOM成本不超过1.50美元。
我添加了一条IDC电缆,以防我没有,将外部编程器连接到适配器板。
此处未列出PCB的定价。
事实证明,如果进行小型电路板运行,PCB成本是最大的费用。我统计了一下,发现包括运费在内的约100美元,可以生产大约50块板子。如果你打算制造这些设备这是很棒的,但我只对设计板子过程感兴趣。总的来说,每个适配器将花费我25美元左右。
我可以做的更便宜吗?当然可以了!我本可以购买几条1.11美元的电缆,切断连接器,然后直接将电缆焊接到P3连接器上。不过仍然需要添加VCC跳线,布线可能已经建成了,加上烙铁大约5美元。但说实话,这样就没有设计布局一个PCB那么有趣了。
检验成果
转接板到货了,正如前两部分中讨论的那样,大多数开发板附带的板载调试器都是可用的,但通常提供的远不如专业调试器。我们一直在探索如何为ST Microelectronic开发板创建适配器板,以便我们轻松使用外部调试器。接下来让我们检查最终的结果!
在打开并检查我的板后,我发现它们看起来状态良好。正如您在下面看到的那样,该板看起来就像我们在第2部分中列出的那样,测量尺寸大约在1英寸×1.25英寸:
在烧制我的烙铁后,我将我的元件焊接到电路板上。JTAG / SWD和我的电源引脚在顶部,底部是6引脚SWD。组装好的电路板如下所示:
在这个阶段,我注意到两个小缺陷:
我从未测量过JTAG / SWD连接器尺寸,因此连接器略宽于电路板。
JTAG / SWD连接器太宽了,覆盖了VCC和上面的一些丝印。
不过这些缺陷都不会影响适配器的运行,考虑到这块板设计速度很快,很多板尺寸都是估摸的,其实对板的结果还是非常满意的。事实上,这些缺陷是如此微不足道,如果我没有指出它们,甚至可能都不会引人注意。
随着电路板的组装,是时候测试它了,看看我是否真的可以用我的适配器编程一个微控制器。为了测试,我将适配器板连接到STM32F429I-Discovery板上的6针连接器。我还将一个20针到10针的IDC连接器连接到我的SEGGER J-Link Ultra +,并将我的新带状电缆连接到适配器板。在此阶段,设置如下:
如果你还记得,我必须将VCC引脚放在电路板上,以便检测目标MCU是否通电。此时,我们需要将适配器板上的VCC引脚跳线到开发板上的VCC。为了做到这一点,我使用了Sparkfun母对母接头,并连接到STM32429I-Discovery板上的3V引脚之一。最终设置如下:
真正的考验当然是我是否可以编程微控制器。我将J-Link连接到我的电脑,并尝试使用简单的RTOS LED闪烁程序对电路板进行编程。谢天谢地,一切都按预期工作!没有给我更多的跳线(好吧,只是VCC的那个)。
如果有兴趣下载此项目的设计文件和gerber,请点击下方“阅读原文”下载
网友提问:
最终工作的性能是否达到了预期?例如:基于SWO printf的调试,暂停和单步执行代码,mem监视,分析(例如来自Atollic True Studio或simmilar),从STM Studio观察变量,基本的mem读写操作(例如来自SMT32 ST-Link Utility )?
看起来codeload确实有效。在代码加载(启动代码)后是否还需要按下目标(ST发现)板上的物理重置按钮来重置目标?速度如何(例如,在写入或读取闪存内容时)?
Jacob Beningo:
板载的调试器非常有限,因为是编程微控制器的最小解决方案。如果查看数据表,ST-Link v2的连接速度约为15 kb / s,而J-Link EDU的速度约为1 mb / s。更高端的调试器可以获得更快的速度。
通过此适配器接口使用外部程序员可以更快地完成所有操作。基于所使用的探测器也有改进,例如无限断点,同时访问多个总线的能力等等。