ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

esp32-wrover-B的开发板烧入程序不正常

2021-09-14 01:04:33  阅读:319  来源: 互联网

标签:reset wrover esp32 IO0 EN RTS ._ DTR 开发板


  今天自己做esp32-wrover-B的开发板,在网上采用了ch340c的自动下载电路。下载后,发现一个问题:在烧入程序后发现,烧入程序正常。但一旦掉电,再次上电后,发现开发板处于 DOWNLOAD_BOOT 模式。
串口返回的数据时发现仅返回了一段文字:

rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

  最后查了很久,从这里找到答案:https://blog.csdn.net/milk_paramecium/article/details/113063642
因为IO0口被拉到了低电平。但网上资料说进入这个模式需要将IO0口手动接地,拉低电平,而我手上的这个默认就是低电平。最后将IO0口与3.3V连接后恢复正常。
  纠结电路为何直接进入DOWNLOAD_BOOT的模式。怀疑是工程底层没有配置对,然后反复测试,发现ch340未识别时,IO0是3.3V,一旦CH340被电脑识别后,然后IO0是0V。推测是CH340导致IO0不正常。最后照着这个方向去搜寻答案。发现一篇可能是答案(因为还未测试):https://zhuanlan.zhihu.com/p/145369083?from_voters_page=true
  大致总结一下:由于这个自动下载电路构成RS触发器后,

当不同时为0或者1时:

EN  = RTS
IO0 = DTR

  然而进入下载模式则需要如下的序列

1.  IO = 0; EN = 0
2.  IO = 0; EN 0 -> 1

  我们看下esptool.py里下载相关的代码

        # issue reset-to-bootloader:
        # RTS = either CH_PD/EN or nRESET (both active low = chip in reset
        # DTR = GPIO0 (active low = boot to flasher)
        #
        # DTR & RTS are active low signals,
        # ie True = pin @ 0V, False = pin @ VCC.
        if mode != 'no_reset':
            self._setDTR(False)  # IO0=HIGH
        (1)  self._setRTS(True)   # EN=LOW, chip in reset  
        //设置DTR = 1; RTS = 0, EN = 0; IO0 = 1
            time.sleep(0.1)//延时100ms
        (2)  self._setDTR(True)   # IO0=LOW
        (3)  self._setRTS(False)  # EN=HIGH, chip out of reset  
        //设置DTR = 0; RTS = 1,EN = 1; IO0 = 0
            time.sleep(0.05)/延时50ms
        (4)  self._setDTR(False)  # IO0=HIGH, done  

在(2)的过程中IO0由1->0,EN由0->1的时间为多少呢?
如图所示:

  CHIP_PU即EN,代码中23阶段之后会延时一段时间,而EN由于电容充电,电平并不会立马变为高电平,而是缓慢上升,以如上参数为例计算,同时参考芯片电气参数特性

  高电平为0.75VDD,则达到高电平按照如下公式计算:

  电容的充放电的时间要14ms,代码中延时了50ms为了等待EN由0->1。
在(1)需要等待一段时间,让电容放电,保证EN电平下降到电平0,才能保证系统正常复位,在代码中预留了100ms的等待时间。
我的开发板中C22为100nF充电时间为140ms。明天去试验一下是否是这个问题。

原文借鉴:https://zhuanlan.zhihu.com/p/145369083?from_voters_page=true
https://blog.csdn.net/milk_paramecium/article/details/113063642

标签:reset,wrover,esp32,IO0,EN,RTS,._,DTR,开发板
来源: https://www.cnblogs.com/action0/p/15265699.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有