小小毛

  • 85 主题
  • 305 帖子
  • 1130 积分
  • 身份:LV4 高级技术员
  • 热心工程师 技术达人
  • E币:1992

【原创】一种AT Device 代码框架设计

2021-3-20 18:02:00 显示全部楼层
       在使用AT指令的时候,直接发送AT指令的一端称为客户端(AT Client),接收AT指令并返回响应的一端称为服务端(AT Server)。
ESP8266、M26、BC35-G这些通信模组都是接收我们发送的AT指令,所以称为AT命令服务端,MCU 需要向模组主动发送AT指令,称为AT客户端,它们之间的通信架构如下:
20200207120042758.png
为什么需要AT客户端框架
首先来看上图中的三个数据流:三条数据流都可以调用HAL库的API直接实现呀,为什么要设计一层AT框架呢?
      在直接调用HAL库实现的时候,首先无法保证每次模组向 MCU 发送的数据都能完整的被接收,所以,我们需要设计一层串口驱动以保证数据在任何时候都可以被完整的接收进缓冲区。  其次,在接收数据之后,难点在于对数据的处理,判断AT指令发送的数据是不是正常的返回结果,从返回结果中提取有效信息等等,这些如果每条指令接收之后,都去写代码依次判断,代码量陡增暂且不说,编程的难度也是直接上升,所以,我们需要基于串口驱动,在保证数据被完整接收的前提之上,再根据AT命令通信的特点,设计一层AT框架,专门负责解析数据,提取有效信息。
       发送AT指令:可以直接调用HAL库提供的API发送,AT框架并无太大作用;等待接收返回结果:可以直接调用HAL库的API使用中断方式接收;接收服务端主动发送的数据:可以直接调用HAL库的API使用中断方式接收;
总的来说框架分为三部分:
1. 初始化;
微信截图_20210320175119.png
2.发送;
微信截图_20210320175119.png
3.接收;
微信截图_20210320175346.png
有了这三大件,接下来的事情就是填坑了,需要什么,就填什么.
微信图片_20210320175529.png
我顺便用板子测试了几接口,都是很OK的。
测试效果如图:
微信图片_20210320175841.png
    微信图片_20210320175833.jpg
需要代码的朋友可以下载附件:
游客,如果您要查看本帖隐藏内容请回复



您需要登录后才可以评论 登录 | 立即注册

最新评论

楼层直达:

风雨欲来ds

  • 81 主题
  • 277 帖子
  • 1381 积分
  • 身份:版主
  • 论坛新秀
  • E币:1676
风雨欲来ds 2021-3-20 18:14:39 显示全部楼层
nb.zip ???? ???? ????  还没看框架,会增添多少代码占用量,以及额外还有哪些开销呢?实际项目好用的话可以考虑考虑

点评

附件里有完整的代码~  详情 回复 发表于 2021-3-22 11:50

电子阔少

  • 169 主题
  • 838 帖子
  • 1764 积分
  • 身份:版主
  • 论坛新秀 灌水之王
  • E币:2085
电子阔少 2021-3-20 19:48:50 显示全部楼层
忍不住想看全文,,,

点评

哈哈,阔少可以的  详情 回复 发表于 2021-3-22 11:50

小小毛

  • 85 主题
  • 305 帖子
  • 1130 积分
  • 身份:LV4 高级技术员
  • 热心工程师 技术达人
  • E币:1992
小小毛 2021-3-22 11:50:21 显示全部楼层
SnailWillow 发表于 2021-3-20 18:14
nb.zip ???? ???? ????  还没看框架,会增添多少代码占用量,以及额外还有哪些开销呢?实际项目好用的话可 ...

附件里有完整的代码~
广告

小小毛

  • 85 主题
  • 305 帖子
  • 1130 积分
  • 身份:LV4 高级技术员
  • 热心工程师 技术达人
  • E币:1992

hong6xing_127749005

  • 0 主题
  • 1 帖子
  • 215 积分
  • 身份:LV1 技术小白
  • E币:202

sf116_277634207

  • 0 主题
  • 1 帖子
  • 360 积分
  • 身份:LV2 初级技术员
  • E币:332

ribb01_424389566

  • 0 主题
  • 1 帖子
  • 205 积分
  • 身份:LV1 技术小白
  • E币:199
广告

xwdu2009

  • 0 主题
  • 4 帖子
  • 764 积分
  • 身份:LV3 中级技术员
  • E币:180

长利

  • 0 主题
  • 2 帖子
  • 382 积分
  • 身份:LV2 初级技术员
  • E币:92

青山常在

  • 0 主题
  • 1 帖子
  • 231 积分
  • 身份:LV1 技术小白
  • E币:213

mo_452593329

  • 0 主题
  • 19 帖子
  • 699 积分
  • 身份:LV3 中级技术员
  • E币:174
广告

尹帅18705167869

  • 0 主题
  • 1 帖子
  • 229 积分
  • 身份:LV1 技术小白
  • E币:216

好吃的老鼠

  • 0 主题
  • 2 帖子
  • 274 积分
  • 身份:LV1 技术小白
  • E币:224

microsys_486665368

  • 1 主题
  • 3 帖子
  • 447 积分
  • 身份:LV2 初级技术员
  • 论坛元老
  • E币:127
123下一页
快速回复
32
285
广告
关闭 热点推荐上一条 /3 下一条
快速回复 返回列表