【问题标题】:Cannot Get GPIO0 High after programming RF settings ESP-12-Q编程 RF 设置 ESP-12-Q 后无法将 GPIO0 设为高电平
【发布时间】:2016-05-31 10:37:55
【问题描述】:

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

  • 为了消除电源问题,我使用 10 安培实验室电源(当然是 3.3 伏)为模块供电。
  • 在 esp 和计算机之间有一个 3.3v ftdi 模块。
  • 我正在使用来自 Espressif 的官方 flash 下载工具 v2.4。
  • 正如所言,nodemcu 映像到处都是 0x00000

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

  • 打开esp flash下载工具2.4
  • 转到射频初始化配置页面
  • 按默认按钮
  • 将 CrystalFreq 更改为 26MHz(因为芯片以 74880 波特率启动)
  • 将 TOUT 引脚配置更改为 TOUT_ADC_EN 并将电压更改为 3.3v
  • 别无其他改变
  • 按 GenInitBin
  • 转到 Flash 下载页面
  • 选择 esp_init_data_setting.bin 文件刷入地址:0x3FC00
  • 按开始。一切似乎都很好。

然后恐怖开始了:当芯片启动时,我可以设法捕捉到像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:

我尝试按照 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 读取的内容。不过,我得到了一些似是而非的结果。好像芯片正常了。

【问题讨论】:

    标签: esp8266 nodemcu


    【解决方案1】:

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

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

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

    在您确认它可以正常工作(即启动无错误)并且闪存大小和堆大小看起来正常之前,请勿尝试修改固件。

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

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

    【讨论】:

    • 感谢您的回答。我现在正在深入检查这个问题。我会将我的发现添加为编辑。
    • 我会接受你的回答,因为这个问题没有符合条件的答案。因为不同 h/w (esp12E) 的进一步测试显示出不同的特性。您的回答显示了经过验证的闪存芯片方法。
    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多