编程 RF 设置 ESP-12-Q 后无法获得 GPIO0 高电平

Cannot Get GPIO0 High after programming RF settings ESP-12-Q

我正在尝试使用自定义编译的 nodemcu 映像刷新 AI-Thinker ESP-12-Q 模块。当芯片第一次启动时,它会显示一条消息说它有 8mbit (1MB) 闪存。在每个文档和图像上都显示该模块具有 32 兆位 (4MB) 闪存。这是我所做的和结果:

nodemcu 图像 esp 模块编程后运行 nodemcu。我需要使用 ADC 通道。当我说 adc.read(0) 它给了我 65535。然后就像到处说的那样,我需要更改配置的第 107 个字节。为此:

然后恐怖开始了:当芯片启动时,我可以设法捕捉到像 system parameter error 这样的消息,然后芯片没有启动到 nodemcu 映像。当我检查引脚 GPIO0 时,电压读数约为 1.9v。此引脚上有一个 10K 的外部上拉电阻。由于电压读数如此,esp 无法启动到 nodemcu 映像。当我通过短接上拉电阻将此引脚强制为 3.3v 时,它会启动到 nodemcu,但会出现一些错误(我会尝试捕捉它们)。

所以问题是,我做错了什么?

编辑#1:

这是芯片的输出:

 ets Jan  8 2013,rst cause:2, boot mode:(3,0)

load 0x40100000, len 30288, room 16
tail 0
chksum 0xa5
load 0x3ffe8000, len 2268, room 8
tail 4
chksum 0x3f
load 0x3ffe88dc, len 8, room 4
tail 4
chksum 0xca
csum 0xca
system param error
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff .... goes on for 100 meters.

编辑#2:

我尝试将 "factory defaults" 加载到 SDK v1.5 中定义的芯片

Flash size 32Mbit-C1:       1024KB+1024KB
boot_v1.2+.bin              0x00000
user1.2048.new.5.bin        0x01000
esp_init_data_default.bin   0x3fc000 (optional)
blank.bin                   0xfe000 & 0x3fe000

然后芯片开始正常工作。我尝试了一些 AT 命令,得到了预期的答案等等......然后我加载了 nodemcu 图像。它也按预期运行良好。然后是棘手的部分:这次我从 SDK1.5 中取出 esp_init_data_default.bin 并将 107th 字节更改为 0x21 (33 DEC)由十六进制编辑器。然后将 esp_init_data_default.binblank.bin 文件刷入芯片。重新启动并检查 adc 读取的内容。不过,我得到了一些似是而非的结果。看来芯片正常了。

这不是一个确定的答案,因为涉及到硬件,但它可能仍然有用(评论太长了)。

所以,首先要尝试使用允许明确设置闪光灯大小的闪光灯。我不知道 Espressif 工具,但 NodeMCU 社区中的许多工具都很漂亮 happy with esptool.py

esptool.py --port <USB-port-with-ESP8266> write_flash -fm dio -fs 32m 0x00000 <nodemcu-firmware>.bin

在确认这有效(即启动 w/o 错误)并且闪存大小和堆大小看起来正常之前,不要尝试修改固件。

接下来,如果您使用来自 dev 分支的最新 NodeMCU 固件,您可以跳过 byte-107-dance,因为 you can set it in Lua.

adc.force_init_mode(adc.INIT_ADC)
-- now reboot