AT模块 1: 简介(Introduction)和 AT 消息格式
模块 1: 简介(Introduction)和 AT 消息
简介(Introduction)
本文主要介绍 AT 命令集及其使用方法。该命令集包括:基础 AT 命令、Wi-Fi 功能 AT 命令、TCP/IP 工具箱 AT 命令和 BLE 相关 AT 命令。
指令类型(Instruction type)
| 类型 | 格式 | 描述 |
|---|---|---|
| 查询指令 | AT+<x>? | 该指令用于返回当前参数的值 |
| 设置指令 | AT+<x>=<···> | 该指令用于设置用户定义的参数 |
| 执行指令 | AT+<x> | 该指令用于执行模块内参数不可变的功能 |
重要说明:
- 并非每个 AT 命令都具有上述三种类型
- 目前,AT 命令中作为输入参数仅支持字符串和整数
- 尖括号 < > 表示不可省略的参数
- 方括号 [ ] 表示可以省略的可选参数。省略时将使用参数的默认值
- 如果要省略的参数后面还有参数,必须使用逗号来表示。例如:AT+CWJAP="ssid","password",,1
- 字符串值需要包含在双引号中,例如:AT+CWSAP="AP-NAME","12345678"
- 每个 AT 命令的长度不应超过 256 字节
- AT 命令以换行符(CR-LF)结束,因此串口工具应设置为"换行模式"
- 注意: AT 命令中的参数存储是通过 EasyFlash 库实现的。
AT 消息(AT Messages)
从 AT 命令端口返回的 AT 消息有两种类型:AT 响应消息和 AT 消息报告。
响应消息(Response Messages)
每个 AT 命令输入都会返回响应消息,以告知发送者 AT 命令的结果。响应的最后一条消息始终是 "OK" 或 "ERROR"。
| AT 响应消息 | 描述 |
|---|---|
| OK | AT 命令处理完成并返回 OK |
| ERROR | AT 命令错误或执行过程中发生错误 |
| SEND OK | 数据已发送到协议栈 |
| SEND FAIL | 向协议栈发送数据时发生错误 |
+<Command Name>:...
|
向发送者详细描述 AT 命令处理结果的响应 |
消息报告(Message Reports)
AT 将报告系统中的重要状态变化或消息。
| AT 消息报告 | 描述 |
|---|---|
| ready | AT 固件已就绪 |
| busy p... | 忙于处理。系统正在处理上一条命令,因此无法接受新输入 |
ERR CODE:<0x%08x>
|
不同命令的错误代码 |
| +CW:CONNECTING | Wi-Fi 站点接口正在连接到 AP |
| +CW:CONNECTED | Wi-Fi 站点接口已连接到 AP |
| +CW:ERROR | Wi-Fi 站点接口连接 AP 失败 |
| +CW:GOTIP | Wi-Fi 站点接口已获得 IPv4 地址。如果启用 AT+SYSLOG,此消息后将打印额外的网络信息,包括 IP 地址、网关、子网掩码和 DNS 服务器 |
| +CW:DISCONNECTED | Wi-Fi 站点接口已与 AP 断开连接 |
| +CW:STA_CONNECTED <sta_mac> | 一个站点已连接到 AT 的 Wi-Fi softAP 接口 |
| +CW:STA_DISCONNECTED <sta_mac> | 一个站点已与 AT 的 Wi-Fi softAP 接口断开连接 |
| +CW:DIST_STA_IP <sta_mac>,<sta_ip> | AT 的 Wi-Fi softAP 接口向站点分配了一个 IP 地址 |
| +CW:SCAN_DONE | Wi-Fi 扫描完成事件 |
| +CIP:[<conn_id>,]CONNECTED | ID 为 <conn_id> 的网络连接已建立(默认 ID=0)
|
| +CIP:[<conn_id>,]DISCONNECTED | ID 为 <conn_id> 的网络连接已结束(默认 ID=0)
|
| +LINK_CONN | TCP/UDP/SSL 的详细连接信息 |
| > | AT 正在等待接收更多数据 |
Recv <xxx> bytes
|
AT 已从 AT 命令端口接收到 <xxx> 字节
|
| +IPD | 在非透传模式下,AT 已从网络接收到数据。具体的数据格式如下表所示 |
| +MQTT:CONNECTED,<linkid> | MQTT 已连接到 Broker |
| +MQTT:DISCONNECTED,<linkid> | MQTT 已与 Broker 断开连接 |
| +MQTT:SUBRECV,<LinkID>,<topic_length>,<data_length>,<"topic">, | 当 AT 收到订阅主题的 MQTT 消息时 |
| 透传模式下的数据 | 在透传模式下,已从网络或蓝牙接收到数据 |
| SEND CANCELLED | 在 Wi-Fi 正常传输模式下取消发送数据 |
| +BLE:CONNECTED | 蓝牙 LE 连接已建立 |
| +BLE:DISCONNECTED | 蓝牙 LE 连接已结束 |
| +BLE:CONNPARAM | 蓝牙 LE 连接参数更新 |
| +BLE:GATTREAD | 来自蓝牙 LE 连接的读取操作 |
| +BLE:GATTWRITE | 来自蓝牙 LE 连接的写入操作 |
| +BLE:SRV | 发现蓝牙 LE 连接服务 |
| +BLE:SRVCHAR | 发现蓝牙 LE 连接特征 |
| +BLE:INDICATION | 蓝牙服务指示状态:0:禁用,1:启用,2:确认 |
| +BLE:NOTIFICATION | 蓝牙服务通知状态 |
| +BLE:NOTIDATA | 蓝牙服务接收通知/指示数据 |
| +BLE:MTUSIZE | 蓝牙 MTU 大小更新 |
| +BLE:PAIRINGFAILED | 蓝牙配对失败 |
| +BLE:PAIRINGCOMPLETED | 蓝牙配对完成 |
| +BLE:PAIRINGCONFIRM | 蓝牙配对确认通知 |
| +BLE:PASSKEYENTRY | 蓝牙配对密钥通知 |
| +BLE:PASSKEYDISPLAY | 蓝牙配对密钥显示通知 |
| +BLE:BASLEVEL | 蓝牙 BAS 配置文件级别 |
| +QUITT | AT 退出 Wi-Fi 透传模式
|
- 注意: 在非透传模式下,AT 从网络接收的数据格式:
- 如果 AT+CIPMUX=0 且 AT+CIPRECVTYPE=1,打印:+IPD:<length>
- 如果 AT+CIPMUX=1 且 AT+CIPRECVTYPE=<link_id>,1,打印:+IPD:<link_id>,<length>
- 如果 AT+CIPMUX=0、AT+CIPRECVTYPE=0 且 AT+CIPDINFO=0,打印:+IPD:<length>,
- 如果 AT+CIPMUX=1、AT+CIPRECVTYPE=<link_id>,0、AT+CIPDINFO=0,打印:+IPD:<link_id>,<length>,
- 如果 AT+CIPMUX=0、AT+CIPRECVTYPE=0、AT+CIPDINFO=1,打印:+IPD:<length>,<"remote_ip">,<remote_port>,
- 如果 AT+CIPMUX=1、AT+CIPRECVTYPE=<link_id>,0、AT+CIPDINFO=1,打印:+IPD:<link_id>,<length>,<"remote_ip">,<remote_port>,
- 其中,link_id 指连接 ID,length 表示数据长度,remote_ip 表示远程 IP 地址,remote_port 表示远程端口号,data 表示数据。
- 当是 SSL 连接时,在被动接收模式(AT+CIPRECVTYPE=1)下,AT 命令返回的长度可能与实际可读的 SSL 数据长度不匹配。这是因为 AT 优先返回 SSL 层的可读数据长度。如果 SSL 层的可读数据长度为 0,AT 将返回 socket 层的可读数据长度。
模块 1 结束