博客
关于我
RT-Thread学习笔记【AT组件】
阅读量:606 次
发布时间:2019-03-12

本文共 2117 字,大约阅读时间需要 7 分钟。

AT指令和AT组件是嵌入式开发中非常重要的技术工具,尤其在串口通信和设备控制方面具有广泛应用。本文将从AT指令的历史、应用、AT组件的功能以及服务器和客户端的实现细节等方面进行详细介绍。

AT指令的历史与演变

AT指令最初是由 Hayes 公司发明的,用来控制拨号调制解调器(MODEM)。随着网络带宽的提升,MODEM逐渐退出了主流市场,但AT指令却得到了进一步的发展和标准化。特别是在GSM网络中,AT指令被整合到GSM 07.05和GSM 07.07标准中,并扩展到GPRS控制和3G模块等领域。如今,AT指令已成为嵌入式开发中不可或缺的协议接口工具。

AT指令的应用与特点

AT指令的核心优势在于其作为一种标准化的协议接口,能够通过简单的命令和硬件设计实现多种操作。它广泛应用于串口通信中,通过UART等接口实现设备间的数据传输和控制。AT指令的命令结构分为前缀、主体和结束符三部分,前缀为“AT”,主体包含命令、参数和可能的数据,结束符通常为\r\n。

AT组件的功能与实现

AT组件基于RT-Thread系统,提供了AT服务器和AT客户端两种功能模式。AT服务器负责接收来自AT客户端的命令并返回响应数据,而AT客户端则负责发送命令并处理服务器的响应。

AT服务器的配置与使用

在使用AT服务器之前,需要在配置文件rtconfig.h中定义以下宏定义:

  • RT_USING_AT:开启AT组件功能。
  • AT_USING_SERVER:开启AT服务器功能。
  • AT_SERVER_DEVICE:定义使用的串口设备名称,例如uart3。
  • AT_SERVER_RECV_BUFF_LEN:设置接收数据的最大长度。
  • AT_CMD_END_MARK_CRLF、AT_CMD_END_MARK_CR和AT_CMD_END_MARK_LF:根据不同设备的结束符选择对应的宏定义。

AT服务器初始化时,需要调用at_server_init()函数。该函数会创建一个用于接收和解析数据的线程。此外,AT服务器支持自定义命令添加,用户可以通过提供的API定义新的AT命令及其对应的功能实现。

AT客户端的实现

AT客户端的配置同样需要在rtconfig.h中定义相关宏定义:

  • RT_USING_AT:开启AT组件功能。
  • AT_USING_CLIENT:开启AT客户端功能。
  • AT_CLIENT_NUM_MAX:设置最大同时支持的客户端数量。
  • AT_USING_SOCKET:开启标准BSD socket API支持。
  • AT_USING_CLI:开启命令行交互模式。

AT客户端初始化时,需要调用at_client_init()函数,完成设备初始化和线程调配。AT客户端支持多种数据传输方式,目前最常用的是UART串口通讯。通过AT指令,客户端可以实现设备控制、数据收发以及网络通信。

AT服务器与客户端的数据处理

AT服务器负责接收并解析AT客户端发送的命令,返回相应的响应数据。AT客户端则负责发送命令并处理服务器返回的响应数据。两者之间通过串口通讯实现数据传输,支持多种数据格式和通信方式。

响应数据的处理

AT客户端在发送命令后,通过响应结构体接收服务器返回的数据。响应结构体包含数据缓冲区、最大接收长度、需要接收的数据行数以及响应超时设置。AT客户端支持自定义响应数据的解析,能够根据需求处理不同类型的响应数据。

URC数据的处理

URC数据是AT服务器主动发送给AT客户端的数据,通常用于通知设备某些重要事件,如WiFi断开、TCP接收数据等。AT客户端需要自定义URC数据的处理方式,包括匹配数据的前缀和后缀,并定义相应的执行函数。

AT组件的资源占用与性能

AT组件设计非常高效,资源占用极小。无论是AT服务器还是AT客户端,其所占用的ROM和RAM资源都非常有限:

  • AT服务器:ROM 4.6K,RAM 2.0K。
  • AT客户端:ROM 4.6K,RAM 2.0K。
  • AT CLI 模式:ROM 1.5K,RAM几乎不使用。

AT组件的主要功能

AT服务器功能

  • 支持基础AT命令,如AT、ATZ、AT+RST、ATE等。
  • 提供简单的用户自定义命令添加功能。
  • 支持命令行交互调试模式(CLI)。

AT客户端功能

  • 完整支持URC数据处理。
  • 支持自定义响应数据的解析。
  • 提供标准BSD socket API,方便设备联网和数据通讯。
  • 支持多客户端同时运行。

移植与开发

AT组件的源码中提供了移植接口,用户可以根据需求自定义实现。例如,设备重启函数at_port_reset()用于实现AT+RST命令,设备恢复出厂设置函数at_port_factory_reset()用于实现ATZ指令。这些接口可以通过gcc工具链或Keil、IAR等开发工具链进行移植和集成。

总结

AT指令和AT组件是嵌入式开发中不可或缺的工具,尤其在串口通信和设备控制方面具有重要作用。AT组件通过AT服务器和AT客户端提供了灵活的命令控制和数据处理能力,极大地简化了设备间的通信和控制流程。通过合理配置和开发,AT组件能够在多种嵌入式系统中实现高效、可靠的功能。

转载地址:http://fbgxz.baihongyu.com/

你可能感兴趣的文章
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
查看>>
python列表前几个_python之列表
查看>>
python列表元组
查看>>