ESP32 烧录问题

ESP32 烧录问题

1.无法连接

Connecting......................................
 
A fatal error occurred: Failed to connect to ESP32: No serial data received.

这个表示通过串口连接esp32失败,可能存在多种原因,比如串口选择错误。

  • 所选串口不是连接到esp32的串口,可以先观察已有串口再将esp32接入PC查看串口设备变化。
排查方法

连接失败应该先尝试连接串口,观察能否正常打印。

首先确定自己使用的烧录方式。

  • 外置串口转usb模块烧录(一般需要手动进入下载模式)

  • 使用esp32板载的串口芯片引出的usb接口烧录(一般有自动下载电路)

  • 使用从esp32的usb引出的usb口,如果是jtag正常情况可以自动下载,如果是otg需要手动进入下载模式。

    这种情况在esp32c3 esp32s2 等较便宜的核心板上比较常见,部分s3也可能没有板载串口芯片,同时新出的c6 h2含内置jtag可能存在从esp32的usb下载的情况。这种情况,需要esp32自身维持这个usb设备,无法在复位时保持与PC的连接,使用普通串口监视器无法查看rom打印,跳过下一步。

打开串口监视器观察rom打印

40M晶振的esp32(大部分使用40M晶振)使用115200波特率连接esp32。26Mhz晶振的esp32(比如esp32c2)使用74880波特率连接。

尝试是否能连接,比如在windows部分ch340驱动可能会冲突,可能需要重装驱动解决。

能正常连接后,按rst复位,观察rom能否正常打印,也可以排查是否是esp芯片。

当然烧录过efuse或者控制了rom打印相关引脚的电平,可能也导致按rst无打印,这个需要参考芯片数据手册排查。

尝试手动进入下载模式

如果可以正常连接,但可能由于没有自动下载电路或者使用外置的usb转串口烧录工具烧录以及另一个下载电平相关引脚电平异常,可以尝试手动进入下载模式。

此时不要断开串口监视器。

esp32的自动下载电路一般用串口芯片的RTS和DTR控制 boot引脚和 EN引脚,使得esp32在复位时读取启动模式相关引脚的电平,

判定进入下载模式,并在烧录完成之后再控制en引脚,重启进入SPI Boot模式。

正常情况,我们按住boot使得电平处于下载模式需要的电平,然后按一下rst使得esp复位,这个时候,电路正常,串口会有打印,已经启动到下载模式。

当我们正常操作进入下载模式会有如下打印。如果有这个打印,关闭串口监视器,然后进行烧录。

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x3 (DOWNLOAD(USB/UART0))
waiting for download

如果确保boot引脚电平确实拉低,但复位后没有上述打印,可能存在一种情况是使用了另一个控制下载模式的引脚,使其处于不能进入下载模式的电平。

启动模式可以参考各个芯片的数据手册,定位这种问题先学会使用乐鑫官网找到对应芯片的数据手册。

  • esp32

    启动模式GPIO0GPIO2
    SPI Boot1任意值
    下载模式00

​ 这里设计自动下载电路也只有GPIO0变化,而GPIO2默认下拉。如果你的电路拉高了GPIO2也会导致无法进入下载模式。

  • esp32s3/esp32s2

    启动模式GPIO0GPIO46
    SPI Boot1任意值
    下载模式00

    这里设计自动下载电路也只有GPIO0变化,而GPIO46在复位时是弱下拉,一般不需要care。你的电路拉高了GPIO46也会导致无法进入下载模式。

  • esp32c3

    启动模式GPIO8GPIO9GPIO2
    SPI Boot任意值11
    下载模式101

    GPIO2并不控制启动模式,但官方建议上拉避免其毛刺问题。

    GPIO2和GPIO8默认浮空,而GPIO9默认弱上拉。手动进入下载模式会把GPIO9下拉,但需要注意GPIO8的电平。

  • esp32c6/esp32c2/esp32h2

    启动模式GPIO8GPIO9
    SPI Boot任意值1
    下载模式10

    GPIO8默认浮空,而GPIO9默认弱上拉,手动进入下载模式会把GPIO9下拉,但需要注意GPIO8的电平。

