一种在单片机中实现GSM模块控制的系统及方法技术方案

技术编号:15336903 阅读:130 留言:0更新日期:2017-05-16 22:31
本发明专利技术公开了一种在单片机中实现GSM模块控制的系统,包括GSM任务调度层、任务处理与撤销层、任务执行层、功能封装层、底层驱动层、以及全局变量层,其中,所述GSM任务调度层、所述任务处理与撤销层、所述任务执行层、所述功能封装层和所述底层驱动层依次连接,并均与所述全局变量层连接。本发明专利技术通过五层划分加一套全局变量层的软件架构,将GSM的任务划分成GSM模块的功能序列,每次调用任务执行函数,执行一个功能封装函数,该功能封装函数通过异步控制,对于短时间内有回复的AT命令,通过同步方式检测其回复,可以较迅速地做出响应,而对于回复时间较长的AT命令,通过异步方式检测其回复,减少了回复的等待时间,降低了系统功耗。

【技术实现步骤摘要】
一种在单片机中实现GSM模块控制的系统及方法
本专利技术涉及无线通信领域,尤其涉及在单片机上实现GSM无线通信模块的低功耗控制的嵌入式系统及其工作方法,更具体地,涉及以嵌入式软件架构实现GSM模块的低功耗控制。
技术介绍
全球移动通信系统GSM(GlobalSystemforMobileCommunication)技术广为大众所熟知,其中的核心模块是GSM无线通信模块,其指的是符合GSM规范的,具有发送短信、语音通话、GPRS数据传输等基于GSM网络的所有基本功能的软件模块,又简称为GSM模块。市面上大部分智能硬件产品都附带有通信模块,根据其需求,可能选择WIFI模块、蓝牙模块、GSM模块。其中,GSM模块网络覆盖面广,应用限制小,是智能硬件上最受欢迎的通信方案之一。一般的智能硬件开发,都是通过一个单片机来控制一个通信模块以及其余相关外设,其中,通信模块是最为复杂的部分,其控制逻辑是否完善直接影响着单片机的稳定性、功耗、功能性,进而影响到最终的智能硬件产品的价值。现有的通过单片机控制通信模块的软件架构(以下简称软件架构),大致有两种:(1)数据透传型:将GSM模块配置成“数据透传模式”,在整个系统的运行周期中,GSM模块都处于开启状态。这一方式编程简单,无需进行复杂的软件设计,但是能够使用的GSM模块功能局限于GPRS数据传输。同时GSM模块保持开启,导致电路功耗较大,不适合于对功耗有严格要求的产品。(2)同步控制型:使用AT指令对GSM模块进行控制,发出一条AT指令后,程序阻塞,直到GSM模块返回结果。为了防止程序锁死,一般设置超时时间,返回时间若超过超时时间,则认为命令失败。这一方式编程比较简单,但是存在一定缺陷:耗时较长的AT指令其返回时间不固定,如果超时时间设置过短,则命令失败率高,如果设置过长,则系统阻塞时间过长,影响系统处理速度。此外,无论如何设置超时时间,系统都存在一定阻塞,导致用户体验下降。这些现有技术中存在如下缺点。在数据透传型架构中,GSM模块开启时间过长,因而功耗较高,此外,由于GSM模块持续开启,因而无法使用除GPRS数据传输以外的功能。在同步控制型架构中,对长命令的超时时间难以进行合适的设置,过高则系统长时间阻塞,过低则命令成功率低,而且系统阻塞的存在必定导致用户体验的下降,进一步地,在同步控制逻辑中,主程序代码和GSM模块控制代码耦合程度较高,这导致一旦更换GSM模块,主程序代码必须相应修改,大大提高了开发人员的工作量。
技术实现思路
本专利技术旨在解决上述现有技术中存在的问题,本专利技术的目的是通过以下技术方案实现的。本专利技术提供一种在单片机中实现GSM模块控制的方法,其特征在于,所述方法包括:步骤S1:检测是否接收到模块启用命令,如果未接收到,则返回到其余业务逻辑,继续等待,如果接收到,则判断要执行的任务是否是GSM任务,如果不是,则关闭GSM模块,如果是,则进入步骤S2;步骤S2:执行GSM任务调度;步骤S3:GSM任务调度结束后,返回其余业务逻辑,继续等待新的命令。进一步地,步骤S2中GSM任务调度的执行方法包括:步骤S201:由依据本专利技术的系统的GSM任务调度层判断任务是否在进行中,如果任务正在进行中,则进入任务执行处理环节,如果任务不在进行中,则从任务队列中取出一条任务,并进入任务执行处理环节;步骤S202:在任务执行处理环节,判断模块是否出错,如果没有出错,则表示执行成功,退出当前任务;如果出错,则将错误计数器中的数值加1,并进入步骤S203;步骤S203:判断错误计数器的数值是否超过预先设定的阈值,如果没有超过,则对GSM状态机进行校正,并退出当前任务;如果超过阈值,则执行任务撤销操作S204;步骤S204:执行模块检测,如果检测不通过,则停用该模块,并退出当前任务;如果检测通过,则清空该错误计数器的值,并退出当前任务。进一步地,所述任务执行处理环节包括:步骤S201-1:根据异步等待标志位,判断是否正在等待异步回复,如果不是,则进入步骤S201-2,如果是,则进入步骤S201-3;步骤S201-2:判断当前正在执行哪项任务,根据任务编号调用任务执行函数,如果任务执行函数出错,则设置GSM状态变量中的模块错误位,并退出任务执行处理环节;如果任务执行函数没有出错,则在执行完毕后退出任务执行处理环节;步骤S201-3:检测是否接收到异步回复,如果异步回复超时或失败,则设置GSM状态变量中的模块错误位,并退出任务执行处理环节;如果没有检测到异步回复超时或失败,则继续进行异步回复成功检测,如果该异步回复成功,则重置所述异步等待标志位,并退出任务执行处理环节;如果仍然没有检测到异步回复成功,则直接退出任务执行处理环节。进一步地,任务执行函数的运行方法包括:步骤S201-2-a:根据任务内容判断当前模块的状态,确定需要执行哪项功能封装函数;步骤S201-2-b:根据所确定的功能封装函数编号,调用相应功能封装函数;步骤S201-2-c:判断功能封装函数是否出错,如果出错,则返回“错误”,否则返回“正常”。进一步地,其中所述功能封装函数将一条或多条AT命令组合,进行连续执行,对于短时间内有回复的AT命令,以同步方式执行;对于回复时间长的AT命令,将该AT命令放在功能封装函数的最后,并且设置等待长回复标志位。进一步地,功能封装函数的执行方法包括:步骤ss1:执行短时间内有回复的AT命令,并判断是否执行成功,如果不成功,返回“失败”;如果执行成功,则设置GSM状态变量中的GSM模块状态机,并继续执行后续AT命令;步骤ss2:执行长时间回复的AT命令,设置等待长回复标志位,并设置GSM状态变量中的GSM模块状态机;步骤ss3:AT命令均执行完成后,返回“成功”。进一步地,将特定命令保存在长时间AT命令列表中,系统在处理待执行AT命令时,查询该长时间AT命令列表,如果待执行AT命令包括在该列表中,则该待执行AT命令属于长时间回复的AT命令,如果不包括在该列表中,则属于短时间内有回复的AT命令。本专利技术还提供一种在单片机中实现GSM模块控制的系统,该系统包括:GSM任务调度层,用于进行GSM任务切换,并调用任务处理函数和任务撤销函数,如果检测到模块错误,则进行GSM状态机校正;任务处理与撤销层,用于根据当前任务调用相应的任务处理函数;当需要撤销任务时,调用相应的任务撤销函数,根据当前任务进行相应的撤销工作;任务执行层,包括至少一个任务执行函数,每一个GSM任务对应于一个任务执行函数,用于根据具体的业务逻辑与模块当前的状态,调用相应的功能函数;功能封装层,用于将一条或多条AT指令打包,控制GSM模块实现特定功能;底层驱动层,用于执行AT命令的发送以及回复的接收和检测;所述系统还包括全局变量层,其包括GSM状态变量,用于在所述GSM任务调度层、所述任务处理与撤销层、所述任务执行层、所述功能封装层和所述底层驱动层之间交换信息;其中,所述GSM任务调度层、所述任务处理与撤销层、所述任务执行层、所述功能封装层和所述底层驱动层依次连接,并均与所述全局变量层连接。进一步地,所述GSM状态变量中保存有:GSM模块状态机、GSM任务队列、当前执行的任务、当前执行的功能函数、接收缓存和发送缓存、模块错误位,在本文档来自技高网
...
一种在单片机中实现GSM模块控制的系统及方法

