博客
关于我
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_CRLFAT_CMD_END_MARK_CRAT_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命令,如ATATZAT+RSTATE等。
  • 提供简单的用户自定义命令添加功能。
  • 支持命令行交互调试模式(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/

你可能感兴趣的文章
Network Sniffer and Connection Analyzer
查看>>
NetworkX系列教程(11)-graph和其他数据格式转换
查看>>
Networkx读取军械调查-ITN综合传输网络?/读取GML文件
查看>>
Net与Flex入门
查看>>
net包之IPConn
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS网络文件系统
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>
ng 指令的自定义、使用
查看>>
Nginx
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + Spring Boot 实现负载均衡
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx - Header详解
查看>>
Nginx Location配置总结
查看>>
Nginx Lua install
查看>>
Nginx upstream性能优化
查看>>