3. AT指令基础与吞吐测试准备
好,咱们进入第三章。这一章是实操前的「弹药准备」。
你想想看,模组再厉害,也得有人给它下命令。谁下?就是我们通过串口发AT指令。吞吐测试能不能跑起来,关键就看你能不能把数据链路搭通。我见过太多人拿着测试工具一顿操作,结果发现模组根本没注册上网络——那测出来的全是寂寞。
3.1 什么是AT指令?
AT指令,说白了就是「Attention」。主机(比如你的电脑或MCU)通过串口发一串字符给模组,模组回你一串结果。一问一答,就这么简单。
每条AT指令以 AT 开头,以 \r\n 结尾。模组收到后会回复 OK 或 ERROR,有些还会带上数据。
AT指令的基本格式:
- 测试指令:
AT+<cmd>=?—— 查询模组支持哪些参数 - 查询指令:
AT+<cmd>?—— 读取当前值 - 设置指令:
AT+<cmd>=<param>—— 写入参数 - 执行指令:
AT+<cmd>—— 触发某个动作
举个例子:AT+CSQ 就是查询信号强度,模组回你 +CSQ: 19,99。19表示信号还行,99表示误码率没测到。嗯,这里要注意,不同厂商的返回值格式可能略有差异,但大体一致。
3.2 吞吐测试前的三条「必查指令」
我个人习惯,拿到一块新模组,先跑三条指令确认状态。这三条不过,后面的吞吐测试想都别想。
3.2.1 AT+CSQ —— 信号质量
这条指令查的是射频底子。返回值 +CSQ: <rssi>,<ber>。
| RSSI值 | 信号强度 (dBm) | 评价 |
|---|---|---|
| 0 | -113 或更低 | 几乎没信号 |
| 10 | -93 | 勉强可用 |
| 20 | -73 | 良好 |
| 31 | -51 或更高 | 极好 |
| 99 | 未知 | 不可用 |
我的经验:吞吐测试时,RSSI最好在15以上。低于10的话,重传率会飙升,测出来的吞吐数据根本不能反映模组的真实能力。我曾经在实验室里测出过80Mbps,拿到客户现场只有20Mbps——一查,RSSI只有8。所以先查CSQ,别盲目开跑。
3.2.2 AT+CGATT —— 网络附着状态
这条指令告诉你模组有没有「挂」到网络上。返回值 +CGATT: 1 表示已附着,0 表示未附着。
AT+CGATT?
+CGATT: 1
OK
如果返回0,别急着测吞吐。先检查SIM卡有没有插好、APN对不对、天线有没有接。我遇到过好几次,折腾半天发现是SIM卡座接触不良。
3.2.3 AT+QIACT —— PDP上下文激活
这条是重点。PDP上下文,你可以理解成「模组和基站之间的一条逻辑通道」。吞吐数据就是走这条通道跑的。通道没建好,数据发不出去。
AT+QIACT=1
OK
AT+QIACT?
+QIACT: 1,1,1,"10.20.30.40"
OK
返回的IP地址说明激活成功。如果返回 ERROR,大概率是APN配错了,或者网络侧没开数据业务。
注意:有些模组支持多PDP上下文,但吞吐测试一般只用第一个(CID=1)。别搞混了。我曾经在调试时同时激活了CID 1和CID 2,结果数据走错了通道,吞吐死活上不去。
3.3 PDP上下文激活的完整流程
光知道单条指令不够,你得把整个流程串起来。我画了张图,你看一眼就明白了。
流程不复杂,但每一步都有坑。我建议你写个脚本,把这几个步骤自动化。手动敲指令太容易出错了。
3.4 建立数据链路:从PDP到Socket
PDP上下文激活后,模组有了IP地址,但还不能直接收发数据。你得再建一个Socket连接——这才是真正的数据管道。
以常见的TCP为例,流程是这样的:
- 配置Socket参数:
AT+QIOPEN=1,0,"TCP","服务器IP",端口,0,0 - 等待连接建立:模组返回
CONNECT或+QIOPEN: 0,0 - 开始收发数据:用
AT+QISEND发,模组主动上报接收数据
// 配置并打开TCP连接
AT+QIOPEN=1,0,"TCP","192.168.1.100",8888,0,0
// 模组返回
OK
+QIOPEN: 0,0 // 0号Socket连接成功
// 发送数据
AT+QISEND=0,5
> HELLO
SEND OK
// 接收数据(模组主动上报)
+QIURC: "recv",0,12
AT+QIRD=0,12
+QIRD: 12
Hello Server
避坑指南:我曾经在调试时发现数据发不出去,查了半天,结果是服务器端口被防火墙挡住了。所以建链前,先确认服务器端口的可达性。用PC上的telnet或nc先测一遍,别让模组背锅。
3.5 吞吐测试前的「体检清单」
好了,理论讲完,咱们来点实际的。每次吞吐测试前,我建议你按这个清单走一遍:
| 检查项 | 指令/方法 | 期望结果 |
|---|---|---|
| 信号强度 | AT+CSQ |
RSSI ≥ 15 |
| 网络附着 | AT+CGATT? |
1 |
| PDP激活 | AT+QIACT? |
有IP地址 |
| Socket连接 | AT+QISTATE? |
Socket状态为CONNECTED |
| 天线驻波 | 用网分或模组自检 | VSWR < 2:1 |
重要提醒:别在信号差的地方做吞吐测试。你测出来的不是模组的能力,而是射频环境的瓶颈。我见过有人在地下室测出1Mbps,然后抱怨模组不行——其实模组在开阔环境下能跑50Mbps。测试环境要可控,结果才有意义。
3.6 本章小结
这一章我们干了三件事:搞懂了AT指令的基本玩法,学会了三条吞吐测试前的必查指令,走通了从PDP激活到数据链路建立的完整流程。
说白了,吞吐测试的准备工作就是「查信号、附着网、激活PDP、建Socket」。每一步都有对应的AT指令,每一步都有坑。你按我给的清单走,至少能省掉一半的排查时间。