ESP8285调试记录

  1. 引言
    1.1. 目的
    ESP8285模组ESP-IDF(Espressif IoT Development Framework)进行软件开发。包括编译环境搭建,客制化AT,API开发,调试下载等。

  2. ESP-IDF介绍
    2.1. 概述
    ESP8285和ESP8266的代码是兼容的,8285是内置FlashSPI Mode(设置为DOUT模式),8266需要外挂Flash,两款芯片内置超低功耗 Tensilica L106 32 位 RISC 处理器,CPU 时钟速度最高可达 160 MHz,支持实时操作系统 (RTOS) 和 Wi-Fi 协议栈,可将高达 80% 的处理能力留给应用编程和开发。

2.2. 开发环境
开发工具:

编译器:
Linux 64位系统:虚拟机下载地址(供 64 位 windows 虚拟机客户使用):
http://download.espressif.com/esp_share/env/ubuntu1804.ova

交叉编译工具链:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz

下载工具:flash_download_tools_v3.6.8.exe

工程获取
乐鑫将代码及文档存放在在Github上,可用Git工具从以下地址获取获取。
https://github.com/espressif/esp-at

3.1资源需求
 RAM:不小于4Kbytes.
 ROM:不小于128Kbytes.
 堆栈:不小于2Kbytes。
 uart:波特率:115200;数据位:8;停止位:1;校验位:无;流控: 无
 UART_RX:串口数据接收
 UART_TX:串口数据发送
 驱动依赖:MCU使用串口与ESP8285进行通讯,因此WIFI模块的驱动部分需要依赖系统的串口设备。

3.2 功能需求
 实现ESP8285相关的AT指令;提供进行热点连接、扫描、TCP及TCP+SSL的数据通讯功能
 AT指令尽量采用异步的处理方式,方便UI操作。

  1. 设计原理
    模块ESP8285
    RAM:128KB
    ROM: 16Mbit内置SPI Flash
    16MHz Tensilica L106 32 位 RISC 处理器

4.1模块框图
 IO:如下表
功能模块名称 引脚描述 资源需求 G500脚位 IO口模式
ESP8285模块 复位(唤醒深度休眠) WIFI_RST GPIO3 I
串口接收 UART_RX G500_TXD I
串口发送 UART_TX G500_RXD O
下载控制 WIFI_FLASH_BOOT GPIO1 I
电源 WIFI_EN 3.3V电源 I

 引脚说明:
 UART:波特率:115200;数据位:8;停止位:1;校验位:无;流控: 无
 WIFI_RST:wifi进入deep_sleep模式,通过拉低reset脚再拉高唤醒模块
 CHIP_EN: 连接3.3V电源,上电复位

4.3软件框图
软件层次上,将MCU WIFI驱动分成了3层,各层的作用为:
 系统设备层,MCU与ESP8285使用串口通讯,故需要使用系统的串口设备
 外设驱动层,实现对ESP8285的驱动,包括:接收AT并解析,打包AT形式的数据并发送等功能
 外设设备层,将驱动的一些细节进行封装,方便上层调用

AT指令交互:

  1. MCU WIFI设备层的发送接口被调用后,待发送数据被放到发送缓冲中;
  2. MCU WIFI驱动层从缓冲中取出数据,打包成ESP AT指令格式,调用串口设备发送接口,将数据通过串口发出
  3. ESP8285的AT task监听串口数据,解析有效AT指令,区分是客制化AT或ESP平台自带AT

4.4软件实现
平台指令集地址https://github.com/espressif/esp-at/blob/master/docs/zh_CN/get-started/ESP_AT_Commands_Set.md

API文档(部分可能未更新):
https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/api-guides/index.html

