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.mzph.cn/bicheng/7728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity EventSystem入门

概述 相信在学习Unity中,一定有被UI事件困扰的时候把,当添加UICanvas的时候,Unity会为我们自动添加EventSystem,这个是为什么呢,Unity的UI事件是如何处理的呢,在使用各个UI组件的时候,一定有不…

Java面试题:如何使用原子类(如AtomicInteger)来实现线程安全的计数

在 Java 中,java.util.concurrent.atomic 包提供了一组原子类,它们用于在多线程环境中执行原子操作。AtomicInteger 是这个包中最基本的原子类之一,它提供了一种线程安全的方式来进行整数的原子操作。以下是如何使用 AtomicInteger 来实现线程…

2269. 找到一个数字的 K 美丽值C++

一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目: 子字符串长度为 k 。子字符串能整除 num 。 给你整数 num 和 k ,请你返回 num 的 k 美丽值。 注意: 允许有 前缀 0 。0 不能整除任何值。 一个 子字符串 是一个字符…

Redis(Redis配置和订阅发布)

文章目录 1.Redis配置1.网络配置1.配置文件位置 /etc/redis.conf2.bind(注销支持远程访问)1.默认情况bind 127.0.0.1 只能接受本机的访问2.首先编辑配置文件3.进入命令模式输入/bind定位,输入n查找下一个,shift n查找上一个&…

嵌入式实时操作系统在工业领域的应用

嵌入式实时操作系统是面向嵌入式系统的、保证在一定时间限制内完成各种程序的执行并提供资源分配、调度、输入输出控制以及数据管理等服务的软件。嵌入式实时操作系统一般包含核心功能和扩展功能,核心功能主要包含任务管理、任务同步与通信、时钟/定时器管理和中断异…

OpenHarmony 实战开发—— refreshlayout 组件开发学习指南~

1. RefreshLayout_harmonyos 功能介绍 1.1. 组件介绍: RefreshLayout_harmonyos 是一款下拉刷新组件 1.2. 手机模拟器上运行效果: 2. RefreshLayout_harmonyos 使用方法 2.1 在目录 build.gradle 下 implementation project(":refreshlayout_ha…

新能源汽车动力电池热管理-液冷方案应用原理与应用前景简介

前言 动力电池是新能源汽车的核心部件之一,其性能和寿命直接影响着车辆的续航里程和使用成本。液冷方案作为一种常见的动力电池温控解决方案,被广泛应用于新能源汽车领域。本文将详细介绍液冷方案的原理、发展方向以及市场前景。 一、液冷方案的原理 …

Jmeter 中 CSV 如何参数化测试数据并实现自动断言

当我们使用Jmeter工具进行接口测试,可利用CSV Data Set Config配置元件,对测试数据进行参数化,循环读取csv文档中每一行测试用例数据,来实现接口自动化。此种情况下,很多测试工程师只会人工地查看响应结果来判断用例是…

CentOS7编译安装freeswitch1.10.11

由于 FreeSWITCH 更新非常快,请自己查找最新的版本,如,截止 2022年6月4日,最稳定的发行版是:1.10.11 下载源代码: wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.11.-release.…

Liunx打包压缩

注:只用记忆tar和gzip,zip/unzip三种命令与常用参数使用方式,其他做为了解 目录 压缩与打包的概念 常用的压缩与打包工具 tar gzip bzip2 xz 速记总结 1.使用 tar 进行打包 2.使用 tar 结合压缩工具 3.解压缩与解打包 其他压缩工…

Springboot+Vue项目-基于Java+MySQL的影院订票系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

生成gitee公钥

1、打开设置 2、设置SSH公钥 3、生成公钥 4、复制终端输出的公钥,放到这里,标题随便取。 5、测试 ssh -T gitgitee.com 最后用这个测试

帆软报表实现填报报表

我们拿emp表举例 登记信息表 设计一个报表实现对emp表员工的登记 (emp表为ORACLE自带用户scott下的一个表) 首先,我们设计好填报界面,新建一个普通报表,将emp表中需要的输入一一回应填写进表中。 如下图所示&#xf…

var、let、const的区别

在JavaScript中,var、let、const都是用来声明变量的关键字,但它们之间存在一些关键的区别,这些差异主要体现在作用域、变量提升、重复声明和值的可变性等方面: var 作用域: var声明的变量具有函数作用域或全局作用域。在函数内部…

区块链扩容:水平扩展 vs.垂直扩展

1. 引言 随着Rollups 的兴起,区块链扩容一直集中在模块化(modular)vs. 整体式(monolithic)之争。 如今,模块化与整体式这种一分为二的心理模型,已不适合于当前的扩容场景。本文,将展…

ASP.NET MVC企业级程序设计 (入住退房,删除)

目录 效果图 实现过程 控制器代码 DAL BLL Index 效果图 实现过程 控制器代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc;namespace MvcApplication1.Controllers {public class HomeController …

大厂Java面试题:MyBatis中有几种加载映射器(Mapper.xml)的方式?

大家好,我是王有志。 今天给大家带来的是一道来自京东的 MyBatis 面试题:MyBatis 中有几种加载映射器(Mapper.xml)的方式? 常见加载 MyBatis 映射器的方式有 5 种,可以根据不同的使用方式来进行具体区分&…

【linux-IMX6ULL中断配置流程】

目录 1. Cortex-A7和GIC中断概述1. 1 Cortex-A7中断系统:1. 2 GIC中断控制器简介: 2. 中断配置概述3. 底层中断文件配置3.1 对启动文件.s的配置思路3.2 对中断函数配置思路 4. 上层中断配置流程 1. Cortex-A7和GIC中断概述 学习IMX6UL的中断处理系统&…

Git同步代码

Git中5个区,和具体操作? 代码提交和同步代码 代码撤销和撤销同步 平时是怎么提交代码的? 第零步: 工作区与仓库保持一致第一步: 文件增删改,变为已修改状态第二步: git add ,变为已暂存状态 $ git status $ git a…

1天搞定SpringBoot+Vue全栈开发 (8)前端路由VueRouter(进行组件切换)

1.VueRouter安装与使用 2.参数传递 创建路由组件 在项目中定义Discover.vue、Friends.vue、My.vue三个组件&#xff0c;将来要使用vue-router来控制它们的展示与切换&#xff1a; Discover.vue <template><div><h1>发现音乐</h1></div> <…