关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于STM32的SMS短消息收发系统

基于STM32的SMS短消息收发系统

作者:时间:2012-12-22来源:网络收藏

摘要:短消息服务作为GSM网络提供的一种基本服务,已成为诸多领域远程控制的一种通信手段。讨论一类通用的系统的实现方法,主要内容包含短消息调度和短消息处理控制机制。特别对微处理器下调度的实现过程与短消息处理进行了详细讨论。通过对超时时间的控制和不同条件的切换,使得对短消息的收发处理动作在一个时间段内显示出并发特性。
关键词:

短消息服务(Short Message Senice)作为GSM网络提供给用户的一种基本的数字业务,已成为诸多领域远程监控的一种通信手段。在很多应用场合中都通过PC机直接控制短消息收发模块完成系统的数据采集或远程信息传输,但对于偏远地区、架设通信线路比较困难的地方,需要一种方便携带的设备控制短消息收发模块。系统通过在上完成对短消息模块的控制,提出了一种嵌入式短消息收发系统的实现方法。
本文讨论一类通用的SMS短消息收发系统的实现方法,包含短消息调度和SMS短消息处理控制器的实现机制,特别对STM32嵌入式微处理器下短消息收发调度的实现过程和短消息处理进行了详细讨论。在嵌入式系统中,时间和并行性(concurrency)是必不可少的。通过对超时时间的控制和不同条件的切换,使得对短消息的收发处理在较小时间段内显示出并发特性。能够处理多条短消息同时控制的情况,具有良好的通用性。

1 系统的功能与结构
SMS是GSM系统提供给广大移动用户的一种双向通信、具有一定的交互能力、占用GSM网络的信令信道的数字业务。SMS提供了在GSM移动站台(MS)与一个短消息实体(SME)之间通过服务中心(SC)传送短消息的方法。SC提供了在MS与SME之间消息传送的相互联系和转播的功能。SMS采用存储转发模式,短消息被发送出去之后,不是直接地发送给接收方,而是先存储在短消息服务中心,然后再由服务中心将其转发给接收方。如果接收方当时关机或不在服务区内,服务中心会自动保存该短消息,捧队并尝试再次发送给接收方。由于短消息使用了服务中心的这种存储和转发机制,因此SMS具有较高的可靠性。这也意味着GSM模块收发SMS的响应速度受运营商服务中心的限制。因此,要提高响应速度,需要一个持续在线的终端一直运行。
系统在两个短消息实体间增加本地SMSC(短消息服务中心),通过SMSC完成短消息的解析并执行相应的动作、控制、无线通信功能。确保GSM终端模块持续运行,以提高响应速度。
系统由TC35i GSM模块和运行在STM32微处理器上的短消息处理控制机两部分组成。TC35i负责短消息的收发。短消息处理控制机用来向GSM模块发送或读取TC35i收到的短消息,并执行相应的动作和控制。二者之间通过RS232串口实现数据交换。用户可以利用手机通过GSM网络和系统进行交互完成控制功能。

2 STM32片上资源的分配和使用
STM32是意法半导体基于Cortex—M3的32位嵌入式处理器,Cortex—M3核性价比高,价格低,可以与8位51核单片机竞争。
处理器和GSM模块之间通过RS232串口实现数据交换,TC35i集成了标准的RS232接口,通过MAX232芯片做电平转换,与处理器USART接口进行通信。因此处理器需要提供两个串行通信接口,其中一个串口用于和GSM模块进行通信,另一个串口用于和上位机软件交换数据或调试。在处理器选型时需要考虑这个问题,而STM32全系列微处理器均能满足这个要求。系统选用的处理器型号为F103RBT6,该产品系列带有128k片内FLASH,20kRAM,无需外扩存储器即可以满足系统对于多条控制短消息同时处理耗费内存空间的需要。STM32F103RB带有3个USART接口,可以满足系统对串口资源的需求。芯片带有4个独立定时器,1个RTC实时时钟,系统只用到其中2路:1路用于产生较准确的系统延时,用于一般延时定时和状态切换超时判断。一路用于通过定时轮询方式读取短消息。GSM模块短消息收发和运行状态的监测通过USART的中断处理程序实现。

3 SMS短消息控制状态机的实现
由于系统旨在完成一类通用的SMS短消息控制机实现方法,因此在系统实现时从逻辑上将SMS提供方和使用方剥离,将发送子系统和接收子系统分离。这通过两个全局队列实现,发送队列和接收队列。
定义一个结构体类型:
a.JPG
作为短消息的基本数据单元。
并定义SMS_PDU类型的队列,分别作为发送队列和接收队列,即,SMS_PDU类型的结构体数组。如下:
SMS_PDU m_QuerySend[MAX_SMS_SEND];
SMS_PDU m_QueryRecv[MAX_SMS_RECV];
以上定义均为全局队列。对全局变量的操作会涉及到并发和多线程访问技术,本系统考虑到实时性采用前后台系统实现方式,通过STM32多路定时和中断功能来完成多线程的模拟,主程序调用一个无限循环的控制器处理函数,在控制器循环中调用相应的驱动函数完成相应的功能。同时中断系统作为前台,遇到外部触发条件则立即构造短消息并加入到输出队列中。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