STM32接入CH340芯片的初始化进入升级模式(死机)问题处理

目录

  • 1. 问题描述
  • 2. 问题分析
    • 2.1 CH340G/K 的初始化波形
    • 2.2 第1种USB升级电路
    • 2.3 第2种USB升级电路
    • 2.4 第3种USB升级电路
    • 2.5 第4种USB升级电路
  • 3. 总结

1. 问题描述

我所用的CH340G(CH340K也用过)接在MCU的电路中,在插入CH340G/K 的接插件(TYPE-C或其他)后MCU就会卡死,这种现象实际上是MCU进入了升级模式导致的。
解决方式从CH340G/K 的升级电路入手。

2. 问题分析

2.1 CH340G/K 的初始化波形

初始化波形:

  1. RST#,CH340G的RST#引脚,低电平有效(正常情况是高电平);
  2. DTR#,CH340G的DTR#引脚,低电平有效(正常情况是高电平);

在这里插入图片描述

2.2 第1种USB升级电路

此电路简单:

  1. CH340G/K 的DTR# 接-> MCU-BOOT0
  2. CH340G/K 的RTS# 接-> MCU-REST
  3. CH340G/K 的 RST# 直连 MCU-REST,并上拉直3.3V;
  4. CH340G/K 的 DTR# 直连 MCU-BOOT0,并下拉直地;

升级,时配置:

在这里插入图片描述

出现问题:
MCU正常工作时,插入TYPE-C瞬间,CH340G/K 初始化,初始化波形如第2.1章节。
此时,在RST#上升沿结束时,即MCU复位完成时,DTR为高电平,即BOOT0为高电平,MCU进入升级模式,问题出现了。

这种电路可以正常升级,只要不插入TYPE-C 或其他CH340G/K 的接口 可以正常工作。

2.3 第2种USB升级电路

把第一种电路反过来连接,也不行,原因是,DTR#和RST#是同时完成上升沿动作的。

这种电路可以正常升级,只要不插入TYPE-C 或其他CH340G/K 的接口 可以正常工作。

2.4 第3种USB升级电路

在第1种电路的基础上,将DTR#反向,即利用PNP三极管电路:

这样做的目的是在 MCU-REST 完成上升沿后检测到的 MCU-BOOT0 电平为低电平,R51不焊。

CH340G/K 的 RST# 直连 MCU-REST,并上拉直3.3V;

在这里插入图片描述

结果,发现也不行,现象同上。

这种电路可以正常升级,只要不插入TYPE-C 或其他CH340G/K 的接口 可以正常工作。

2.5 第4种USB升级电路

如2.4章节,CH340G/K 的 RST#结束上升沿时,MCU-BOOT0检测到的电平为低电平,问题依旧,故问题应该在波形另一端,波形开始位置,MCU-REST 应该最先拉低???
试一下,在2.4章节的基础上,将CH340G/K 的 RST# 与 DTR# 反接:

CH340G/K 的 DTR# 直连 MCU-REST,并上拉直3.3V;
在这里插入图片描述
上电,插入TYPE-C ,MCU不再死机,继续正常工作。

此时,CH340G/K 的升级配置应为:

在这里插入图片描述

升级时,CH340G/K 的 引脚状态:

在这里插入图片描述

3. 总结

在 CH340G/K 初始化时:

  1. MCU-REST 在 MCU-BOOT0 处于低电平状态下,进行下拉操作,在MCU-REST 与 MCU-BOOT0 恢复正常电平时,将导致MCU死机,MCU-REST 先于 MCU-BOOT0 下拉可解决该问题;
  2. MCU-REST 在 上升沿结束时将判断 MCU-BOOT0 的状态,MCU-BOOT0 处于高电平,MCU死机,MCU-BOOT0 处于低电平 MCU 正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/601228.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于点灯Blinker的ESP8266远程网络遥控LED

本文介绍基于ESP8266模块实现的远程点灯操作,手机侧APP选用的是点灯-Blinker,完整资料及软件见文末链接 一、ESP8266模块简介 ESP8266是智能家居等物联网场景下常用的数传模块,具有强大的功能,通过串口转WIFI的方式可实现远距离…

文献速递:深度学习医学影像心脏疾病检测与诊断--CT中的深度学习用于自动钙评分:使用多个心脏CT和胸部CT协议的验证

Title 题目 Deep Learning for Automatic Calcium Scoring in CT: Validation Using Multiple Cardiac CT and Chest CT Protocols CT中的深度学习用于自动钙评分:使用多个心脏CT和胸部CT协议的验证 Background 背景 Although several deep learning (DL) calc…

微软开发新模型;YouTube 推出新AI功能;可折叠iPhone 或发布?

微软或开发新模型与 Google、OpenAI 竞争 The Information 报道,微软正在训练一种新的 AI 大模型「MAI-1」,规模上足以与 Google、Anthropic 乃至 OpenAI 的先进模型抗衡。 据报道,这个 MAI-1 模型由微软聘请的 Inflection 前 CEO Mustafa S…

unity基础(二)

