在以前的STM32单片机应用中,经常使用STM32F103C8T6最小系统板(小蓝板)作为主控。程序下载和串口交互都需要额外器件和接线,程序下载的话要用到ST-link,串口交互用到USB-TTL,常见的样子就下面这样吧。
为了摆脱接线的麻烦和少占用我一个USB口,我决定将它俩集成到主控上。这里采用的方案是ST-link V2.1,上图所示的是ST-link V2,它没带串口功能。而V2.1的带有虚拟串口,但是固件大小比V2的大。
这里用要2块STM32F103的芯片,顶层的芯片是刷ST-link V2.1固件作下载加串口功能,底层是真正要用的主控芯片,并且如果要用ST的芯片,作下载和串口的芯片要用STM32F103CB,否则128KB固件刷不进去,后面我用的是AIR32F103CB(5块一片)替代,因为正版的芯片有点贵。主控芯片C8/CB都可以,看个人选择。
除此之外,我又加了一个0.91寸的OLED和2个龟仔按键,2个LED灯作为简单的外设拓展。
纯手工焊接,丑了点,但不影响性能。
上面是ST-link设备识别、串口设备识别、虚拟U盘识别,下载和串口调试已验证无误,成功实现一线通。
下面演示的是虚拟U盘下载
晶振用的是三脚无源晶振,为了减小总体体积。其它元器件基本都是0603封装的,有个保险丝是0805封装。
原理图和PCB在立创已开源:点击跳转
板子焊接首先从底层焊接,锡膏加加热台,底层的所有贴片器件都可以全部贴完上去(图示排针肯定是最后最后最后焊接,当时做的时候没拍过程图)
第二步焊接顶层芯片和Type-C接口,同时在底层裸露的焊盘用杜邦线的公头端焊接,用于给芯片下载程序。杜邦线和板子的VCC和GND可以不用焊接,直接用手摁在排针孔上。最后要检查一下焊完这些有没有短路的,上电不短路进行下一步。
打开STM32 ST-LINK Utility,杜邦线母头端和STlink模块连接,公头连接板子。然后将STlink模块插到电脑。
使用STlink模块连接芯片。
选择固件STLinkV2.J28.M18.bin下载,下载过程中不要乱动,可能会下载失败。
进行固件更新
拔掉STlink模块,使用type-C线把板子和电脑连接,从STM32 ST-LINK Utility中打开升级工具。这个是必须要升级的
来到关键的一步,点击Device Connect,如果一切正常,显示如下。不正常的话一般都是焊接出错了,或者需要拔插连接电脑多次才能识别出来。这里也是坑点出现的地方
到这里,点击确定,然后再次点击Device Connect
能看到原来刷的固件版本,和要升级到的目标版本,点击Yes,进行升级,中途别乱动,可能会如下图卡死。
卡死就重新再来
这里是显示成功了。重新拔插连接电脑,会识别到STlink和串口设备,同时会多个U盘设备出来
完成剩余元器件的焊接。烧录测试bin文件代码,验证整体没有问题。
烧录完成,要手动按一下复位键,效果如下,蓝灯常亮,绿灯快闪(视频转GIF颜色有些淡化了)
验证无误就可以用了,以后下载调试只要一根Type-C线,上面演示的是虚拟U盘下载,日常在Keil软件中就可以直接下载,串口就懒得演示了。