2.串口消失

很多同学使用esp32c3会遇到串口刚才可以烧录,后面串口消失了,或无法识别。如果使用esp32s3 esp32s2 esp32c6 也可能遇到这种问题。

这种情况是使用了esp32自己的usb,可能存在esp32自身程序运行故障不停复位,或者性能占用,线程调度问题,导致无法维持usb设备,或者程序占用了esp32的usb引脚。

解决办法

手动进入下载模式,可以则不会从flash加载程序,观察串口是否恢复。

操作步骤,按住boot使得电平处于下载模式需要的电平,然后按一下rst使得esp复位。

运行过程中串口消失排查方法

如果是程序不停复位问题,可以外接usb转串口模块到esp32的硬件串口0排查故障。或者使用jtag进行调试。软件故障可能存在各种原因,但有个可以快捷排查的情况是,esp32的usb引脚被占用。

  • esp32s3 :GPIO19 GPIO20
  • esp32s2 :GPIO19 GPIO20
  • esp32c3 :GPIO18 GPIO19
  • esp32c6 : GPIO12 GPIO13
  • esp32h2 :GPIO26 GPIO27

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

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

相关文章

Flink1.19编译并Standalone模式本地运行

1.首先下载源码 2.本地运行 新建local_conf和local_lib文件夹,并且将编译后的文件放入对应的目录 2.1 启动前参数配置 2.1.2 StandaloneSessionClusterEntrypoint启动参数修改 2.1.3 TaskManagerRunner启动参数修改 和StandaloneSessionClusterEntrypoint一样修改…

【EtherCAT】关于TwinCAT的使用

1.TwinCAT扫描后会出现轴 双击打开parameter 设置跟随误差为FALSE 设置电子齿轮比,转动一圈进360mm 激活配置 右键新建工程 添加标准工程 添加库lib 必须添加才能使用运动指令 POUS找到main 添加变量 编译 登录PLC 未使能 写入值 手动指令

嵌入式八股文

