当前位置:   article > 正文

ppp用于at指令吗_IoT通信模组教程04深度剖析LiteOS的AT框架

esp at ppp

1. AT客户端框架

在之前的三篇教程中,我们都是直接使用串口助手发送AT指令与模组通信,本篇教程就来探索一下如何使用 MCU 中的串口模组交互。

什么是AT客户端

在使用AT指令的时候,直接发送AT指令的一端称为客户端(AT Client),接收AT指令并返回响应的一端称为服务端(AT Server)。

ESP8266、M26、BC35-G这些通信模组都是接收我们发送的AT指令,所以称为AT命令服务端,MCU 需要向模组主动发送AT指令,称为AT客户端,它们之间的通信架构如下:

76a3c14c201c19b779e78217e8e021ab.png

为什么需要AT客户端框架

首先来看上图中的三个数据流:

  • 发送AT指令:可以直接调用HAL库提供的API发送,AT框架并无太大作用;

  • 等待接收返回结果:可以直接调用HAL库的API使用中断方式接收;

  • 接收服务端主动发送的数据:可以直接调用HAL库的API使用中断方式接收;

三条数据流都可以调用HAL库的API直接实现呀,为什么要设计一层AT框架呢?

在直接调用HAL库实现的时候,首先无法保证每次模组向 MCU 发送的数据都能完整的被接收,所以,我们需要设计一层串口驱动以保证数据在任何时候都可以被完整的接收进缓冲区。

其次,在接收数据之后,难点在于对数据的处理,判断AT指令发送的数据是不是正常的返回结果,从返回结果中提取有效信息等等,这些如果每条指令接收之后,都去写代码依次判断,代码量陡增暂且不说,编程的难度也是直接上升,所以,我们需要基于串口驱动,在保证数据被完整接收的前提之上,再根据AT命令通信的特点,设计一层AT框架,专门负责解析数据,提取有效信息。

2. 剖析串口驱动框架实现

串口驱动直接使用LiteOS提供的驱动框架实现,由于其特殊性,最底层的驱动框架实现文件放在了工程目录中,调用HAL库提供的API实现:

52ee4ff82cc9fe833bce3f3d7e5c82ae.png

uart_at.c文件中,主要完成了两个功能:

  • 串口初始化

  • 实现串口驱动框架的读写,并注册串口设备到系统中

2.1. 串口初始化

串口初始化函数的调用架构如图:

5ff5cf2c222548016c668e4171858a3d.png

其中默认初始化的是LPUART1,如果将其它串口作为AT指令的串口,修改这两行代码即可:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/906896
推荐阅读
相关标签
  

闽ICP备14008679号