SSID编码格式
模组扫描到的中文SSID可能是GBK,也可能是UTF-8,转码操作在ESP8285端完成,MCU发过来的SSID默认编码格式GBK(如果是UTF-8,先转成GBK,目前传过来的统一是GBK)。连接热点的时候先用MCU发送来的SSID在之前的扫描列表中进行匹配(先进行扫描再进行连接,如果扫描到则保存到全局数组中,最大30个),未匹配到,则转成相反的编码(UTF-8)扫描,扫描不到则直接用传下来的SSID编码格式连接。
由于热点连接指令目前采用异步的方式,在发送连接指令时热点未打开的情况下,指令执行完返回了OK,模组进入自动连接流程,这时候热点开启,为防止传下来的SSID编码与热点本身的编码不一致,需要在自动连接时交替转码后连接,否则如果编码格式不对,则会导致在没有重新发送连接指令时,模组一直无法连接上此热点的情况。
在这里插入图片描述
SSL证书文件写入
ESP8285目前使用的是wolfSSL,SDK只提供了相关的lib文件,不便于功能扩展,只能使用平台自带的SSL指令,SSL的证书使用和固件一起烧录的方式加载到模组的FLASH当中,如果我们要在使用过程中修改证书,只能通过客制AT指令将保存在FLASH上的证书进行替换。
FLASH上的三个地址位置分别保存了CA、client_crt和client_key三个证书文件,AT指令修改证书的方案需要用到串口的AT模式和数据模式的切换,即在命令模式发送写证书文件的AT,然后进入数据模式,将证书文件的内容传入并保存在Flash的对应位置,保存成功后返回到命令模式。实现方式乐鑫提供了博文地址:https://blog.csdn.net/espressif/article/details/102777084.

  1. 下载及调试
    在linux环境下,可通过make flash命令进行下载(python脚本)。Window下使用flash_download_tools进行下载。下载时使用的串口和AT指令的串口是同一个,ESP8285 共有两组 UART 口,分别为:UART0 和 UART1,其中,UART1 只有TX功能(GPIO2)。所以只能使用 UART0 作为命令输入口. 由于 ESP8285 UART pin 并不能像 ESP32 那样任意映射,只能使用 GPIO15 作为 TX、GPIO13 作为 RX, 或者使用 GPIO1 作为 TX、GPIO3 作为 RX. 默认 LOG UART 为 UART1, TX 为 GPIO2; AT port UART 为 UART0, TX 为 GPIO15, RX 为 GPIO13.

4.1 flash_download_tools
在这里插入图片描述
MCU的Flash不太够,所以需要裁剪ESP8285的bin文件。主要disable掉一些默认的配置。目前我们修改成了一个合适的sdkconfig,每次出版本时,使用这个sdkconfig替换SDK默认的文件即可。
在这里插入图片描述
下载时,首先通过拉高WIFI_FLASH_BOOT脚进入下载模式,然后拉reset脚复位模块,同时上位机发送sync frame,ESP8285收到
指令操作码如下表:
在这里插入图片描述
在这里插入图片描述
在ESP8285 deep sleep模式下,有时reset进入下载,由于flash未唤醒,会造成写flash失败,为了解决此问题,需要操作相关的寄存器release deep power-down

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目分享的是国外开源ESP8285远程串口透传模块设计,附硬件/固件等。该WIFI模块是一个基于mqtt server的wifi远程透传串口模块(包含硬件与固件), 主要的功能为基于因特网(非局域网)的串口透传。serT 硬件设计开源,用户可以自由使用,制作,修改,发布, 遵循MIT协议. serT 固件设计提供二进制文件,用户可以自由使用,生产,反向,但暂不开源。serT 远程串口透传模块电路 PCB 3D截图: 应用模式: serT 支持两个配对使用(传统透传串口模式). 从其中一个设备上发出的串口信号, 会透传到另外一个设备串口的接收, 从而让设备看起来就像导线相连,从而简化了应用的开发. 多个设备配对使用(类似RS485总线模式). 从其中一个设备上发出的串口信号, 会透传到所有的串口(不包括自身)接收端.这种模式类似RS485总线, 这就要求用户在应用协议的实现上, 设备空闲态要处于接收状态,每个时刻只有一个设备在发送数据,否则会出现数据错乱. 单个设备连接其他高级系统. 这相当于将一个串口透传给PC(或者其他高级系统),从而和PC上的应用软件连接, 实现功能. serPrint就是一个在电脑上打印远端serT数据的应用示例, 这个应用可以实现给远程非联网设备记录日志等有用的功能. serT设备需要一个mqtt server服务器, 已经测试eclipse(及 mosquitto搭建的broker), 百度云iot hub, emq搭建的borker, 中移物联等云, 未发现不适配问题. 这些有很多是免费或者限量免费的, 用户使用成本低。 相关资料下载,或者到“相关文件”下载。 视频演示:使用serT模块远程读取MH-Z19二氧化碳模块的数据, mqtt 使用自建的服务器,属于另外一个运行商 https://v.youku.com/v_show/id_XMjUwMTg3NTg1Mg==.html serT 项目链接, 包含硬件, 固件, 3D结构, 文档等: https://github.com/coffeerr2004001/serT serPrint( Java客户端, 用于将serT终端的数据透传显示到主机上 ) https://github.com/coffeerr2004001/serPrint serProg( serT 固件下载烧写客户端) https://github.com/coffeerr2004001/serProg

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值