AT FAQ

[English]

AT 文档

如何选择正确的 AT 文档版本?

请根据实际使用的 AT 固件版本,选择对应芯片平台和文档版本;不同固件版本之间可能存在功能和行为差异。

  • 对于 官方发布版固件,可直接通过 AT+USERDOCS? 命令获取对应文档链接,无需额外确认版本信息。

  • 对于非官方发布版固件,请先确认以下信息,再选择与之相匹配的文档版本:

    • 所用 AT 固件对应的芯片平台(如 ESP32、ESP32-C3 等)

    • AT 固件版本号(可通过 AT+GMR 命令查看 AT 核心库的版本号)

    选择 AT 文档目标和版本

AT 固件

我的模组没有官方发布的固件,如何获取适用的固件?

如果 AT 固件 中没有相关固件,可:

如何获取 AT 固件源码?

esp-at 项目以源代码和预编译库的组合形式在此仓库中分发。预编译的核心库(位于 esp-at/components/at/lib/ 目录下)是闭源的,无开源计划。

官网上放置的 AT 固件如何下载?

使用 Flash 下载工具 烧录,详细指导参阅 Flash 下载工具用户指南。烧录地址参考 AT 下载指南

如何整合 ESP-AT 编译出来的所有 bin 文件?

无需手动整合。发布的固件和编译生成的固件已自带合成好的 2MB/4MB bin 文件,位于 build/factory 目录下。

新购买的 ESP 系列模组上电后,串口打印错误 “flash read err” 是什么原因?该模组如何使用 AT 命令?

ESP 系列模组出厂时 Flash 中未烧录 ESP-AT 固件,上电后会提示 “flash read err” 错误。如需使用 AT 命令功能,请参考 AT 下载指南

模组出厂 AT 固件是否支持流控?

支持硬件流控,不支持软件流控。可通过 AT+UART_CURAT+UART_DEF 配置硬件流控。硬件接线参考 硬件连接

AT 命令与响应

AT 提示 busy p… 是什么原因?

提示 “busy p…” 表示正在处理前一条命令,无法响应当前输入。AT 命令处理是线性的,必须等前一条命令完成后才能接收下一条。

当有多余的不可见字符输入时(如命令后的空格),系统也会提示 “busy p…” 或 “ERROR”,因为任何串口输入均被视为命令输入。

如果 MCU 发送 AT+CIPSEND 后收到 busy p… 响应,表示上一条命令正在执行,当前输入无效。建议等待上一条命令响应完成后再发送新命令。

AT 固件,上电后发送第一个命令总是会返回下面的信息,为什么?

ERR CODE:0x010b0000
busy p...

表示”正在处理上一条命令”。一般只显示 “busy p…”,显示 ERR CODE 是因为打开了错误代码提示。

如果上电后的第一条命令就返回此错误,可能原因:

  • 命令后多跟了换行符/空格/其他符号

  • 连续发送了多个 AT 命令

在不同模组上的默认 AT 固件支持哪些命令,以及哪些命令从哪个版本开始支持?

各模组默认固件支持的命令:参考 ESP-AT 固件差异

命令版本支持和修复问题:参考 release notes

MCU 给 ESP32-S2 设备发 AT 命令无返回,是什么原因?

发送 AT 命令后需添加结束符号,程序中写法为:”AT\r\n”。参考 检查 AT 固件是否烧录成功

AT 命令中特殊字符如何处理?

可以参考 AT 命令分类 章节中的转义字符语法。

AT 命令中串口波特率是否可以修改?(默认:115200)

可以修改,方法:

如何解决 TCP/SSL 数据传输时的丢失问题?

若在未启用硬件流控时出现数据丢失,建议先启用硬件流控(AT+UART_CURAT+UART_DEF)验证是否由此导致。若启用流控后问题仍存在,请参考 调试 TCP 连接的数据发送和接收过程 进一步排查;如确认为 AT 引发的问题,请在 esp-at/issues 提交 issue。

ESP32-S2 使用 AT 命令进入透传模式,如果连接的热点断开,ESP32-S2 能否给出相应的提示信息?

