上云秘笈:连结通讯模块的 AT 命令实用精技
AT 命令(AT Commands)最早是由美国Hayes公司为了控制 MODEM 发明的控制协议。因为指令是以「AT」为开头,故以此称之。随后的 3G、4G、NB-IoT 模块等,均采用 AT 命令来控制,AT 命令逐渐在产品开发中成为实际标准。AT 命令广泛的应用于嵌入式开发领域,AT 命令作为MCU芯片和通讯模块的协议接口,透过硬件串口,主控MCU可以通过简单的AT命令和通讯模块连结完成多种通讯操作。
AT 命令集是一組指令集合,应用于 AT 服务器(AT Server)与 AT 客户端(AT Client)间的设备连接与数据通信的方式。其结构如下图所示:
一般 AT 命令由三个部分组成,分别是:前缀、主体和结束符。其中前缀由字符 AT 构成;主体由命令、参数和可能用到的数据组成;结束符一般为
("\r\n")。 AT 功能的实现需要 AT Server 和 AT Client 两个部分共同完成。
AT Server 主要用于接收 AT Client 发送的命令,判断接收的命令及参数格式,并下发对应的响应数据,或者主动下发数据。
AT Client 主要用于发送命令、等待 AT Server 响应,并对 AT Server 响应数据或主动发送的数据进行解析处理,获取相关信息。
AT Server 和 AT Client 之间支持多种数据通讯的方式,目前最常用的是串口 UART 通讯方式。
AT Server 向 AT Client 发送的数据分成两种:响应数据和 URC 数据。
响应数据:AT Client 发送命令之后收到的 AT Server 响应状态和信息。
URC (Unsolicited Result Code))数据:AT Server 主动发送给 AT Client 的数据,一般出现在一些特殊的情况,比如 WIFI 连接断开、TCP 接收数据等,这些情况往往需要用户做出相应操作。
AT Client 数据收发方式
AT Client 主要功能是发送 AT 命令、接收数据并解析数据。下面是对 AT Client 数据接收和发送相关流程与函数介绍。相关结构体定义:
该结构体用于定义一个 AT 命令响应数据的控制块,用于存放或者限制 AT 命令响应数据的数据格式。其中 buf 用于存放接收到的响应数据,注意的是 buf 中存放的数据并不是原始响应数据,而是原始响应数据去除结束符("\r\n")的数据,buf 中每行数据以 '\0' 分割,方便按行获取数据。buf_size 为用户自定义本次响应最大支持的接收数据的长度,由用户根据自己命令返回值长度定义。line_num 为用户自定义的本次响应数据需要接收的行数,如果没有响应行数限定需求,可以置为 0。line_counts 用于记录本次响应数据总行数。timeout 为用户自定义的本次响应数据最大响应时间。该结构体中 buf_size、line_num、timeout 三个参数为限制条件,在结构体创建时设置,其他参数为存放数据参数,用于后面数据解析。
串口配置信息解析示例
IP 和 MAC 地址解析示例
透过以上的介绍,可以初步的掌握 AT Client 数据收发方式, 以上的功能都能够在新唐NuMaker-IoT-M487 开发板上实现。
NuMaker-IoT-M487 开发板透过AT命令,可连接支持多種无线通讯模块,並整合常用组件,内建多轴传感器,提供兼容 Arduino UNO 与 mikroBUS? 接口,不论是 GPIO、UART、ADC、PWM、SPI 或 I2C 等等都能连接;外挂 SPI Flash 及提供 microSD 卡插槽。
编辑:zzy 最后修改时间:2021-12-28