一款集成ST-link下载及虚拟串口的STM32F103C8T6最小系统板设计

2023-11-16

前言        

        在以前的STM32单片机应用中,经常使用STM32F103C8T6最小系统板(小蓝板)作为主控。程序下载和串口交互都需要额外器件和接线,程序下载的话要用到ST-link,串口交互用到USB-TTL,常见的样子就下面这样吧。

     为了摆脱接线的麻烦和少占用我一个USB口,我决定将它俩集成到主控上。这里采用的方案是ST-link V2.1,上图所示的是ST-link V2,它没带串口功能。而V2.1的带有虚拟串口,但是固件大小比V2的大。

一、设计3D展示

        

         这里用要2块STM32F103的芯片,顶层的芯片是刷ST-link V2.1固件作下载加串口功能,底层是真正要用的主控芯片,并且如果要用ST的芯片,作下载和串口的芯片要用STM32F103CB,否则128KB固件刷不进去,后面我用的是AIR32F103CB(5块一片)替代,因为正版的芯片有点贵。主控芯片C8/CB都可以,看个人选择。

        除此之外,我又加了一个0.91寸的OLED和2个龟仔按键,2个LED灯作为简单的外设拓展。

二、实物展示

 

         纯手工焊接,丑了点,但不影响性能。

三、功能展示

         

 

         上面是ST-link设备识别、串口设备识别、虚拟U盘识别,下载和串口调试已验证无误,成功实现一线通。

下面演示的是虚拟U盘下载

四、仿制步骤

1.简述

  • 本设计板载ST-link V2.1,具备虚拟串口功能,能完成程序下载、串口调试一线通。同时,板载2个LED指示灯,2个外部按键,0.91寸IIC协议OLED
  • 关于ST-link V2.1与ST-link V2:功能上V2.1比V2多虚拟串口功能,固件比V2大,要用128KB容量芯片
  • 本设计用到2块单片机芯片,顶层的是作为ST-link V2.1,可以用AIR32F103CB代替,否则只能用STM32F103CB(128KB),ST的芯片价格可能较高。底层的芯片是作为主控芯片,选用ST正版芯片或国产替代也可以
  • 该电路焊接制作会较为复杂,建议有一定动手能力和问题分析能力的小伙伴上手
  • 关于元器件,屏幕用的是某园的如下款

   

     晶振用的是三脚无源晶振,为了减小总体体积。其它元器件基本都是0603封装的,有个保险丝是0805封装。

2.电路板打样

        原理图和PCB在立创已开源:点击跳转

3.制作、调试步骤

板子焊接首先从底层焊接,锡膏加加热台,底层的所有贴片器件都可以全部贴完上去(图示排针肯定是最后最后最后焊接,当时做的时候没拍过程图)

   

2.第二步

          第二步焊接顶层芯片和Type-C接口,同时在底层裸露的焊盘用杜邦线的公头端焊接,用于给芯片下载程序。杜邦线和板子的VCC和GND可以不用焊接,直接用手摁在排针孔上。最后要检查一下焊完这些有没有短路的,上电不短路进行下一步。

  

3.第三步

       打开STM32 ST-LINK Utility,杜邦线母头端和STlink模块连接,公头连接板子。然后将STlink模块插到电脑。

    

使用STlink模块连接芯片。

  选择固件STLinkV2.J28.M18.bin下载,下载过程中不要乱动,可能会下载失败。

4.第四步

    进行固件更新

    拔掉STlink模块,使用type-C线把板子和电脑连接,从STM32 ST-LINK Utility中打开升级工具。这个是必须要升级的

    

来到关键的一步,点击Device Connect,如果一切正常,显示如下。不正常的话一般都是焊接出错了,或者需要拔插连接电脑多次才能识别出来。这里也是坑点出现的地方

到这里,点击确定,然后再次点击Device Connect

能看到原来刷的固件版本,和要升级到的目标版本,点击Yes,进行升级,中途别乱动,可能会如下图卡死。