可通过 AT+SYSMSG 配置,设置 AT+SYSMSG=4,热点断开时串口会上报 WIFI DISCONNECT\\r\\n

注意:该命令在 AT v2.1.0.0 之后添加,v2.1.0.0 及之前的版本无法使用。

Wi-Fi 为什么断开(WIFI DISCONNECT)?

可在 AT 日志端口 查看断开原因,通常打印 wifi disconnected, rc:<reason_code>。 原因代码说明见 Wi-Fi Reason Code

通用固件可能无法提供详细原因。若需获取具体信息,需在代码中注册 Wi-Fi disconnect 事件并输出原因代码。

Wi-Fi 常见的兼容性问题有哪些?

  • AMPDU 兼容性问题。

    • 如果路由器不支持 AMPDU,那么 ESP32-S2 会在和路由器交互时,自动关闭 AMPDU 功能。

    • 如果路由器支持 AMPDU,但是路由器和 ESP32-S2 之间的 AMPDU 传输存在兼容性问题,那么建议关闭路由器的 AMPDU 功能或者 ESP32-S2 的 AMPDU 功能。如果您要禁用 ESP32-S2 的 AMPDU 功能,请自行 编译 ESP-AT 工程,在第五步配置工程里选择:

      • 禁用 Component config > Wi-Fi > WiFi AMPDU TX

      • 禁用 Component config > Wi-Fi > WiFi AMPDU RX

  • phy mode 兼容性问题。如果路由器和 ESP32-S2 之间的 phy mode 存在兼容性问题,那么建议切换路由器的 phy mode 或者 ESP32-S2 的 phy mode。如果您要切换 ESP32-S2 的 phy mode,请参考 AT+CWSTAPROTO 命令。

AT 命令是否支持 ESP-WIFI-MESH?

AT 当前不支持 ESP-WIFI-MESH。

是否有 AT 命令连接阿里云以及腾讯云示例?

硬件

在不同模组上的 AT 固件要求芯片 flash 多大?

参考 ESP-AT 固件差异

AT 固件如何查看 error log?

通常从 AT 日志端口 查看 error log。

AT 在 ESP32-S2 模组上的 UART1 通信管脚与 ESP32-S2 模组的 datasheet 默认 UART1 管脚不一致?

ESP32-S2 支持 IO 矩阵变换,编译 ESP-AT 时可在 menuconfig 中配置 UART1 管脚,因此可能与 datasheet 默认管脚不一致。 管脚详情参考 factory_param_data.csv

性能

AT Wi-Fi 连接耗时多少?

办公室场景下实测约 5 秒。实际耗时取决于路由器性能、网络环境、模块天线性能等因素。 可通过 AT+CWJAP<jap_timeout> 参数设置最大超时时间。

AT 固件中 TCP 发送窗口大小是否可以修改?

无法通过命令修改,需重新编译固件。在 menuconfig 中配置:Component config > LWIP > TCP > Default send buffer size

AT 吞吐量如何测试及优化?

建议使用 esp-idf 中的 iperf 示例进行测试(AT 测试时请使用透传方式,并将数据量调整为 1460 字节连续发送)。 若速率不满足需求,参考 如何提高 ESP-AT 吞吐性能 进行优化。

如何修改 AT 默认 TCP 数据段最大重传次数?

默认重传最大次数为 6 次,取值范围 [3-12]。重新配置方法:

其他

乐鑫芯片可以通过哪些接口来传输 AT 命令?

AT 如何使能调试日志?

参考 如何启用更多 AT 调试日志 文档。

如何修改 AT 固件首次启动时的默认 Wi-Fi 模式?

修改源码,在 esp_at_ready_before() 函数中调用 esp_wifi_set_mode() 设置 Wi-Fi 模式,例如 esp_wifi_set_mode(WIFI_MODE_STA)

AT 指令如何实现 HTTP 断点续传功能?

两种方法:

如何从 HTTP 服务器下载文件并存储到 FATFS,或将 FATFS 文件系统中的文件上传到 HTTP 服务器?

参考 GitHub 示例: