4、AT指令基础:AT指令的语法、格式、常用指令及调试工具的使用

AT指令(Attention Command)是嵌入式通信模块开发中最基础、最核心的交互协议。无论是LTE Cat1模块(如EC200S、Air724UG)还是Cat4模块(如EC20、NL668),其控制逻辑均通过UART串口发送AT指令完成。本章将系统讲解AT指令的语法规则、标准指令集、扩展指令格式,并结合真实模块日志演示调试工具(串口助手、QCOM、SecureCRT)的使用方法。掌握本章内容后,开发者应能独立完成模块开机检测、网络注册、信号质量查询、SIM卡识别等基础调试工作。

AT指令交互链路与调试工具映射 MCU/主控 UART TX/RX LTE Cat1/Cat4模块 AT指令解析器 运营商基站 LTE/EPC网络 AT指令(ASCII) 网络注册/数据 PC端调试工具(串口助手 / QCOM / SecureCRT) 串口助手 AT+CSQ → +CSQ: 23,99 QCOM AT+CREG? → +CREG: 0,1 SecureCRT AT+CGMI → Quectel [TX] AT+CGMI? [RX] Quectel [TX] AT+CSQ [RX] +CSQ: 23,99

上图展示了AT指令在MCU、通信模块与基站之间的完整交互链路。PC端调试工具通过USB转串口与模块连接,开发者发送的每条指令都会经过模块内部的AT解析器处理,最终以+XXX: 参数格式返回结果。理解这条链路是后续所有开发工作的基础。

4.1 AT指令语法与格式规范

AT指令本质上是ASCII字符序列,以"AT"开头(Attention),以回车换行(\r\n)结束。模块收到完整指令后,会返回两种响应:中间响应(如CONNECT)和最终响应(如OK或ERROR)。标准指令格式分为四种类型:无参数指令(AT+CGMI)、查询指令(AT+CSQ?)、带参数设置指令(AT+CGDCONT=1,"IP","cmnet")以及测试指令(AT+CSQ=?)。

核心语法规则:
  • 每条指令必须以AT或at开头,大小写均可,但中间不能有空格。
  • 指令末尾必须添加回车符(\r),部分模块要求同时添加换行符(\n)。
  • 参数之间用逗号分隔,字符串参数需用双引号括起(如"cmnet")。
  • 查询指令在指令后加?,设置指令在指令后加=参数。
  • 模块返回的最终响应以OK或ERROR结尾,中间响应以+XXX:开头。

以实际模块日志为例,发送AT+CGMI\r\n后,模块返回:

AT+CGMI
Quectel
OK

其中Quectel是中间响应(厂商名称),OK是最终响应。若指令格式错误,模块返回ERROR。开发者需要特别注意:模块对指令的解析是逐字符进行的,任何多余的空格或特殊字符都可能导致解析失败。

4.2 常用基础AT指令详解

在LTE模块开发中,以下指令是必须掌握的“生存工具”。我们按功能分类,结合真实返回值进行讲解。

指令 功能 典型返回 开发用途
AT 测试通信是否正常 OK 模块上电自检
AT+CGMI 查询厂商名称 Quectel 识别模块品牌
AT+CGMM 查询模块型号 EC200S 确认硬件版本
AT+CGMR 查询固件版本 EC200SCNATR01A02 固件升级判断
AT+CSQ 查询信号质量 +CSQ: 23,99 天线调试、网络覆盖判断
AT+CREG? 查询网络注册状态 +CREG: 0,1 确认是否入网
AT+CGACT? 查询PDP上下文激活状态 +CGACT: 1,1 确认数据连接是否建立
AT+CIMI 查询IMSI号码 460011234567890 SIM卡识别

信号质量指令AT+CSQ返回两个参数:rssi(接收信号强度指示)和ber(误码率)。RSSI值范围0-31,对应-113dBm到-51dBm,值越大信号越强。当返回99时表示无法检测到信号。实际调试中,RSSI大于15(约-93dBm)才能保证稳定的数据传输。

网络注册指令AT+CREG?返回格式为+CREG: <n>,<stat>。其中stat参数含义:0=未注册,1=已注册本地网络,2=正在搜索,3=注册被拒绝,5=已注册漫游网络。开发中必须确认返回1或5才能继续后续操作。

实战经验:在Cat1模块(如EC200S)上,首次上电后建议按顺序执行:AT → AT+CPIN?(检查SIM卡) → AT+CSQ → AT+CREG? → AT+CGDCONT=1,"IP","cmnet" → AT+CGACT=1,1。这个顺序能快速定位问题环节。

