当前文档版本为 v0.5.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

atcmd例程

1、AT组件概念

1.1 AT命令概念

AT命令是由发明拨号调制解调器modem的hayes公司为了控制modem发明的控制协议,后来移动电话厂家为GSM提供了标准的AT命令用于控制手机的GSM模块。

1.2 AT组件功能

AT Server:

  • 基础命令:实现多种通用基础命令(ATE、 ATZ 等)

  • 命令兼容:命令支持忽略大小写,提高命令兼容性

  • 命令检测:命令支持自定义参数表达式,并实现对接收的命令参数自检测功能

  • 命令注册:提供简单的用户自定义命令添加方式,类似于 finsh/msh 命令添加方式

  • 调试模式:提供 AT Server CLI 命令行交互模式,主要用于设备调试

AT Client:

功能待补充

2、AT组件api

2.1 server api

2.1.1 api

//AT server初始化,如果使能了自动初始化则不需要
int at_server_init(void);
//注册自定义AT命令
/*
_name_:自定义AT命令名称,如: "AT+TEST"
_args_expr_:AT 命令参数表达式;(无参数为 NULL, <> 中为必选参数, [] 中为可选参数),如 =[,]
_test_:AT测试函数
_query_:AT查询函数
_setup_:AT设置函数
_exec_:AT执行函数
*/
AT_CMD_EXPORT(_name_, _args_expr_, _test_, _query_, _setup_, _exec_);
//发送数据到客户端
/*
format:自定义发送数据的表达式
...:发送数据列表
*/
void at_server_printf(const char *format, ...);
//带换行的发送数据到客户端
void at_server_printfln(const char *format, ...);
//向客户端发送执行结果
/*
result:执行结果,可取
    AT_RESULT_OK 命令执行成功
    AT_RESULT_FAILE 命令执行失败
    AT_RESULT_NULL 命令无返回结果
    AT_RESULT_CMD_ERR 输入命令错误
    AT_RESULT_CHECK_FAILE 参数表达式匹配错误
    AT_RESULT_PARSE_FAILE 参数解析错误
*/
void at_server_print_result(at_result_t result);
//解析设置命令参数
/*
req_args:设置命令输入参数字符串
req_expr:解析表达式
...:用于存放解析出的参数
*/
int at_req_parse_args(const char *req_args, const char *req_expr, ...);

2.1.2 server api示例

int g_value1 = 123, g_value2 = 234;
static at_result_t at_test_query(void)
{
    at_server_printfln("+TEST=%d,%d", g_value1, g_value2);
    return AT_RESULT_OK;
}

static at_result_t at_test_setup(const char *args)
{
    int argc;
    int value1,value2;
    
    /* args 的 输 入 标 准 格 式 应 为 "=1,2", "=%d,%d" 为 自 定 义 参 数 解 析 表 达 式, 
       解 析 得 到 结 果存 入 value1 和 value2 变 量 */
    argc = sscanf(args, "=%d,%d", &value1, &value2);
    if(argc != 2)
    {
        return AT_RESULT_PARSE_FAILE;
    }
    
    /* 数 据 解 析 成 功, 回 显 数 据 到 AT Server 串 口 设 备 */
    printf("value1: %d, value2: %d\r\n", value1, value2);
    
    g_value1 = value1;
    g_value2 = value2;
    
    return AT_RESULT_OK;
}
/* 添 加 "AT+TEST" 命 令 到 AT 命 令 列 表, 命 令 参 数 格 式 为 两 个 必 选 参 数 和 > */
AT_CMD_EXPORT("AT+TEST", "=<value1>,<value2>", NULL, at_test_query, at_test_setup, NULL);

2.2 client api

暂不支持

3、AT功能演示

3.1 功能概述

本代码示例主要演示uart外设的printf功能,周期性向串口调试工具发送”Hello Panchip.”。

3.2 环境要求

  • Board: PAN2628b1_evb

  • 将 J18(P3_0) 开关拔至RX侧,将P3_0与uart的RX引脚相连

  • 将 J19(P3_1) 开关拔至TX侧,将P3_1与uart的TX引脚相连

  • 将USB线分别连接至电脑与evb板的UART MicroUSB接口

3.3 编译和烧录

例程位置:pan2628_dk\01_SDK\example_extension\atcmd

打开目录下keil下的atcmd.uvproj工程,编译整个代码工程。

3.4 演示说明

根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载:

  1. 在电脑上打开串口调试工具,串口参数:115200/8bit/1stop/无校验

  2. 按复位键复位MCU,观察串口打印的内容,确认串口有

    AT server (V1.3.1) initialize success.输出

  3. 通过串口发送命令AT+GETVDD?\r\n,确认EVB板有+GETVDD=3.307\r\nOK\r\n输出

  4. 通过串口发送命令AT&L\r\n,串口有支持的命令列表输出

上电运行后串口输出信息如下:

AT server (V1.3.1) initialize success.
pan2628 atcmd start.

输入命令AT+GETVDD?后按回车键,串口输出信息如下:

+GETVDD=3.307
OK

输入命令AT&L后按回车键,串口输出信息如下:

Commands list : 
AT
AT+Z
AT+RESET
AT+E=<0/1>
AT&L
AT+PWR=<TXPOWER[0~29]>
AT+UCH=<f0>,<f1>,<f2>,<f3>,<f4>,<f5>,<f6>,<f7>
AT+DCH=<f0>,<f1>,<f2>,<f3>,<f4>,<f5>,<f6>,<f7>
AT+GETVIN
AT+GETVDD
AT+GETRT=<sampletimes>,<RefResister>
OK

3.5 RAM/Flash资源使用情况

Program Size: data=22.1 xdata=809 const=1144 code=10703