NB-IOT开发|nbiot开发教程《一》AT指令类模组驱动解析

怎甘沉沦 提交于 2020-02-07 06:47:43
嵌入式开发中我们要时刻保持代码的高效与整洁

一、前言

        嵌入式开发中我们要时刻保持代码的高效与整洁。NBIOT的出现带动了物联网行业的火爆,物联网行业似乎总是离不开NBIOT。但是,我将NBIOT归为AT指令模组一类,这一类模组没有什么高深之处,也没有深度可言。但是想要很好的使用AT指令模组却是一件不简单的事情。想要很灵活的使用AT指令的模组需要用到状态机。

AT指令类模组包括:nb-iot模组,gprs模组,wifi模组,LoRa串口透传模组等等,设计很多,应用广泛。

二、AT指令类模组总结

       AT指令类模组的使用步骤可以分为:模组初始化和模组收发数据。我们翻开模组的手册可以发现,模组的初始化就是一个状态到另一个状态之间的切换,每一时刻该对象必须处于且只能处于其中一种状态中。

                 

三、状态机原理

      状态机的定义网上有很多,我主要说一下状态机的工作原理。

                                     

       状态机组成:状态(state),事件(event)和动作(action);

四、AT指令模组状态机工作原理

          前面说了状态机组成:状态(state),事件(event)和动作(action);

AT指令模组状态机原理:

状态:1.发送AT确认模组是否正常;2.配置模组参数;3.发送数据;(暂定三个状态)

动作:1.发送AT确认模组是否正常->通过串口发送AT\r\n,模组正常会返回OK,模组不正常返回非OK数据或者不返回。

        2.配置模组参数->通过串口发送AT+PARAM=10\r\n,模组正常会返回OK,模组不正常返回非OK数据或者不返回。

        3.发送数据->通过串口发送AT+SEND=2030559498473738292929394\r\n,模组正常会返回OK,模组不正常返回非OK数据或者不返回。

 事件:状态机进行状态切换需要事件驱动。

       事件1:状态强制切换事件(event_change_state),用于将状态机强制切换到某个指定状态或者下一状态。

       事件2:串口接收到完整数据包事件(event_uart_data),模组返回数据。

       事件3:超时事件(event_timeout),例如发送AT后模组在1s或者指定时间内没有返回任何数据。

五、STM32实现AT指令模组状态机条件

       STM32或者其他MCU实现该状态机需要用到

       1.串口可以接受不定长度的数据

       2.软件定时器。

      下面章节会详细介绍串口接收不定长度数据和AT指令类状态机实现。

       NB-IOT开发|nbiot开发教程《二》AT指令类模组驱动-STM32串口实现接收不定长度数据

       NB-IOT开发|nbiot开发教程《三》AT指令类模组驱动-STM32实现AT指令状态机

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!