AT模块 2: 基础 AT 命令(Basic AT Commands)

来自Bouffalo Lab Docs
张良留言 | 贡献2026年1月12日 (一) 01:51的版本 (创建页面,内容为“= Basic AT commands = == 基础 AT 命令概述 == === 指令列表 === {| class="wikitable" ! 命令 ! 描述 |- | <code>AT</code> | 测试 AT 启动 |- | <code>AT+GMR</code> | 查看版本信息 |- | <code>AT+CMD?</code> | 列出当前固件支持的所有 AT 命令和类型 |- | <code>AT+RST</code> | 重启模块 |- | <code>AT+RESTORE</code> | 恢复出厂设置 |- | <code>ATE</code> | 配置 AT 命令回显 |- | <code>AT+SYSRAM?</code> | 查询当前剩…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Basic AT commands

基础 AT 命令概述

指令列表

命令 描述
AT 测试 AT 启动
AT+GMR 查看版本信息
AT+CMD? 列出当前固件支持的所有 AT 命令和类型
AT+RST 重启模块
AT+RESTORE 恢复出厂设置
ATE 配置 AT 命令回显
AT+SYSRAM? 查询当前剩余 Heap 大小和 lwip 剩余 Heap 大小
AT+SYSMSG? 查询/设置系统提示信息
AT+SYSLOG? 启用或禁用 AT 错误代码提示
AT+SYSSTORE? 查询/设置参数存储模式
AT+TEMP? 查询芯片温度
AT+EFUSE-W Efuse 写操作
AT+EFUSE-R Efuse 读操作
AT+EFUSE-CFM Efuse 写确认,将直接写入 Efuse
AT+FLASH-W Flash 写操作
AT+FLASH-R Flash 读操作
AT+FLASH-E Flash 擦除操作
AT+IOPUPD 将 GPIO 引脚初始化为上拉/下拉模式
AT+IOOUT 设置 GPIO 输出高/低电平
AT+IOIN 查询/设置 GPIO 输入模式
AT+IORST 复位 GPIO 的模拟输入模式
AT+PART 获取分区信息
AT+OTASTART 开始 OTA 传输
AT+OTASEND 发送 OTA 数据
AT+OTAFIN OTA 传输完成
AT+FS 文件系统操作
AT+GMAC 查询 efuse 中 3 个槽位的 MAC 地址
AT+PN 查询部件号
AT+VBAT 查询供电引脚的电压值(单位:mV)

基础 AT 命令描述

AT

功能: 测试 AT 启动。

执行命令

命令:

AT

响应:

OK

AT+GMR

功能: 查看版本信息。

执行命令

命令:

AT+GMR

响应:

<AT version info>
<macsw version info>
<phyrf version info>
<bthost version info>
<btblecontroller version info>
<SDK version info>
<compile time>
OK

参数

  • <AT version info>:AT 版本信息
  • <macsw version info>:macsw 组件版本信息
  • <phyrf version info>:phyrf 组件版本信息
  • <bthost version info>:bthost 组件版本信息
  • <btblecontroller version info>:btblecontroller 组件版本信息
  • <SDK version info>:SDK 版本信息
  • <compile time>:编译时间

示例

AT+GMR
AT version:1.0.0.1(Apr 30 2025 11:47:03)
	component_version_macsw_1.6.38
	lib_version_phyrf_00f7ad715
	component_version_btble_1.8.25
	lib_version_btblecontroller_1.6.89
	component_version_sdk_2.0.75
	compile time:Apr 30 2025 11:46:58
OK

AT+RST

功能: 重启模块。

执行命令

命令:

AT+RST

响应:

OK

AT+RESTORE

功能: 恢复出厂设置。

执行命令

命令:

AT+RESTORE

响应:

OK

AT+CMD?

功能: 列出当前固件支持的所有 AT 命令和类型。

查询命令

命令:

AT+CMD?

响应:

+CMD:<index>,<AT command name>,<support test command>,<support query command>,<support set command>,<support execute command>
OK

参数

  • <index>:AT 命令序号
  • <AT command name>:AT 命令名称
  • <support test command>:0 表示不支持,1 表示支持
  • <support query command>:0 表示不支持,1 表示支持
  • <support set command>:0 表示不支持,1 表示支持
  • <support execute command>:0 表示不支持,1 表示支持

示例

AT+CMD?
+CMD:0,"AT",0,0,0,1
+CMD:1,"AT+RST",0,0,0,1
+CMD:2,"AT+GMR",0,0,0,1
+CMH:3,"AT+CMD",0,1,0,0
+CMD:4,"ATE0",0,0,0,1
+CMD:5,"ATE1",0,0,0,1
+CMD:6,"AT+RESTORE",0,0,0,1
+CMD:7,"AT+SLEEP",0,1,1,0
OK

ATE

功能: 配置 AT 命令回显。

执行命令

命令:

ATE0

ATE1

响应:

OK

参数

  • ATE0:关闭回显
  • ATE1:开启回显

AT+SYSRAM?

功能: 查询当前剩余 Heap 大小和 lwip 剩余 Heap 大小。

查询命令

命令:

AT+SYSRAM?

响应:

+SYSRAM:<remaining RAM size>,<lwip heap size>
OK

参数

  • <remaining RAM size>:当前系统剩余 heap 大小,单位:字节
  • <lwip heap size>:当前 lwip 剩余 heap 大小,单位:字节

示例

AT+SYSRAM?
+SYSRAM:148408,84044
OK

AT+SYSMSG?

功能: 查询/设置系统提示信息。

查询命令

功能:

查询当前系统提示信息状态。

命令:

AT+SYSMSG?

响应:

+SYSMSG:<state>
OK

设置命令

命令:

AT+SYSMSG=<state>

响应:

OK

参数

  • <state>
  • Bit0:退出 Wi-Fi Passthrough Mode 时的提示信息
  • 0:退出 Wi-Fi Passthrough Mode 时不打印提示信息
  • 1:退出 Wi-Fi Passthrough Mode 时打印 +QUITT
  • Bit1:连接提示信息类型
  • 0:使用简单提示信息,如 +CIP:XX,CONNECTED
  • 1:使用详细提示信息,如 +LINK_CONN:status_type,link_id,ip_type,terminal_type,remote_ip,remote_port,local_port
  • Bit2:Wi-Fi Passthrough Mode、Bluetooth LE SPP 和 Bluetooth SPP 的连接状态提示信息
  • 0:不打印提示信息
  • 1:当 Wi-Fi、socket、Bluetooth LE 或 Bluetooth 状态改变时打印以下提示信息之一:
- "+CIP:CONNECTED\r\n" 或以 "+LINK_CONN:" 开头的消息
- "+CIP:DISCONNECTED\r\n"
- "+CW:CONNECTING\r\n"
- "+CW:CONNECTED\r\n"
- "+CW:GOTIP\r\n"
- "+CW:ERROR\r\n"
- "+CW:DISCONNECTED\r\n"
- "+CW:SCAN_DONE\r\n"
"+CW:STA_CONNECTED" 开头的消息
"+CW:STA_DISCONNECTED" 开头的消息
"+CW:DIST_STA_IP" 开头的消息
"+CW:SCAN_DONE" 开头的消息
"+BLECONN" 开头的消息
"+BLEDISCONN" 开头的消息

注意事项

  • 如果 AT+SYSSTORE=1,配置更改将保存在 easyflash 区域
  • 如果将 Bit0 设置为 1,退出 Wi-Fi Passthrough Mode 时会提示 "+QUITT"
  • 如果将 Bit1 设置为 1,将影响命令 AT+CIPSTART 和 AT+CIPSERVER 的信息,将提供 "+LINK_CONN:status_type,link_id,ip_type,terminal_type,remote_ip,remote_port,local_port" 而不是 "+CIP:XX,CONNECTED"

示例

// 退出 Wi-Fi 透传模式时不打印提示信息
// 打印详细连接提示信息
// 连接状态改变时不打印提示信息
AT+SYSMSG=2

AT+SYSLOG?

功能: 启用或禁用 AT 错误代码提示和额外的系统日志信息。

查询命令

功能:

查询是否启用了 AT 错误代码提示和额外的系统日志信息。

命令:

AT+SYSLOG?

响应:

+SYSLOG:<status>
OK

设置命令

功能:

启用或禁用 AT 错误代码提示和额外的系统日志信息。

命令:

AT+SYSLOG=<status>

响应:

OK

参数

  • <status>:启用或禁用
  • 0:同时禁用 AT 错误代码提示和额外的系统日志信息
  • 1:同时启用 AT 错误代码提示和额外的系统日志信息

示例

// 启用 AT 错误代码提示
AT+SYSLOG=1
OK
AT+FAKE
ERR CODE:0x01090000
ERROR
// 禁用 AT 错误代码提示
AT+SYSLOG=0
OK
AT+FAKE
// 没有 ERR CODE:0x01090000
ERROR

错误代码是一个 32 位十六进制值,定义如下:

category subcategory extension
bit32 ~ bit24 bit23 ~ bit16 bit15 ~ bit0
  • category:固定值 0x01
  • subcategory:错误类型
错误类型 错误代码 描述
AT_SUB_OK 0x00 OK
AT_SUB_COMMON_ERROR 0x01 保留
AT_SUB_NO_TERMINATOR 0x02 未找到终止符(期望 "\r\n")
AT_SUB_NO_AT 0x03 未找到起始 AT(或输入了 at、At 或 aT)
AT_SUB_PARA_LENGTH_MISMATCH 0x04 参数长度不匹配
AT_SUB_PARA_TYPE_MISMATCH 0x05 参数类型不匹配
AT_SUB_PARA_NUM_MISMATCH 0x06 参数数量不匹配
AT_SUB_PARA_VALUE_INVALID 0x07 参数值超出范围
AT_SUB_PARA_PARSE_FAIL 0x08 解析参数失败
AT_SUB_UNSUPPORT_CMD 0x09 不支持的命令
AT_SUB_CMD_EXEC_FAIL 0x0A 命令执行失败
AT_SUB_CMD_PROCESSING 0x0B 上一个命令正在处理中
AT_SUB_CMD_OP_ERROR 0x0C 命令操作类型错误
AT_SUB_NO_MEMORY 0x0D 内存分配错误
AT_SUB_NO_RESOURCE 0x0E 资源分配错误
AT_SUB_TIMEOUT 0x0F 操作超时
AT_SUB_NOT_ALLOWED 0x10 不允许的操作
AT_SUB_NOT_INIT 0x11 操作未初始化
AT_SUB_IO_ERROR 0x12 设备 IO 错误
AT_SUB_OP_ADDR_ERROR 0x13 操作地址错误
AT_SUB_HANDLE_INVALID 0x14 操作的句柄无效

AT+SYSSTORE?

功能: 查询/设置参数存储模式。

查询命令

功能:

查询 AT 参数存储模式。

命令:

AT+SYSSTORE?

响应:

+SYSSTORE:<store_mode>
OK

设置命令

命令:

AT+SYSSTORE=<store_mode>

响应:

OK

参数

  • <store_mode>
  • 0:命令配置不存储到 Flash
  • 1:命令配置存储到 Flash(默认)

注意

  • 此命令仅影响设置命令。查询命令始终从 RAM 获取。

示例

AT+SYSSTORE=0
AT+CWMODE=1  // 不存储到 Flash
AT+CWJAP="test","1234567890" // 不存储到 Flash
AT+SYSSTORE=1
AT+CWMODE=3  // 存储到 Flash
AT+CWJAP="test","1234567890" // 存储到 Flash

AT+TEMP?

功能: 查询芯片温度。

查询命令

功能:

查询 AT 参数存储模式。

命令:

AT+TEMP?

响应:

+TEMP:<temperature>
OK

参数

  • <temperature>:芯片温度(单位:°C)

AT+EFUSE-W

功能: Efuse 写操作。执行写确认操作后,数据将被写入 Efuse。

设置命令

命令:

AT+EFUSE-W=<nbytes>,<addr>

响应:

OK
>

此响应表示 AT 已准备好接收串口数据。您应该输入数据,当数据长度达到 <nbytes> 值时,数据传输开始。

如果在数据传输期间无法建立连接或连接中断,系统返回:

ERROR

如果数据已成功发送到协议栈(这不意味着数据已发送到对端),系统返回:

SEND OK

参数

  • <nbytes>:要写入的字节数,需要 4 字节对齐。最大:8192 字节
  • <addr>:这是 Efuse 的地址,需要以字符串形式填写

AT+EFUSE-R

功能: Efuse 读操作。

设置命令

功能:

读取指定地址处 Efuse 的内容。

命令:

AT+EFUSE-R=<nbytes>,<addr>,<reload>

响应:

+EFUSE-R:<nbytes>,[data]
OK

==== 注意事项 ===-

  • 在这些参数中,'nbytes' 和 'addr' 是必需输入,其他是可选的
  • 读取的字节数需要 4 字节对齐,最大长度为 8192 字节

示例

AT+EFUSE-R=4,"0x1c"

响应:

+EFUSE-R:<nbytes>,[data]
OK

参数

  • <nbytes>:要读取的字节数
  • <addr>:这是 Efuse 的地址,需要以字符串形式填写
  • <reload>:读操作从 Efuse 地址重新加载
  • 0:表示不重新加载,读取的数据可能来自 Efuse 备份区域
  • 1:表示重新加载

示例

// 读取 Efuse 命令
AT+EFUSE-R=4,"0x1c"
// 响应
+EFUSE-R:1234
OK


// 写入 Efuse 命令
AT+EFUSE-W=4,"0x1c"
// 响应
OK
// 写入数据
aaaa
// 响应
SEND OK
// 读取 Efuse 命令
AT+EFUSE-R=4,"0x1c"
// 响应
+EFUSE-R:4,aaaa
OK
// 读取 Efuse 命令
AT+EFUSE-R=4,"0x1c",1
// 响应
+EFUSE-R:0000
OK

AT+EFUSE-CFM

功能: Efuse 写确认操作。

设置命令

功能:

Efuse 写确认将直接写入 Efuse。

命令:

AT+EFUSE-CFM

响应:

OK

示例

// 写入 Efuse 命令
AT+EFUSE-W=4,"0x1c"
// 响应
OK
// 写入数据
aaaa
// 响应
SEND OK
// 写入 Efuse 确认命令
AT+EFUSE-CFM
// 响应
OK
// 读取 Efuse 命令
AT+EFUSE-R=4,"0x1c"
// 响应
+EFUSE-R:aaaa
OK

AT+FLASH-W

功能: Flash 写操作。

设置命令

命令:

AT+FLASH-W=<nbytes>,<addr>

响应:

OK
>

此响应表示 AT 已准备好接收串口数据。您应该输入数据,当数据长度达到 <nbytes> 值时,数据传输开始。

如果在数据传输期间无法建立连接或连接中断,系统返回:

ERROR

如果数据已成功发送到协议栈(这不意味着数据已发送到对端),系统返回:

SEND OK

参数

  • <nbytes>:要写入的字节数。最大:8192 字节
  • <addr>:这是 Flash 的地址,需要以字符串形式填写

AT+FLASH-R

功能: Flash 读操作。

设置命令

功能:

读取指定地址处 Flash 的内容。

命令:

AT+FLASH-R=<nbytes>,<addr>

响应:

+FLASH-R:[data]
OK

示例

// Flash 读取命令
AT+FLASH-R=4,"0x210000"
// 响应
+FLASH-R:ffff
OK

参数

  • <nbytes>:要读取的字节数
  • <addr>:这是 Flash 的地址,需要以字符串形式填写

AT+FLASH-E

功能: Flash 擦除操作。

设置命令

功能:

擦除指定地址处 Flash 的内容。

命令:

AT+FLASH-E=<nbytes>,<addr>

响应:

OK

示例

// Flash 擦除命令
AT+FLASH-E=4096,"0x210000"
// 响应
OK

参数

  • <nbytes>:要擦除的字节数
  • <addr>:这是 Flash 的地址,需要以字符串形式填写

AT+IOPUPD

功能: 将 GPIO 引脚初始化为上拉/下拉模式。

设置命令

命令:

AT+IOPUPD=<pin>,<state>

响应:

OK

示例

// 初始化 GPIO 命令
AT+IOPUPD=15,1
// 响应
OK

参数

  • <pin>:bl616 的引脚编号
  • <state>:需要初始化为上拉、下拉或浮空
  • 0:浮空
  • 1:上拉
  • 2:下拉

AT+IOOUT

功能: 设置 GPIO 输出高/低电平。

设置命令

命令:

AT+IOOUT=<pin>,<state>

响应:

OK

示例

// 设置 GPIO 命令
AT+IOOUT=15,1
// 响应
OK

参数

  • <pin>:bl616 的引脚编号
  • <state>:GPIO 输出高/低电平
  • 0:低电平
  • 1:高电平

AT+IOIN

功能: 查询/设置 GPIO 输入模式。

设置命令

命令:

AT+IOIN=<pin>,<pull_state>

响应:

OK

查询命令

命令:

AT+IOIN=<pin>?

响应:

+IOIN=<pin>:<state>
OK

示例

// 设置 GPIO 输入命令
AT+IOIN=15
// 响应
OK
// 查询 GPIO 输入状态
AT+IOIN=15?
// 响应
+IOIN=15:1
OK

参数

  • <pin>:bl616 的引脚编号
  • <state>:需要初始化为上拉、下拉或浮空
  • 0:浮空
  • 1:上拉
  • 2:下拉

AT+IORST

功能: 将 GPIO 恢复为浮空输入状态。

设置命令

命令:

AT+IORST=<pin>

响应:

OK

示例

// 复位 GPIO 命令
AT+IORST=15
// 响应
OK

参数

  • <pin>:bl616 的引脚编号

AT+PART

功能: 获取分区信息。

查询命令

命令:

AT+PART?

响应:

+PART:<active_idx>,<age>,<"name">,<addr0>,<addr1>,<len0>,<len1>
+PART:<active_idx>,<age>,<"name">,<addr0>,<addr1>,<len0>,<len1>
...
OK

示例

// 复位 GPIO 命令
AT+PART?
// 响应
+PART=0,0,"   Boot2",0x00000000,0x00000000,57344,0
+PART=0,0,"      FW",0x00010000,0x00210000,2097152,1474560
+PART=0,0,"     mfg",0x00210000,0x00000000,1474560,0
+PART=0,0,"   media",0x00378000,0x00000000,462848,0
+PART=0,0,"     PSM",0x003e9000,0x00000000,32768,0
OK

参数

  • <active_idx>
  • 0:当前活动分区索引为 0
  • 1:当前活动分区索引为 1
  • <age>:此分区的更新次数。例如,当 "FW" 分区通过 OTA 更新时,每次 OTA 更新都会增加 age
  • <name>:分区名称
  • <addr0>:分区索引 0 的地址
  • <addr1>:分区索引 1 的地址
  • <len0>:分区索引 0 的长度
  • <len1>:分区索引 1 的长度

AT+OTASTART

功能: 开始 OTA 传输。

设置命令

命令:

AT+OTASTART=<enable>

参数

  • <enable>
  • 0:终止 OTA 传输
  • 1:开始 OTA 传输

响应:

ERROR

OK

AT+OTASEND

发送 OTA 数据。此命令将实时写入数据到 OTA 分区并执行验证。

设置命令

命令:

AT+OTASEND=<length>

响应:

OK
>

符号 > 表示 AT 已准备好接收串口数据,您现在可以输入数据。当满足由参数 <length> 确定的消息长度要求时,传输开始。

如果传输成功,AT 返回:

SEND OK

否则,返回:

SEND FAIL

参数

  • <length>:OTA 数据长度。最大长度等于系统可分配的 heap 大小

AT+OTAFIN

功能: 验证并从另一个分区重启。

设置命令

命令:

AT+OTAFIN

响应:

如果 OTA 已写入相应分区并成功验证完整性,即将重启,返回:

OK

如果重启失败,返回:

ERROR

AT+FS

功能: 文件系统操作。

设置命令

命令:

AT+FS=<type>,<operation>,<filename>[,<offset>][,<length>]

响应:

OK

==== 参数 ===-

  • <type>:目前仅支持 LittleFS
  • 0:LittleFS
  • <operation>
  • 0:删除文件
  • 1:创建文件
  • 2:写入文件
  • 3:读取文件
  • 4:查询文件大小
  • 5:列出特定目录中的文件,目前仅支持根目录
  • <filename>:需要操作的文件名
  • <offset>:仅适用于写入和读取操作
  • <length>:数据长度,仅适用于写入和读取操作

示例

// 查询当前目录 '.' 中的文件列表
AT+FS=0,5,"."
// 响应
+FS:LIST
.
..
ca_1.crt
ca_1.key
ca_2.crt
ca_2.key
client_1.crt
client_1.key
client_2.crt
client_2.key
server_1.crt
server_1.key
server_2.crt
server_2.key
OK

AT+GMAC

功能: 查询 efuse 中 3 个槽位的 MAC 地址。

查询命令

命令:

AT+GMAC?

响应:

+GMACSLOT0:<mac_addr>
+GMACSLOT1:<mac_addr>
+GMACSLOT2:<mac_addr>
OK

参数

  • <mac_addr>:efuse 中的 MAC 地址

示例

// 查询 efuse 中 3 个槽位的 MAC 地址
AT+GMAC?
// 响应
+GMACSLOT0:9c:b7:93:0c:c1:26
+GMACSLOT1:00:00:00:00:00:00
+GMACSLOT2:00:b7:00:00:00:00
OK

AT+PN

功能: 查询部件号。

查询命令

命令:

AT+PN?

响应:

+PN:<pn_num>
OK

参数

  • <pn_num>:efuse 中的部件号

示例

AT+PN?
// 响应
+PN:CP90-79196-2
OK

AT+VBAT

功能: 查询供电引脚的电压值。

查询命令

命令:

AT+VBAT?

响应:

+VBAT:<vbat_val>
OK

参数

  • <vbat_val>:供电引脚的电压值(单位:mV)

示例

AT+VBAT?
// 响应
+VBAT:3326
OK