【技术保护点】
一种在单片机中实现GSM模块控制的方法,其特征在于,所述方法包括:步骤S1:检测是否接收到模块启用命令,如果未接收到,则返回到其余业务逻辑,继续等待,如果接收到,则判断要执行的任务是否是GSM任务,如果不是,则关闭GSM模块,如果是,则进入步骤S2;步骤S2:执行GSM任务调度;步骤S3:GSM任务调度结束后,返回其余业务逻辑,继续等待新的命令。

【技术特征摘要】
1.一种在单片机中实现GSM模块控制的方法,其特征在于,所述方法包括:步骤S1:检测是否接收到模块启用命令,如果未接收到,则返回到其余业务逻辑,继续等待,如果接收到,则判断要执行的任务是否是GSM任务,如果不是,则关闭GSM模块,如果是,则进入步骤S2;步骤S2:执行GSM任务调度;步骤S3:GSM任务调度结束后,返回其余业务逻辑,继续等待新的命令。2.如权利要求1所述的方法,其中步骤S2中GSM任务调度的执行方法包括:步骤S201:由依据本发明的系统的GSM任务调度层判断任务是否在进行中,如果任务正在进行中,则进入任务执行处理环节,如果任务不在进行中,则从任务队列中取出一条任务,并进入任务执行处理环节;步骤S202:在任务执行处理环节,判断模块是否出错,如果没有出错,则表示执行成功,退出当前任务;如果出错,则将错误计数器中的数值加1,并进入步骤S203;步骤S203:判断错误计数器的数值是否超过预先设定的阈值,如果没有超过,则对GSM状态机进行校正,并退出当前任务;如果超过阈值,则执行任务撤销操作S204;步骤S204:执行模块检测,如果检测不通过,则停用该模块,并退出当前任务;如果检测通过,则清空该错误计数器的值,并退出当前任务。3.如权利要求2所述的方法,其中所述任务执行处理环节包括:步骤S201-1:根据异步等待标志位,判断是否正在等待异步回复,如果不是,则进入步骤S201-2,如果是,则进入步骤S201-3;步骤S201-2:判断当前正在执行哪项任务,根据任务编号调用任务执行函数,如果任务执行函数出错,则设置GSM状态变量中的模块错误位,并退出任务执行处理环节;如果任务执行函数没有出错,则在执行完毕后退出任务执行处理环节;步骤S201-3:检测是否接收到异步回复,如果异步回复超时或失败,则设置GSM状态变量中的模块错误位,并退出任务执行处理环节;如果没有检测到异步回复超时或失败,则继续进行异步回复成功检测,如果该异步回复成功,则重置所述异步等待标志位,并退出任务执行处理环节;如果仍然没有检测到异步回复成功,则直接退出任务执行处理环节。4.如权利要求3所述的方法,其中任务执行函数的运行方法包括:步骤S201-2-a:根据任务内容判断当前模块的状态,确定需要执行哪项功能封装函数;步骤S201-2-b:根据所确定的功能封装函数编号,调用相应功能封装函数;步骤S201-2-c:判断功能封装函数是否出错,如果出错,则返回“错误”,否则返回“正常”。5.如权利要求4所述的方法,其中所述功能封装函数将一条或多条AT命令组合,进行连续执行,对于短时间内...

【专利技术属性】
技术研发人员:颜昊霖牟荣增王宏飞
申请(专利权)人:中科院微电子研究所昆山分所
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1