硬件 1.CPU、MPU、MCU、SOC联系与差别 Cpu是一台计算机的运算核心和控制核心。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。差不多所有的CPU的运作原理可分为四个阶 段:提取(Fetch)、解码(Dec…

外卖跑腿小程序源码如何满足多样需求?

外卖跑腿平台已经成了当代年轻人的便捷之选,校园中也不例外,那么外卖、跑腿小程序就需要满足用户多样化的需求,而这背后的源码扮演者最重要的角色。 用户类型的多样性 1.对上班族而言,他们希望外卖小程序能够快速下单、准确配送…

【Java语言】异常处理

异常 异常:在Java中程序执行过程中发生不正常行为。异常为多种,有算数异常、数组越界异常、空指针异常等(这些是比较常见的异常); 异常的体系结构: 数组越界异常: ArrayIndexOutOfBoundsException。空指…

使用PSpice进行第一个电路的仿真

1、单击【开始】菜单,选择【OrCAD Capture CIS Lite】。 2、单击【File】>【New】>【Project】。 3、①填入Name下面的文本框(提示:项目名称不要出现汉字); ②选择【Analog or Mixed A/D】; ③单击【…

深度剖析C++STL:手持list利剑,破除编程重重难题(上)

前言: C 标准模板库(STL)中的 list 容器是一个双向链表结构,它提供了高效的插入和删除操 作。与 vector 不同,list 中的元素不是连续存储的,因此可以在任何位置高效插入和删除元素,而无需移动其…

uniapp微信小程序转发跳转指定页面

onShareAppMessage 是微信小程序中的一个重要函数,用于自定义转发内容。当用户点击右上角的菜单按钮,并选择“转发”时,会触发这个函数。开发者可以在这个函数中返回一个对象,用于定义分享卡片的标题、图片、路径等信息。 使用场…

Matlab实现白鲸优化算法优化随机森林算法模型 (BWO-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 白鲸优化算法(Beluga Whale Optimizer, BWO)是一种受白鲸社会行为启发的新型群智能优化算法。该算法通过模仿白鲸群体中的合作和竞争机制来指导搜索过程,能够在复杂解空间中高…

c#基本数据类型占用字节长度/取值范围/对应.net类型

具体前往:c#基本数据类型占用字节数/取值范围/包装类-各基本类型.net类型,占用bit位数,默认值及取值范围

解决 IDEA 修改代码重启不生效的问题

前言 在使用 IntelliJ IDEA 进行 Java 项目开发时,有时会遇到一个令人头疼的问题:修改了代码后,重启服务却发现更改没有生效。通常情况下,解决这个问题需要通过 Maven 的 clean 和 compile 命令来强制重新编译,但这显…

React教程第二节之虚拟DOM与Diffing算法理解

1、什么是虚拟DOM 虚拟DOM 是javascript的一个对象,是内存中的一种数据结构,以树的形式存储UI的状态,树中的每个节点都代表着真实的DOM,用来描述我们希望在页面看到的 HTML结构; 现在的MVVM 框架,大多使用…

视觉SLAM相机——单目相机、双目相机、深度相机

一、单目相机 只使用一个摄像头进行SLAM的做法称为单目SLAM,这种传感器的结构特别简单,成本特别低,单目相机的数据:照片。照片本质上是拍摄某个场景在相机的成像平面上留下的一个投影。它以二维的形式记录了三维的世界。这个过程中…

【C++学习(35)】在Linux中基于ucontext实现C++实现协程(Coroutine),基于C++20的co_await 协程的关键字实现协程

文章目录 为什么使用协程协程的理解协程优势协程的原语操作yield 与 resume 是一个switch操作(三种实现方式): 基于 ucontext 的协程基于 XFiber 库的操作1 包装上下文2 XFiber 上下文调度器2.1 CreateFiber2.2 Dispatch 基于C20的co_return …

用jquery做一个websocket客户端

先看效果图&#xff1a; 功能很简单&#xff0c;就是作为客户端连接websocket&#xff0c;并实现接受和发送消息。具体代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"…

本地音乐服务器(二)

4. 上传音乐模块设计 4.1 上传音乐的接口设计 请求和响应设计&#xff1a; 新建music实体类&#xff1a; Data public class Music {private int id;private String title;private String singer;private String time;private String url;private int userid; } 4.2 创建Mu…

GRPC实现

1.首先下载对应编译插件&#xff0c;这里不再提供下载 2.编写proto文件 3.编写完成用命令生成go文件 protoc --go_out. --go-grpc_out. *.proto --go_out. 其中的. 是说你要编译的 .proto 文件目录为当前目录&#xff0c;按需修改 --go-grpc_out.&#xff0c;其中的. 是说你生…

「Java EE开发指南」如何使用Visual JSF编辑器设计JSP?(一)

Visual JSF Designer的目标是使创建JSF应用程序的特定于组件的工作更容易可视化&#xff0c;在本教程中&#xff0c;您将使用可视化设计器设计JSF登录页面&#xff0c;将学习如何&#xff1a; 创建一个JSF项目创建一个新的JSF页面设计JSF页面 该功能在MyEclipse中可用。 MyE…

大模型(LLMs)RAG 版面分析——表格识别方法篇

大模型&#xff08;LLMs&#xff09;RAG 版面分析——表格识别方法篇 一、为什么需要识别表格&#xff1f; 表格的尺寸、类型和样式展现出多样化的特征&#xff0c;如背景填充的差异性、行列合并方法的多样性以及内容文本类型的不一致性等。同时&#xff0c;现有的文档资料不…

力扣(leetcode)题目总结——动态规划篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏&#xff1a;点击进入 leetcode题目分类 关注走一波 前言&#xff1a;本系列文章初衷是为了按类别整理出力扣&#xff08;leetcode&#xff09;最经典题目&#xff0c…