自制ESP-01模块自动下载器遇到的坑

最近一段时间都在玩ESP-01模块,它长这个样子

有一颗ESP8266EX芯片,外部有1MByte的FLASH。玩它的原因是,价格便宜最低的见过4元多点还包邮,最大能有4个IO口,能连接WIFI。

编程使用VSCODE+PlatformIO,感觉编译速度比Arduino IDE要快很多。

为了下载程序,在今天之前就是自己用洞洞板焊了一个小板子,板子上带2个按键,1个2*4P的排母,一个4P排针。原理图如下,实物就不放照片了,太丑

一般下载流程:点击VSCode底部工具栏里面的“PlatformIO:Upload"(一个向右的箭头),趁着编译的空档,先按住SW1(拉低IO0),然后按下SW2并放开(拉低CHIP_EN再让它恢复成高电平,让ESP8266重启),然后放开SW1,这样ESP-01模块上的ESP8266EX芯片就进入了下载模式。

如果没配合好,手速慢了,或者忘记了,就会收到一个错误提示:A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
*** [upload] Error 2

前几天厌倦了这样的手工下载方式,决定去做一块自动下载的小模块,原理图如下:

器件很少TYPEA公头1个,AMS1117-3.3V一颗,CH340C一片,BC847BS一颗(双NPN三极管),10K*4排阻1颗,10uf电容2颗,0.1uf电容1颗,2*4排母1个,自觉手残如我应该能焊接好,于是信心满满地下单做PCB了。

等待了差不多四天,收到了PCB板子,三下五除二焊接好器件,就迫不及待地插上esp-01模块测试了。

不出意外地收到了前面的错误提示。

排查过程大致如下:

1、检查BC847BS的六个管脚是否都焊接好了;

2、检查排阻有没有短路;

3、检查BC847BS的2、4两脚到1、6,3、4的压降是否为0.7V左右;

4、用逻辑分析仪检查IO0和CHIP_EN是否正常被拉低。

到这个第4步发现问题了,整个下载过程,这两个脚只有IO0被正常地拉低了,CHIP_EN一直为高。

5、检查CH340C的RTS#和DTR#两个管脚,发现开始下载后,一直为低电平,直到下载报错。

6、找下载脚本esptool.py,说明一下,因为我开发电脑上安装了Arduino IDE,我第一次找到的就是这个的,所以一直都没搞对。

7、检查esptool.py脚本,找到_connect_attempt函数

注释很清楚,动作也没问题,先拉高DTR,同时拉低RTS,结合最上面的原理图,这一步就代表着让CHIP_EN处于低电平,IO0为高电平。

为啥我的实际情况就不是这个样子呢?

各种思考、各种测试,直到我把mode这个参数打印出来,才发现它居然是no_reset,完美地避开了DTR和RTS两个设置。

好吧,继续找这个no_reset在哪里设置的。找了一圈,没找到;百度了几个小时,没答案。

在电脑的硬盘上到处翻目录的牌子,直到我翻到了它

这个目录里面的就是描述各个ESP8266板子的参数文件,我用的是esp01_1m,所以打开它,看看有点啥

哟,这不是resetmethod吗,它原本是写的"ck",不知道是啥意思,我去看看其它的板子,很多都是nodemcu,改成它。

下载,舒服~~。

话说,有人能说说,这个”ck"是啥意思不?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值