ESP8266、M26、BC35-G这些通信模组都是接收我们发送的AT指令,所以称为AT命令服务端,MCU 需要向模组主动发送AT指令,称为AT客户端,它们之间的通信架构如下:
为什么需要AT客户端框架
首先来看上图中的三个数据流:三条数据流都可以调用HAL库的API直接实现呀,为什么要设计一层AT框架呢?
在直接调用HAL库实现的时候,首先无法保证每次模组向 MCU 发送的数据都能完整的被接收,所以,我们需要设计一层串口驱动以保证数据在任何时候都可以被完整的接收进缓冲区。 其次,在接收数据之后,难点在于对数据的处理,判断AT指令发送的数据是不是正常的返回结果,从返回结果中提取有效信息等等,这些如果每条指令接收之后,都去写代码依次判断,代码量陡增暂且不说,编程的难度也是直接上升,所以,我们需要基于串口驱动,在保证数据被完整接收的前提之上,再根据AT命令通信的特点,设计一层AT框架,专门负责解析数据,提取有效信息。
发送AT指令:可以直接调用HAL库提供的API发送,AT框架并无太大作用;等待接收返回结果:可以直接调用HAL库的API使用中断方式接收;接收服务端主动发送的数据:可以直接调用HAL库的API使用中断方式接收;
总的来说框架分为三部分:
1. 初始化;
2.发送;
3.接收;
有了这三大件,接下来的事情就是填坑了,需要什么,就填什么.
我顺便用板子测试了几接口,都是很OK的。
测试效果如图:
需要代码的朋友可以下载附件:
热门资料
热门活动
全部回复 55
- 98 主题
- 328 帖子
- 1576 积分
身份:LV4 高级技术员
E币:1882
发消息
nb.zip ???? ???? ???? 还没看框架,会增添多少代码占用量,以及额外还有哪些开销呢?实际项目好用的话可以考虑考虑
>>资料:MC9S08DZ60中文数据册
他的点评
发表于 2021-3-22 11:50
详情
回复
SnailWillow 发表于 2021-3-20 18:14
nb.zip ???? ???? ???? 还没看框架,会增添多少代码占用量,以及额外还有哪些开销呢?实际项目好用的话可 ...
附件里有完整的代码~
电子阔少 发表于 2021-3-20 19:48
忍不住想看全文,,,
哈哈,阔少可以的