【开发环境准备】更新板载ESP8285固件

2021-05-048314
AI 快速预览详细 收起
本文介绍了如何在MaixDock和MaixGo开发板上更新ESP8285固件。首先,简要介绍了MaixDock和MaixGo开发板的基本信息。接着,提供了详细的步骤,包括使用flash_download_tools或esp_tool工具进行固件更新。最后,通过MaixPy示例代码测试更新后的固件是否正常工作。关键词:更新ESP8285固件, MaixDock, MaixGo, flash_download_tools, esp_tool, MaixPy示例

更新�载 ESP8285 固件

1. 简介:

目� MaixPy 系列采用 M1W 模�的作为核心模�的开��有: MaixDock(M1W), MaixGo

通常情况下我们�需�更新模�内部 WIFI SOC ESP8285 的固件,但是如�使用过程中存在 bug,以�有新版本的固件�布时我们就�以更新固件

MaixDock�MaixGo 使用的 M1W 模�中的 ESP8285 默认烧录的是 AT 固件

2. 验� ESP8285 是�能够正常工作

  • MaixPy 验è¯� ESP8285 是å�¦æ­£å¸¸å·¥ä½œä¾‹ç¨‹

查看文本末尾例程

  • 外æ�¥ USB 转串å�£æ¨¡å�—测试

    使用 USB 转串�模�,按照下表��之�上电

M1W USB 模� 说�
M1W GND GND 共地
K210 (IO6)/ESP8285 TX RX -
K210 (IO7)/ESP8285 RX TX -
k210 RST(上电之��地,全过程拉� RST) GND -

上电之å��æ�¿å­�会在串å�£è¾“出(这里使用 XCOM, 波特ç�‡ 115200) æ�¥éªŒè¯� ESP8285 是å�¦æ­£å¸¸å�¯åЍ  image-20200805175207487

3. AT 指令集

ESP8285 å’Œ ESP8266 为å�Œä¸€ç³»åˆ—产å“�,使用å�Œä¸€å¥— AT 指令集 ESP8285/ESP8266/ESP32 最新 AT指令集  https://github.com/espressif/esp-at/blob/v2.0.0.0_esp8266/docs/ESP_AT_Commands_Set.md

4. 更新 ESP8285 固件步骤

在烧录 ESP8285 固件之�,先了解下 ESP8285 烧录��:

4.1. ESP8285 固件烧录��

ESP8285 在上电时,会判断 boot stapping 管脚的状�,并决定�动(boot)模�, 如:

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

其中打�的 boot mode 的第一�数字(3)代表当�的 boot 模�。 Boot 模�由 strapping 管脚的 3 �值 [GPIO15, GPIO0, GPIO2] 共�决定。如下表所 示:

Strapping 管脚的 3 �值/[GPIO15, GPIO0, GPIO2] Boot 模�
7 / [1, 1, 1] SDIO HighSpeed V2 IO
6 / [1, 1, 0] SDIO LowSpeed V1 IO
5 / [1, 0, 1] SDIO HighSpeed V1 IO
4 / [1, 0, 0] SDIO LowSpeed V2 IO
3 / [0, 1, 1] Flash Boot
2 / [0, 1, 0] Jump Boot
1 / [0, 0, 1] UART Boot
0 / [0, 0, 0] Remapping

ESP8285 进入��模�的 IO 电平请看如下表:

模� CH_PD(EN) RST GPIO15 GPIO0 GPIO2 TXD0
UART 下载模� 高 高 � � 高 高
Flash �行模� 高 高 � 高 高 高
Chip 测试模� - - - - - �

� ESP8285 进入 UART 下载模�,�动信� mode 第一�应该为 mode:(1, X),如下:

ets Jan 8 2013,rst cause:1, boot mode:(1,1)

而以 MaixDock 为例,�以看到 MaixDock ��图如下:

4.2. 准备

这里以 MaixDock(M1W), Windows 10 系统为例

  • 硬件: MaixDock, USB Type-C æ•°æ�®çº¿

  • 软件:

  • ESP 固件更新工具:ESP8285  flash_download_tools

  • ESP8285 AT 固件:

