2131E AT 命令用户指南
文档说明
本文档面向使用 2131E CAT.1 模组的开发者,说明 2131E AT 命令的语法、分类、常用验证方法和 SDK 侧 CAT1 AT 命令的接入位置。命令的参数范围、返回值和完整示例请参阅 2131E AT 命令目录。
2131E 的 3GPP 标准命令、模组自定义命令和产测命令由模组固件解析;HiDiTing SDK 中的 cat1_at 组件负责注册 SDK 侧 CAT1 调试/控制命令。两者属于不同层次,新增命令前请先确认实现归属。
2131E AT 模块背景知识
2131E 通过串口 AT 通道提供网络注册、USIM、安全管理、分组域、短信及设备管理等能力。主机发送以 AT 或 at 开头、并以行结束符结尾的命令;模组返回结果码、信息响应或非请求上报(URC)。建议先使用查询命令确认当前状态,再执行写入、网络或产测类命令。
AT 命令通常分为设置、查询、执行和测试四种形式。本文保留原始 3GPP/CAT.1 命令定义、参数说明和示例,避免重构文档改变命令语义。
AT命令语法
本手册中的所有命令行必须以“AT”或“at”为前缀,以<CR>或<LF>或<CR><LF>结尾。
多个命令下发使用‘;’分割,只有第一个命令需要“AT”/“at”前缀。
多个命令下发时支持单回复模式(仅上报单个OK/ERROR/CME ERROR),默认关闭该模式。
AT命令字符串总长度不能超过3000个字符(包含结尾符)。
须知:
- 如果交互式AT命令以<CR><LF>结束,其中的<LF>可能会被误判为交互式码流。建议交互式AT命令以<CR>或<LF>为结尾符下发,也可在交互式回调函数中对码流头部的<LF>进行过滤处理。交互式码流结束符后不允许添加其他字符,可能导致AT命令执行出现非预期行为。
- 多命令下发时,不允许添加交互式AT命令或可打断式AT命令,可能导致AT命令执行出现非预期行为。
- 多命令下发时,整体长度超过最大长度限制则串口回复“AT_CMD_TOO_LONG”,且命令均不执行。
AT+CSCA=<sca>[,<tosca>]<CR>
AT命令以“+”开头,部分命令无需“+”前缀(比如“D”“H”“S0”)。
- “[ ]”中的值为可选参数。
- 可选参数和必选参数必须按照规定的顺序排列,各参数间必须用逗号隔开。
- AT命令字符串中双引号之外的空格将被忽略。
- 使用过程中,“<>”和“[ ]”不用输入。
AT命令类型
AT命令包含4种类型,如下表所示。
命令格式 |
类型 |
说明 |
|---|---|---|
AT+<cmd>=p1[,p2[,p3[.....]]] |
设置命令 |
该命令用于设置参数值。 |
AT+<cmd>? |
查询命令 |
该命令用于查询参数的当前值。 |
AT+<cmd> |
执行命令 |
该命令用于查询由内部过程决定的参数值。 |
AT+<cmd>=? |
测试命令 |
该命令用于检查命令是否支持、查询参数取值范围。 |
AT命令示例
该命令为AT命令示例,用于展示AT命令格式。
命令 |
返回结果 |
示例 |
|---|---|---|
+DEMO=<param1>,<param2> |
- |
AT+DEMO=TYPE1,0 at demo set,TYPE1,0 OK AT+DEMO at demo cmd exc OK |
+DEMO? |
- |
AT+DEMO? at demo read,0 OK |
+DEMO=? |
+DEMO:(list of supported <param1>,list of supported <param2>) |
AT+DEMO=? +DEMO: (TYPE1,TYPE2),(0,1) OK |
参数 |
描述 |
|---|---|
param1 |
字符串类型 TYPE1:参数示例; TYPE2:参数示例; |
param2 |
整数类型: 0:参数示例; 1:参数示例; |
API 接口列表
2131E 模组内置 AT 命令的实现不在本 SDK 仓中。若在 HiDiTing SDK 侧新增 CAT1 AT 调试或控制命令,可使用下列接口:
| 接口函数 | 说明 |
|---|---|
| uapi_at_cat1_register_cmd | 注册 CAT1 命令表,内部调用通用 AT 命令表注册接口 |
| uapi_at_cmd_table_register | 向 AT 框架注册命令解析表 |
| uapi_at_report_to_single_channel | 向指定 AT 通道输出命令执行结果 |
完整 API 列表:请参考 AT API 参考。
快速跑通 2131E AT Demo
功能说明
本节使用最小串口交互验证 2131E AT 通道和基础信息查询。完整命令、参数、返回值和示例请从 2131E AT 命令目录 进入对应分类文档。
| 命令类别 | 功能说明 | 命令参考 |
|---|---|---|
| 协议标准 AT 命令 | 3GPP 通用、USIM、安全、网络、短信和其他业务命令 | 协议标准 AT 命令 |
| 自定义 AT 命令 | 2131E 模组扩展能力 | 自定义 AT 命令 |
| 产测 AT 命令 | 生产测试与校准相关能力 | 产测 AT 命令 |
准备工作
- 连接 2131E 的 AT 串口并确认供电、天线和 USIM 状态满足测试条件。
- 使用串口工具打开对应端口,波特率、数据位、校验位和停止位须与硬件设计一致。
- 发送命令时使用
CRLF作为行结束符;若使用交互式或数据流命令,按命令说明处理结束符和后续数据。
使用方式
- 向模组发送
AT,确认收到OK。 - 发送
AT+CGMI或AT+CGMM查询厂商/型号信息。 - 发送
AT+CLAC获取当前固件支持的命令列表;实际命令集合受模组固件版本和配置影响。
预期结果
AT返回OK,说明主机至 2131E 的 AT 通道可用。- 信息查询命令返回与当前模组固件匹配的数据。
- 未支持命令或参数不合法时,返回
ERROR或+CME ERROR;请结合2131E AT命令清单中的错误码章节定位。
文件结构与代码走读
文件结构
2131E 的协议标准命令由模组固件实现,本仓仅包含 SDK 侧 CAT1 AT 组件。SDK 中与 CAT1 命令注册相关的文件如下:
src/middleware/utils/at/at_cat1_cmd/
├── CMakeLists.txt # cat1_at 组件构建配置
├── at/at_cat1_cmd_table.h # CAT1 命令表、参数语法和处理函数声明
├── at/at_cat1.c # 命令处理实现及命令表注册
└── src/at_cat1_cmd_register.c # 注册封装,连接通用 AT 框架
各文件职责
| 文件 | 职责 | 关键内容 |
|---|---|---|
| /src/middleware/utils/at/at_cat1_cmd/at/at_cat1_cmd_table.h | 定义 CAT1 命令项和参数解析规则 | at_cat1_cmd_parse_table、at_para_parse_syntax_t |
| /src/middleware/utils/at/at_cat1_cmd/at/at_cat1.c | 实现处理函数并注册命令表 | los_at_cat1_cmd_register() |
| /src/middleware/utils/at/at_cat1_cmd/src/at_cat1_cmd_register.c | 调用通用 AT 框架完成注册 | uapi_at_cat1_register_cmd() |
| /src/middleware/utils/at/at_cat1_cmd/CMakeLists.txt | 声明 cat1_at 组件的源文件与头文件路径 |
COMPONENT_NAME、SOURCES |
代码走读
at_cat1_cmd_table.h中的at_cat1_cmd_parse_table将 AT 命令字符串、处理函数和参数解析语法绑定为命令表项。at_cat1.c通过AT_CAT1_FUNC_NUM计算命令数量,并在los_at_cat1_cmd_register()中把命令表交给注册封装。at_cat1_cmd_register.c调用uapi_at_cmd_table_register()注册命令表;注册失败时通过uapi_at_report_to_single_channel()输出诊断信息。- 2131E 模组自身的标准/厂商命令并不等同于上述 SDK 命令表。若命令需由 2131E 解析,必须在模组固件侧实现并由对应固件版本提供。
基于 2131E AT Demo 新建自己的应用
先确认新增位置
- 新增 2131E 原生 AT 命令:命令解析和响应逻辑位于 2131E 模组固件,不在当前 SDK 仓中。请与模组固件维护方确认命令名、参数、权限和固件发布方式。
- 新增 HiDiTing SDK 侧 CAT1 调试/控制命令:可扩展
cat1_at组件,下面给出推荐步骤。
准备工作
- 选择未被现有命令占用的命令名,并约定设置、查询、执行和测试形式。
- 明确每个参数的类型、范围、可选性以及命令的同步/异步返回方式。
- 确认
cat1_at组件已参与目标产品构建;其构建入口为 /src/middleware/utils/at/at_cat1_cmd/CMakeLists.txt。
详细编码
- 在 /src/middleware/utils/at/at_cat1_cmd/at/at_cat1_cmd_table.h 中定义参数结构体和
at_para_parse_syntax_t解析规则;为每个整型参数配置合理的上下界。 - 在同一文件的
at_cat1_cmd_parse_table中新增命令项,将命令字符串、参数语法和处理函数绑定。 - 在 /src/middleware/utils/at/at_cat1_cmd/at/at_cat1.c 中实现处理函数:校验参数、调用 CAT1 服务接口、返回
at_ret_t,必要时通过uapi_at_report_to_single_channel()输出结果。 - 使用 /src/middleware/utils/at/at_cat1_cmd/src/at_cat1_cmd_register.c 已有的
uapi_at_cat1_register_cmd()完成注册;通常无需为每条命令额外添加注册调用。 - 在串口上分别验证执行、查询、设置、测试和非法参数路径,确保返回结果与命令约定一致。
编译、运行与调试
编译
说明:本文示例命令以一站式 CLI 为主。实际开发可从以下三种环境中选择,推荐使用一站式 CLI。
| 开发环境 | 适用场景 | 使用指南 |
|---|---|---|
| 一站式 CLI(推荐) | 快速完成目标选择、构建、烧录和串口监视 | 一站式 CLI 开发环境使用指南 |
| HiSpark Studio for VS Code | 图形化编辑、编译、烧录和调试 | HiSpark Studio for VS Code 开发环境使用指南 |
| WSL 与 Docker | 在 Windows 上使用一致的 Linux 容器构建环境 | WSL 与 Docker 环境使用指南 |
按照一站式 CLI 开发环境使用指南完成 fbb setup 后,在工程目录中执行:
# 指向当前 SDK 的 src 目录;路径请按本机实际位置修改。
$env:FBB_SDK_DIR = "<SDK根目录>\src"
# 首次设置构建目标,目标会保存到工程目录下的 .fbb-target。
fbb set-target pack_diting_community
# 编译已设置的目标。
fbb build
也可以直接指定 SDK 与目标:
构建完成后,使用一站式 CLI 烧写完整固件并打开 UART2 日志串口;将 COM3 替换为实际端口:
fbb flash -f "$env:FBB_SDK_DIR\output\3322\fwpkg\diting-community.fwpkg" --chip 3322 -d --timeout 180
fbb monitor --port COM3 --baud 750000
该组件由 /src/middleware/utils/at/CMakeLists.txt 纳入构建。不要在 src 目录直接执行 python build.py。
运行与调试
- 串口验证时先发送
AT+CLAC或目标查询命令确认命令已注册,再发送正常参数和边界参数。 - 若命令未出现,检查组件是否参与构建、注册函数是否被调用,以及命令字符串是否和命令表一致;若返回
ERROR,打开 AT 相关日志并检查处理函数返回值。
注意事项
- 不要将 2131E 模组原生命令与 SDK 侧
cat1_at命令混为一谈;两类命令的发布和升级路径不同。 - 涉及 USIM PIN、网络附着、短信、固件升级、产测或恢复出厂设置的命令可能改变设备状态,请先在可恢复的测试环境验证。
AT+CLAC的返回内容随模组固件版本、编译选项和运营商配置变化,以设备实际返回为准。- 命令发送应严格遵循本手册的参数格式与结束符要求,避免将交互式数据误当作新的 AT 命令。
常见错误
| 现象 | 排查方法 |
|---|---|
发送 AT 无响应 |
检查供电、串口连线、端口号、串口参数和行结束符。 |
返回 ERROR 或 +CME ERROR |
检查命令是否受当前固件支持、参数范围和 USIM/网络状态;参阅错误码。 |
| 命令未出现在 SDK 侧命令列表 | 检查 cat1_at 组件是否构建、at_cat1_cmd_parse_table 是否包含该项,以及注册流程是否执行。 |
| 设备重启或网络状态改变 | 结合重置原因与串口日志确认触发源。 |