debug方法 Debug.Log(" 一般日志 ");Debug.LogWarning(" 警告日志 ");Debug.LogError(" 错误日志 ");// Player Informationstring strPlayerName "Peter";int iPlayerHpValue 32500;short shPlayerLevel 10;long lAdvantureExp 1…

爱普生MCU系列语音芯片S1C31D41

随着科技的发展和产品的集成化,语音芯片已经逐渐替代了多种语音设备应用在各场合。语音芯片主要特性是功耗低,抗干扰能力强,外围器件少,控制简单,语音保存时间久(某些语音芯片可以保存内容100年),掉电不丢失…

yolo-world:”目标检测届大模型“

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

【Git】Git学习-16:git merge,且解决合并冲突

学习视频链接: 【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 1 创建分支dev,并用merge合并master分支,使dev分支合并上master分支中内容为…

[Algorithm][多源BFS][矩阵][飞地的数量][地图中的最高点][地图分析] + 多源BFS原理讲解 详细讲解

目录 0.原理讲解1.矩阵1.题目链接2.算法原理详解3.代码实现 2.飞地的数量1.题目链接2.算法原理详解3.代码实现 3.地图中的最高点1.题目链接2.算法原理详解3.代码实现 4.地图分析1.题目链接2.算法原理详解3.代码实现 0.原理讲解 注意:只要是用**BFS解决的最短路径问题…

韩顺平0基础学Java——第5天

p72——p86 今天同学跟我说别学java,真的吗?唉,先把这视频干完吧。 逻辑运算符练习 x6,y6 x6,y5 x11,y6 x11,y5 z48 错了&a…

【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】

HTMLCSS家乡河南主题网页目录 🍔涉及知识🥤写在前面🍧一、网页主题🌳二、页面效果Page1 首页Page2 开封游玩Page 3 开封美食Page4 留言 🌈 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 🐋四…

【Git】Git学习-14:VSCode中使用git

学习视频链接:【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 在vscode中打开文件 code . 自行修改内容,在源代码管理器中测试下

flutter报错

组件相关 type ‘List’ is not a subtype of type ‘List’ children: CardList.map((item) > Container( 加上 *** < Widget>*** 正常 type ‘(dynamic, dynamic) > Container’ is not a subtype of type ‘(CardType) > Widget’ of ‘f’ children: CardL…

Spring Data JPA自定义Id生成策略、复合主键配置、Auditing使用

前言 在Spring Data JPA系列的第一篇文章 SpringBoot集成JPA及基本使用-CSDN博客 中讲解了实体类的Id生成策略可以通过GeneratedValue注解进行配置&#xff0c;该注解的strategy为GenerationType类型&#xff0c;GenerationType为枚举类&#xff0c;支持四种Id的生成策略&…

详细讲解lua中string.gsub的使用

string.gsub 是 Lua 标准库中的一个函数&#xff0c;用于全局替换字符串中的某些部分。string.gsub 是 Lua 中非常实用的一个函数&#xff0c;它可以用来进行字符串的处理和替换操作。 它的基本语法如下&#xff1a; string.gsub(s, pattern, replacement [, n])s 是要处理的…

鸿蒙开发核心技术都有哪些【都是从零开始】

鸿蒙开发核心技术都有哪些&#xff1f;&#xff1a;【持续1年的时间公关鸿蒙技术】 我们能做哪些呢&#xff1f; 还是从UI业务开始吧 面试题1&#xff1a; 基于STAGE模型项目重构等问题 代理设计模式&#xff0c;业务与架构隔离 中介者模式&#xff0c;和代理设计模式的区别…

项目管理-项目绩效域1/2

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 1.项目绩效域--整体框架 项目绩效域 重点&#xff1a; ①八大绩效域的含义。 ②八大绩效域的问题和解决方案。 ③八大绩效域与十大管…

Go标准库——Flag库和Log库

一.Flag Go语言内置的flag包实现了命令行参数的解析&#xff0c;flag包使得开发命令行工具更为简单。 1.1 os.Args 如果你只是简单的的想要获取命令行参数&#xff0c;可以像下面代码示例一样使用os.Args来获取命令行参数。 os.Arg实际是一个存储命令行参数的字符串切片([]stri…

Linux最新提权通杀五大绝招(上)

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 Linux 主机权限提升问题是普遍存在的。在Web 服务器、数据库、防火墙、IOT等基础设施中&#xff0c;大部分都运行着Linux 操作系统&#xff0c;鉴于Linux 设备在大量基…

【负载均衡在线OJ项目日记】项目简介

目录 前言 什么是负载均衡 所用的技术和开发环境 所用技术 开发环境 项目的宏观结构 leetcode 结构 结构 编写思路 前言 从C语言的文章到现在Linux网络部分&#xff0c;我已经涉猎了很多知识&#xff1b;终于在今天我要开始搞项目了&#xff0c;通过项目我也可以开始…

鸿蒙OS NEXT的推出,不仅面向App端

华为官方公布6月份的版本为beta版&#xff0c;依然属于开发者测试版&#xff0c;但可以向普通用户开放了。这点和苹果iOS系统测试形式略微相似&#xff1a;6月份开放首个测试版&#xff0c;随后过渡到公测版&#xff0c;最后再和年度新机一起发布正式版系统。 如果按照这个进度…
最新文章