4.3 调试工具的使用方法与实战案例

PC端调试工具是AT指令开发的“眼睛”。常用的工具有三类:通用串口助手(如SSCOM、XCOM)、厂商专用工具(如Quectel QCOM、移远ECM)、终端仿真工具(如SecureCRT、PuTTY)。下面以QCOM为例,演示完整调试流程。

QCOM调试步骤:
  1. 安装USB转串口驱动(CP210x或CH340),确认设备管理器中识别到COM口。
  2. 打开QCOM,选择正确的COM口号,设置波特率(Cat1模块通常为115200,Cat4模块可能为9600或115200)。
  3. 勾选“发送新行”(即自动添加\r\n),否则模块无法识别指令。
  4. 在发送区输入AT,点击发送,接收区应显示OK。
  5. 依次发送AT+CGMI、AT+CSQ、AT+CREG?,观察返回值。

案例拆解:某Cat4模块无法联网故障排查

某物联网项目使用移远EC20 Cat4模块,上电后发送AT+CREG?返回+CREG: 0,0(未注册)。初步判断为网络注册失败。通过QCOM抓取完整日志:

[12:00:01.234] TX: AT
[12:00:01.240] RX: OK
[12:00:01.245] TX: AT+CPIN?
[12:00:01.250] RX: +CPIN: READY
[12:00:01.255] TX: AT+CSQ
[12:00:01.260] RX: +CSQ: 99,99
[12:00:01.265] TX: AT+CREG?
[12:00:01.270] RX: +CREG: 0,0

日志显示SIM卡已识别(+CPIN: READY),但信号强度为99(无信号)。进一步检查发现:天线未连接。将天线拧紧后重新测试:

[12:05:30.001] TX: AT+CSQ
[12:05:30.006] RX: +CSQ: 18,99
[12:05:30.010] TX: AT+CREG?
[12:05:30.015] RX: +CREG: 0,1

信号值变为18(约-95dBm),网络注册成功。这个案例说明:AT指令调试必须结合硬件状态判断,不能仅依赖软件日志。

常见误区提醒:
  • 误区1:忽略波特率匹配。模块默认波特率可能被修改过,导致返回乱码。
  • 误区2:忘记勾选“发送新行”。模块无法识别没有回车符的指令。
  • 误区3:将+CSQ: 99,99误认为信号极差。99表示“无法检测”,应检查天线或模块供电。
  • 误区4:在模块未完全启动时发送指令。Cat1模块上电后需等待2-5秒,待URC上报(如RDY或+CFUN: 1)后再操作。

4.4 指令调试的进阶技巧与总结复盘

除了基础指令,开发者还需掌握URC(Unsolicited Result Code)的处理。URC是模块主动上报的消息,如网络断开时上报+NITZ或NO CARRIER。在调试工具中,URC会随机出现在接收区,开发者需学会区分主动响应和被动上报。

另一个重要技巧是指令回显(Echo)控制。默认情况下模块会回显发送的指令(如AT+CSQ),可通过ATE0关闭回显,ATE1开启回显。在批量测试时关闭回显可减少日志干扰。

对于Cat4模块,还需掌握多PDN(PDP上下文)的调试方法。例如同时使用默认承载和专用承载时,需通过AT+CGDCONT=1,"IP","cmnet"和AT+CGDCONT=2,"IP","ims"分别配置,再通过AT+CGACT=1,1和AT+CGACT=2,1激活。

调试场景 推荐工具 关键参数 注意事项
快速验证模块通信 SSCOM 115200, 8N1 勾选“发送新行”
固件升级/日志分析 QCOM 自动识别 需安装厂商驱动
脚本自动化测试 SecureCRT 支持VBS脚本 注意转义字符
低功耗调试 串口+逻辑分析仪 波特率需匹配 观察URC时序

总结复盘:AT指令调试的核心方法论是“分层排查”。第一层确认物理链路(串口参数、天线连接);第二层确认模块状态(SIM卡、信号、注册);第三层确认数据连接(PDP激活、IP获取)。每层都有对应的AT指令作为“探针”。开发者应建立自己的指令测试清单,每次调试按顺序执行,避免遗漏关键步骤。同时,建议将常用指令保存为脚本文件,在SecureCRT中一键发送,提高调试效率。

经验之谈:在量产阶段,建议在固件中加入AT指令日志功能,将AT+CSQ、AT+CREG?的返回值定期上报至服务器。这样即使设备在用户手中出现网络问题,也能远程定位是信号覆盖、SIM卡欠费还是模块硬件故障。