我的解决办法
原因很简单,GPIO0针脚具有复用功能,可以是GPIO功能,也可以是置低电平作为串行编程模式,也就是下载模式:
所以要想下载成功,把GPIO0置低电平,然后每次下载前都先复位(rst针脚低电平有效)一下,如此就没问题了。
下面顺便简单记录下esp8266的几个针脚。
8脚 | VCC | 接+3.3v,不能接+5v |
7脚 | RX/GPIO3复用 | 编程模式为RX,其它为GPIO功能 |
6脚 | RST | 复位,低电平触发 |
5脚 | GPIO0/flash复用 | 输入低电平为flash(即编程模式),作为输出就是GPIO功能 |
4脚 | CH_PD | 高电平chip正常工作,低电平貌似是处于休眠状态 |
3脚 | GPIO2 | 就是GPIO功能 |
2脚 | TX/GPIO1复用 | 编程模式下为TX,其它为GPIO功能 |
1脚 | GND | 接地 |
编程模式:8脚VCC接+3.3v,7脚RX接USB转TTL的TX,6脚RST接开关接地,5脚flash接地,4脚接+3.3v,3脚是输出(编程模式下无所谓),2脚TX接USB转TTL的RX,1脚接地。需要烧录代码时,按一下6脚的开关使RST低电平触发,由于此时5脚处于低电平,所以ESP8266会进入编程模式,之后就能烧代码了。
普通模式:代码烧录完毕后,若不准备改动了,便可以让5脚不再输入低电平而作为GPIO0用,这时ESP8266不再是编程模式,7脚、5脚、3脚、2脚都是GPIO功能,便可以与arduino交互了。注意此时ESP8266是不能被arduino ide串口监视器监视的,因为电脑和ESP8266无法通过RX、TX通讯。
以上只是我查看资料时的总结加猜测,并未亲自验证,仅作参考。