AT FAQ¶
AT 固件¶
我的模组没有官方发布的固件,如何获取适用的固件?¶
如果 AT 固件 章节中没有发布相关固件,您可考虑以下选择:
使用相同硬件配置的模组的固件(点击 ESP-AT 固件差异。
为你的模组 创建出厂参数二进制文件 并 自行编译固件。
如何获取 AT 固件源码?¶
ESP-AT 固件部分开源,开源仓库参考 esp-at。
官网上放置的 AT 固件如何下载?¶
烧录工具请下载 Flash 下载工具。
烧录地址请参考 AT 下载指南。
如何整合 ESP-AT 编译出来的所有 bin 文件?¶
可以使用 Flash 下载工具 的 combine 按钮进行整合。
新购买的 ESP32-WROVE-E 模组上电后,串口打印错误 “flash read err,1000” 是什么原因?该模组如何使用 AT 命令?¶
模组出厂 AT 固件是否支持流控?¶
该模组支持硬件流控,但是不支持软件流控。
对于是否开启硬件流控,您可以通过串口命令 AT+UART_CUR 或者 AT+UART_DEF 进行修改。
新客户使用 ESP8266 NONOS AT 固件,如何建议客户切换到 ESP8266 RTOS AT 固件?¶
NONOS 版本 AT 固件属于老版本的固件,我们推荐使用 RTOS 版本 AT 版本,目前这个是我们主推的版本。
RTOS 和 NONOS 逻辑有很大的差异,并且 RTOS 上支持了更多的功能,fix 掉了更多的问题,这些问题有可能在 NONOS 版本 AT 上出现,以后 RTOS AT 也是我们重点维护的版本,会更加及时的修复问题和不断的添加新的功能。
请下载 RTOS 版本的 AT 固件。
AT 命令与响应¶
AT 提示 busy 是什么原因?¶
提示 “busy” 表示正在处理前⼀条命令,⽆法响应当前输⼊。因为 AT 命令的处理是线性的,只有处理完前⼀条命令后,才能接收下⼀条命令。
当有多余的不可⻅字符输⼊时,系统也会提示 “busy” 或 “ERROR”,因为任何串⼝的输⼊,均被认为是命令输⼊。
串⼝输⼊ AT+GMR (换⾏符 CR LF) (空格符),由于 AT+GMR (换⾏符 CR LF) 已经是⼀条完整的 AT 命令了,系统会执⾏该命令。此时如果系统尚未完成 AT+GMR 操作,就收到了后⾯的空格符,将被认为是新的命令输⼊,系统提示 “busy”。但如果是系统已经完成了 AT+GMR 操作,再收到后⾯的空格符,空格符将被认为是⼀条错误的命令,系统提示 “ERROR”。
MCU 发送 AT+CIPSEND 后,收到 busy p.. 响应,MCU 需要重新发送数据。因为 busy p.. 代表上一条命令正在执行,当前输入无效。建议等 AT 上一条命令响应后,MCU 再重新发送新命令。
AT 固件,上电后发送第一个命令总是会返回下面的信息,为什么?¶
ERR CODE:0x010b0000 busy p...
此信息代表的是”正在处理上一条命令”。
一般情况下只会显示”busy p…”,显示 ERR CODE 是因为打开了错误代码提示。
如果是上电的第一条命令就返回了这个错误码信息,可能的原因是:这条命令后面多跟了换行符/空格/其他符号,或者连续发送了两个或多个 AT 命令。
在不同模组上的默认 AT 固件支持哪些命令,以及哪些命令从哪个版本开始支持?¶
如果您想了解 ESP-AT 在不同模组上默认固件都支持哪些命令,您可以参考 ESP-AT 固件差异 以及 ESP-AT 固件差异。
如果您想查找某个命令从哪个版本开始支持,以及各个版本上修复了哪些问题,您可以参考 release notes。
主 MCU 给 ESP32 设备(下载的是 AT V2.1.0.0 版本的固件)发 AT 命令无返回,是什么原因?¶
当主 MCU 给 ESP32 设备发送 AT 命令后需要添加结束符号,在程序中的写法为:”ATrn”。可参见 检查 AT 固件是否烧录成功。
ESP-AT 命令是否支持 ESP-WIFI-MESH?¶
ESP-AT 当前不支持 ESP-WIFI-MESH。
AT 是否支持 websocket 命令?¶
默认命令不支持 websocket 命令。
可通过自定义命令实现,代码参考 websocket,以及 添加自定义 AT 命令。
是否有 AT 命令连接阿里云以及腾讯云示例?¶
若使用 通用 AT 固件,可参考以下示例:
阿里云应用参考:AT+MQTT aliyun。
腾讯云应用参考:AT+MQTT QCloud。
若使用 QCloud AT 固件,请采用 腾讯云 AT 命令 连接至腾讯云。
AT 命令是否可以设置低功耗蓝牙发射功率?¶
可以。ESP32 和 ESP32-C3 的 Wi-Fi 和 Bluetooth LE 共用一根天线,可使用 AT+RFPOWER 命令设置。
可以通过 AT 命令将 ESP32-WROOM-32 模块设置为 HID 键盘模式吗?¶
可以的,请参考 Bluetooth LE AT 命令集。下面这个链接是简单的演示链接:https://pan.baidu.com/s/1TgNE2DpJtVARGqB-jb8UIQ 提取码:f6hu。
如何支持那些默认固件不支持但可以在配置和编译 ESP-AT 工程后支持的命令?¶
例如在 ESP32-WROOM 系列支持蓝牙功能,需编译时在 menuconfig 中开启蓝牙功能
./build.py menuconfig
>Component config
>AT
>[*]AT bt command support
。
AT 命令中特殊字符如何处理?¶
可以参考 AT 命令分类 章节中的转义字符语法。
AT 命令中串口波特率是否可以修改?(默认:115200)¶
AT 命令串口的波特率是可以修改的。
第一种方法,您可以通过串口命令 AT+UART_CUR 或 AT+UART_DEF。
第二种方法,您可以重新编译 AT 固件,编译介绍: 如何编译 AT 工程 与 修改 UART 波特率配置。
ESP32 使用 AT 指令进入透传模式,如果连接的热点断开,ESP32 能否给出相应的提示信息?¶
可以通过命令 AT+SYSMSG 进行配置,可设置 AT+SYSMSG=4,如果连接的热点断开,串口会上报 “WIFI DISCONNECTrn”。
需要注意的是,该命令在 AT v2.1.0 之后添加,v2.1.0 及之前的版本无法使用该命令。
ADV 广播参数超过 32 字节之后应该如何设置?¶
AT+BLEADVDATA 命令支持 adv 广播参数最大为 32 字节,如果需要设置更长的广播参数,请调用 AT+BLESCANRSPDATA 命令来设置。
ESP8266 从 NONOS AT 切换到 RTOS AT (v2.0.0.0 以及以上版本),烧录成功后,AT 固件启动没有收到 ready 字样?¶
ESP8266 RTOS 版本 AT 通信管脚做了修改,更换为 GPIO13 和 GPIO15 管脚了。
硬件¶
在不同模组上的 AT 固件要求芯片 flash 多大?¶
对于 ESP32 以及 ESP32-C3 系列模组,您可以参考 ESP-AT 固件差异。
对于 ESP8266 系列模组,您可以参考 How to understand the differences of each type of module。
ESP32 AT 如何从 UART0 口通信?¶
默认 AT 固件是通过 UART1 口通信的,如果要从 UART0 通信,需要下载并编译 ESP-AT。
参考 编译 ESP-AT 工程 搭建好编译环境;
修改 factory_param_data.csv 表中对应模组的 UART 管脚,将 uart_tx_pin 修改为 GPIO1,uart_tx_pin 修改为 GPIO3;
调整配置:./build.py menuconfig > Component config > Common ESP-related > UART for console output(Custom) > Uart peripheral to use for console output(0-1)(UART1) > (1)UART TX on GPIO# (NEW) > (3)UART TX on GPIO# (NEW)。
AT 固件如何查看 error log?¶
ESP32 在 download port 查看 error log,默认 UART0 为 GPIO1、GPIO3。
ESP32-C3 在 download port 查看 error log,默认 UART0 为 GPIO21、GPIO20。
ESP8266 在 GPIO2 查看 error log,GPIO2 是 UART1 TX。
详情可以参阅 硬件连接。
AT 在 ESP32 模组上的 UART1 通信管脚与 ESP32 模组的 datasheet 默认 UART1 管脚不一致?¶
ESP32 支持 IO 矩阵变换,在编译 ESP-AT 的时候,可以在 menuconfig 中通过软件配置修改 UART1 的管脚配置,所以就会出现和 datasheet 管脚不一致的情况。
管脚详情可以参阅 factory_param_data.csv。
性能¶
AT Wi-Fi 连接耗时多少?¶
在办公室场景下,AT Wi-Fi 连接耗时实测为 5 秒。但在实际使用中,Wi-Fi 连接时间取决于路由器性能,⽹络环境,模块天线性能等多个条件。
可以通过 AT+CWJAP 的 <jap_timeout> 参数,来设置最大超时时间。
ESP-AT 固件中 TCP 发送窗口大小是否可以修改?¶
TCP 发送窗口当前无法通过命令修改,需要配置和编译 ESP-AT 工程生成新的固件。
可以重新配置 menuconfig 参数,
Component config
>LWIP
>TCP
>Default send buffer size
。
ESP32 AT 吞吐量如何测试及优化?¶
AT 吞吐量测试的影响因素较多,建议使⽤ esp-idf 中的 iperf 示例进行测试(用 AT 测试时,请使用透传方式,并将数据量调整为 1460 字节连续发送)。
若测试速率不满⾜需求,您可以参考 如何提高 ESP-AT 吞吐性能 来提高速率。
ESP32 AT 默认固件 Bluetooth LE UART 透传的最大传输率是?¶
办公室开放环境下,串口波特率为 2000000 时,ESP-AT Bluetooth 平均传输速率为 0.56 Mbps,ESP-AT Bluetooth LE 平均传输速率为 0.101 Mbps。
其他¶
乐鑫芯片可以通过哪些接口来传输 AT 命令?¶
ESP8266 只支持 UART 接口通信。ESP32 支持 SDIO,SPI,UART 接口通信。ESP32-C3 支持 UART,SPI 接口通信。
AT 默认固件是使用 UART 接口来传输。用户如果需要使用 SDIO 或者 SPI 接口进行通信,可以基于 ESP-AT 配置编译,详情请见 编译和开发。
更多资料请参考 使用 AT SDIO 接口 ,使用 AT SPI 接口 ,或 使用 AT 套接字接口 。
ESP32 AT 以太网功能如何使用?¶
AT 默认固件是不开启以太网功能的,您如果想要开启以太网功能,您可以参考 如何启用 ESP-AT 以太网功能。
ESP-AT 如何进行 BQB 认证?¶
可参考 ESP32 更新多项 BQB 蓝牙认证。
ESP32 AT 如何指定 TLS 协议版本?¶
编译 ESP-AT 工程时,可以在 ./build.py menuconfig -> Component config -> mbedTLS 目录下,可以将不需要的版本关闭使能。
AT 固件如何修改 TCP 连接数?¶
目前 AT 默认固件的 TCP 最大连接数为 5。
ESP32 AT 最大支持 16 个 TCP 连接,可以在 menuconfig 中进行配置,配置方法如下:
./build.py menuconfig—> Component config—> AT—> (16)AT socket maximum connection number
./build.py menuconfig—> LWIP—> (16)Max number of open sockets
ESP8266 AT 最大支持 5 个 TCP 连接,可以在 menuconfig 中进行配置,配置方法如下:
./build.py menuconfig—> Component config—> AT—> (5)AT socket maximum connection number
./build.py menuconfig—> LWIP—> (10)Max number of open sockets