AT模块 2: 基础 AT 命令(Basic AT Commands)
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
- 0:使用简单提示信息,如
- 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