卡死就重新再来

这里是显示成功了。重新拔插连接电脑,会识别到STlink和串口设备,同时会多个U盘设备出来

5.第五步

完成剩余元器件的焊接。烧录测试bin文件代码,验证整体没有问题。

烧录完成,要手动按一下复位键,效果如下,蓝灯常亮,绿灯快闪(视频转GIF颜色有些淡化了)

        验证无误就可以用了,以后下载调试只要一根Type-C线,上面演示的是虚拟U盘下载,日常在Keil软件中就可以直接下载,串口就懒得演示了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一款集成ST-link下载及虚拟串口的STM32F103C8T6最小系统板设计 的相关文章

  • Python_数据读取_读取单个csv文件和批量读取csv文件

    读取单个csv pd read csv 直接读取单个csv文件通过pd read csv 函数直接在指定路径进行文件读取 需要利用Pandas包 其中 1 路径前的r表示路径符号不转义 window操作系统下不再用调整 为 或 进行文件读取
  • spark dataframe 数据类型转换

    文章目录 1 spark sql数据类型 数字类型 日期类型 复杂类型 2 spark sql和scala数据类型对比 3 spark sql数据类型转换示例 代码 输出 1 spark sql数据类型 数字类型 ByteType 代表一个

随机推荐

  • 解决连接腾讯云Ubuntu服务器,使用Xshell和WinSCP无法直接用root用户登陆

    发现腾讯云服务器登入只能用ubuntu用户名登入 但是无法使用root登录 下面是解决方法 1 首先使用Xshell用ubuntu用户进入系统 输入命令 sudo passwd Enter new UNIX password 然后输入密码
  • 没有权限删除文件

    通过远程发版时 有可能会没有权限删除文件 如下解决方法 1 将user 用户切换root 用户 sudo su root 该方法不一定成功 因为有可能设置权限你不能切换 但成功以后一劳永逸 当方法1没有成功时 采用如下方法 2 将你所操作的
  • 网络请求-登录

    post请求的header中发送本地存储的token 校验服务器中是否存在
  • jsbridge原理_Hybrid App技术解析 -- 原理篇

    引言 随着 Web 技术和移动设备的快速发展 Hybrid 技术已经成为一种最主流最常见的方案 一套好的 Hybrid架构方案 能让 App 既能拥有极致的体验和性能 同时也能拥有 Web技术 灵活的开发模式 跨平台能力以及热更新机制 想想
  • FLatten Transformer 简化版Transformer

    今天在找论文时 看到一篇比较新奇的论文 在这里跟大家分享一下 希望可以给一些人提供一些思路 虽然现在Transformer 比较火 在分割上面也应用的比较多 但是我一直不喜欢用 其中一个原因是结构太复杂了 平时我主要用一个sel atten
  • Java正则工具类:字母数字下划线、数据库url校验等

    文章目录 前言 一 正则基础语法 二 正则工具类 总结 前言 本文内容观摩的是其他作者的代码 在基础上增加修改了一些 参考原文地址 java用正则表达式 提示 以下是本篇文章正文内容 下面案例可供参考 一 正则基础语法 字符 描述 匹配输入
  • RabbitMQ --- 惰性队列、MQ集群

    一 惰性队列 1 1 消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度 就会导致队列中的消息堆积 直到队列存储消息达到上限 之后发送的消息就会成为死信 可能会被丢弃 这就是消息堆积问题 解决消息堆积有三种思路 增加更多消费者
  • Numpy中的转换成数组的array函数(更新中)

    今天给大家讲解一下图像处理和深度学习里面一个常用的函数array array的功能是接收一个多位置数 例如列表list 元 组tuple等 列表 list1 1 2 3 list2 1 2 3 list3 1 2 3 元组 tuple 1
  • 单片机串口时序与TTL电平

    串口是一个广义的概念 这是单讲单片机的串口UART 以及单片机的TTL电平 主要是记录一下自己忘了还能再看一下 1 TTL电平标准 输出 L lt 0 8V H gt 2 4V 输入 L lt 1 2V H gt 2 0V TTL器件输出低
  • VTK笔记-体绘制-vtkVolume

    体渲染 体渲染是一个用于描述3D数据渲染过程的术语 这里的3D数据是指其属性信息遍及3D空间 而不是一个在3D空间中的2D曲面 面渲染是对数据的表面或者一个抽取的轮廓进行渲染 是通过对面上的标量属性进行显示的 面渲染能显示其表面或者一个抽取
  • 常用数据结构与算法:二叉堆(binary heap)

    一 什么是二叉堆 二 二叉堆的实现 三 使用二叉堆的几个例子 一 什么是二叉堆 1 1 二叉堆简介 二叉堆故名思议是一种特殊的堆 二叉堆具有堆的性质 父节点的 键值 总是大于或等于 小于或等于 任何一个子节点的键值 二叉堆又具有二叉树的性质
  • vue 集成file-saver和xlsx 实现前端表格导出

    1 npm安装 npm install xlsx save npm install file saver save 2 创建export js import FileSaver from file saver import as XLSX
  • ntp时间同步软件_MES、SCADA项目中的时间同步—S7-1500和PC通过NTP进行时间同步

    写在面前 文中链接仅在微信公众号有效 大家好 我是小智 智能制造之家号主 前面我们在谈到MES SCADA项目的时候 更多的是从网络 从通讯协议 从数据采集方向去阐述 比如网络丢包 比如modbus TCP 比如S7 COMM 又比如网络冗
  • 踩坑之路(jpa的批量插入) Oracle

    今天做项目的一个需求 需要把其他地方的数据存储到本地数据里面 没想到一次踩了两个坑 因为需要保存的数据很大 而且每天都需要保存一次 第一次用的jpa的saveAll方法 测试了一遍 保存下来总共花了50分钟 老大看时间的太慢了 提醒了我一下
  • day10-Dom操作

    js Dom 概述 1 通过js获取页面上的元素 2 操作元素 2 1 操作元素的样式 2 2 操作元素的类名 2 3 操作元素属性 2 4 操作元素的内容 2 5 获取元素在dom中的一些信息 3 利用js来生成 添加 删除 修改 克隆元
  • 盘点一个Python自动化办公需求——获取文件夹下所以文件夹的名字,并存excel为一列

    01 前言 这个事情还得从前几天在Python最强王者群 东哥 问了一个Python自动化办公处理的问题 需求倒是不难 一起来看看吧 02 实现过程 这里 wangning 又给了一个答案 他自己之前整理的文章 不过需要自己稍微修改下才行
  • 几种硬盘IO性能测试工具

    dd工具 操作系统 ubuntu 12 04 测试工具 dd 版本 8 21 执行dd version来查看 工具说明 dd命令能粗略测试硬盘IO性能 不足 执行dd命令测试硬盘IO性能 对硬盘的损害很大 不建议多次或长时间尝试 测试命令
  • POSTMAN提取接口返回值

    记录一下 创建一个请求在Tests模块写入提取方法 如图 可点击右侧 Set a globals variable 直接生成写入全局变量语句 set token tk 中的 token为全局变量名称 切记后边的tk 变量名 不要加引号 写好
  • json按照key排序c语言实现,Json中的key类型

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 易于人阅读和编写 同时也易于机器解析和生成 它基于JavaScript Programming Language Standard ECMA 262
  • 一款集成ST-link下载及虚拟串口的STM32F103C8T6最小系统板设计

    前言 在以前的STM32单片机应用中 经常使用STM32F103C8T6最小系统板 小蓝板 作为主控 程序下载和串口交互都需要额外器件和接线 程序下载的话要用到ST link 串口交互用到USB TTL 常见的样子就下面这样吧 为了摆脱接线