4.3. Windows 使用 flash_download_tools 更新 ES8285(这里以 MaixDock 为例):

  1. 按照下��置,�� MaixDock,

    将 USB 转串�模�和ESP8285��,��方���已�介� 上电� 需�将 GPIO0 拉�,�将天线�左上角的触点�地,进入 UART 下载模�。

  1. 打开  flash_download_tools

  2. 下载  MaixDock ESP8285 固件

  3. 选择 ESP8285 串�(一般都是串��比较大的)

  4. 设置下载选项:

    如图�置相应选项, 注�波特�一定�设置为 115200

  5. 点击  Start  æ›´æ–°å›ºä»¶ï¼Œå¹¶ç­‰å¾…完æˆ�æ›´æ–°

  6. 验�更新是�完�

    • 使用 XCOM 波特ç�‡ 115200, 打开 ESP8285 串å�£ï¼Œè¾“出  AT\r\n,如图æ��示  OK  å�³åˆ·å…¥æˆ�功  esp8285_at.png

4.4. LINUX 使用 esp_tool 更新 ES8285(这里以 MaixDock 为例):

  1. 按照下��置,�� MaixDock,

  2. 安装 esptool

     pip3 install esptool
    
  3. 下载  MaixDock ESP8285 固件

     ls /dev/ttyUSB* # 查看 USB 串�
     esptool --port /dev/ttyUSB0 write_flash 0x0 ESP8285-AT-V1.7.4_8Mbit_40Mhz.bin # 烧录固件
    
  4. 验�更新是�完�

    使用 XCOM 波特ç�‡ 115200, 打开 ESP8285 串å�£ï¼Œè¾“出  AT\r\n,如图æ��示  OK  å�³åˆ·å…¥æˆ�功  esp8285_at.png

4.5. MaixPy 例程测试:

import network, time
from machine import UART
from Maix import GPIO
from fpioa_manager import fm

# En SEP8285 rst
#fm.register(8, fm.fpioa.GPIOHS0, force=True)
#wifi_en=GPIO(GPIO.GPIOHS0, GPIO.OUT)
#wifi_en.value(1)
# En SEP8285 rst
fm.register(0, fm.fpioa.GPIOHS0, force=True)
wifi_io15=GPIO(GPIO.GPIOHS0, GPIO.OUT)
wifi_io15.value(0)

fm.register(8, fm.fpioa.GPIOHS1, force=True)
wifi_en=GPIO(GPIO.GPIOHS1, GPIO.OUT)
wifi_en.value(1)

# for new MaixGO board, if not, remove it
#fm.register(0, fm.fpioa.GPIOHS1, force=True)
#wifi_io15_en=GPIO(GPIO.GPIOHS1, GPIO.OUT)
#wifi_io15_en.value(0)

fm.register(6, fm.fpioa.UART2_RX, force=True)
fm.register(7, fm.fpioa.UART2_TX, force=True)

uart = UART(UART.UART2,115200,timeout=1000, read_buf_len=4096)

def wifi_enable(en):
    global wifi_en
    wifi_en.value(en)

def wifi_deal_ap_info(info):
    res = []
    for ap_str in info:
        ap_str = ap_str.split(",")
        info_one = []
        for node in ap_str:
            if node.startswith('"'):
                info_one.append(node[1:-1])
            else:
                info_one.append(int(node))
        res.append(info_one)
    return res

#wifi_enable(0)
time.sleep(2)
nic = network.ESP8285(uart)

ap_info = nic.scan()
ap_info = wifi_deal_ap_info(ap_info)

ap_info.sort(key=lambda x:x[2], reverse=True) # sort by rssi
for ap in ap_info:
    print("SSID:{:^20}, RSSI:{:>5} , MAC:{:^20}".format(ap[1], ap[2], ap[3]) )

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
hwhsiww
hwhsiww
楼主,esp8285可以使用spi通信吗
hwhsiww
hwhsiww回复hwhsiww
在dock上使用
Foruture
Foruture
请问个问题,我的M1W WIFI功能不能用,通过串口打印发现ESP8285开机信息里面没有ready,而是如下信息,请问可能是怎么回事儿?
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : DOUT
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
[10:48:49.676]收←◆rf[112] : 03
rf[113] : 00
rf[114] : 01
[10:48:49.766]收←◆
SDK
蚇O
[10:48:51.177]收←◆鉓
)ヂ薆滧
pATAq
pATAq
写的很好,感谢分享
pATAq
pATAq
写的很好,感谢分享
- 没有更多了 -