kaiyun官方注册
您所在的位置: 首页> 模拟设计> 设计应用> 基于MTK平台的短信控制远程终端实现方案
基于MTK平台的短信控制远程终端实现方案
摘要:随着信息社会的快速发展,手机已经成为现代生活中人们不可缺少的工具。与此同时,手机的快速普及和手机功能的丰富使得仅将其运用于生活和工作中似乎并不能充分发挥它的全部功能。
Abstract:
Key words :

随着信息社会的快速发展,手机已经成为现代生活中人们不可缺少的工具。与此同时,手机的快速普及和手机功能的丰富使得仅将其运用于生活和工作中似乎并不能充分发挥它的全部功能。比如,现阶段大部分手机都具有的拍照功能,完全可以将其应用于监控系统等工业控制领域;同样,目前手机都具有的短信通信功能,充分发挥其廉价和方便的特性,将其运用于智能家居领域,只需要发送一条对应的短信指令便能控制家中对应的家用电器。本文结合手机和短信的各自特性,通过手机发送短信控制基于MTK平台的远程终端,在远程终端接上负载(比如电饭煲、摄像头),远程终端在接收到固定指令的短信后控制外接负载的开断,便可实现短信控制基于MTK平台的远程终端。在本文所介绍的系统中,只需要发送一条短信内容为“on”的指令,便可打开远程终端的外接负载,操作完成后MTK远程终端根据控制情况自动回复一条操作是否成功的信息;发送一条短信内容为“off”的指令便可关断远程终端的外接负载,操作完成后MTK远程终端根据控制情况自动回复一条操作是否成功的信息;若接收到其他指令,则不对远程终端的外接负载采取任何操作,也不回复信息给客户。

  1 MTK平台介绍

  1.1 MTK硬件平台

  MTK(MediaTek)是台湾联发科技多媒体芯片提供商的简称,其生产的手机基带芯片有MT6205、MT6217、MT6218、MT6219、MT6235等。在MTK手机方案家族中,内部集成了ARM7核和DSP核的MT6225以其优越的无线通信特性成为目前使用最广泛、最稳定、最成熟的手机开发平台,从2005年推出到现在,出货芯片数量可以亿来计算。

  1.2 MTK软件架构

  MTK软件架构和硬件相结合作为远程终端的开发平台,软件架构对于开发尤为重要。图1所示为MTK平台软件整体架构。

MTK平台软件构架


图1 MTK平台软件构架

  MTK的软件架构用到了层的概念,它将各功能模块分为不同的层,每个层实现其各自的功能特性。整个软件构架主要由Remote MMI、MMI、L4、Drivers和PS/L1几个部分构成。Remote MMI即RMI,如PC端,可使用AT命令通过串口与协议栈通信;L4为MMI/AT与协议栈之间的适配层;Drivers包含设备及外围设备的各种驱动;PS/L1中的L1(Layer1)为协议栈的最底层,它是GSM的物理层,直接处理信号数据;另外,协议栈里面的L2和L3包含大量的GSM/GPRS需求,而且提供一个优秀的GGSM/GPRS平台给应用程序;MMI即Man Machine Interface,通常称为人机界面,它分为文字界面和图形界面两种。MMI包括用户的接口构架、应用以及与协议栈的通信,MMI的构架如图2所示。

MMI架构图


图2 MMI架构图

  由图2可知,MMI主要由Application Layer、Framework和UI Layer三个部分组成。

  ① Application Layer: 主要包括用户自己定义的程序,用来实现各种功能。如果用户需要在MTK的平台上添加一些功能,这些功能的程序就是在这个地方添加。

  ② Framework:由事件处理、历史机制、OSL、文件系统和NVRAM组成,它接收来自所有任务的时间,帮助应用程序控制屏幕,并提供给应用程序各种系统调用接口。

  ③ UI Layer:包含Category Screens、UI Elements、Themes、Fonts、Image和Graphics Library,它为应用程序提供界面显示的相关功能。

  本系统的远程终端的实现选用的手机基带芯片为MTK6225,选用它的主要原因是其具有成熟的硬件基础和软件架构以及高性价比。

  2 系统框架

  图3为基于MTK平台的短信控制远程终端的总体框架。系统由客户端、远程终端、负载3个模块组成。客户端是任何一部具有短信通信功能的手机;远程终端为以MTK6225为主控芯片的MTK平台,利用MTK平台的短信模块功能及其闲置的GPIO口实现对负载(需要远程控制的对象)的控制。

基于MTK平台的短信控制远程终端的总体框架


图3 基于MTK平台的短信控制远程终端的总体框架

  3 系统实现

  3.1 MTK6225 GPIO口的驱动

  GPIO[3](General Purpose Input Output,通用输入输出端口)。MTK6225提供了53个通用输入/输出口和4个通用输出口。MTK通过对I/O口的复用来减少I/O端口的个数,每个GPIO口有4种工作模式,即模式0~3。每个GPIO口都可通过软件配置为输入、输出或特定用途的双向口。其被用作输入使用时,GPIO口可作为中断源。本文选择GPIO口GPIO45的模式0,即配置端口为输入/输出模式。在MTK6225的平台中,对GPIO的操作有以下3步:

  ① 确定要操作的引脚是在GPIO模式。通过函数GPIO_ModeSetup(kal_uint16 pin,kal_uint16 conf_data)设置。其中pin为端口号,conf_data为模式的选择。本文试验中对GPIO模式的设置如下。GPIO_ModeSetup((kal_uint16)GPIO_port_45, (kal_uint16)0)

  ② 配置该引脚为输入/输出。通过函数void GPIO_InitIO(char direction,char port)设置。其中direction为输入INPUT(0)或者输出OUTPUT(1),port为端口号。本文试验中对GPIO口的输入/输出设置如下,设置GPIO45为输出,即可通过它的输出信息来控制外接负载。GPIO_InitIO((char)1, (char)GPIO_PORT_45)

  ③ 读写数据。通过函数void GPIO_WriteIO(kal_char data,kal_char port)设置,其中data为1(高电平)或者0(低电平),port为端口号。本文试验中对GPIO口引脚写数据操作如下。GPIO45输出高电平,即可打开外接负载;GPIO34输出低电平,即可关断外接负载。GPIO_WriteIO((char)1,(char)GPIO_PORT_45)GPIO_WriteIO((char)0,(char)GPIO_PORT_34)

  在本文所做试验中,对GPIO初始化成功并对GPIO端口读写数据完成后,需要通过函数GPIO_ReadIO(char port)来读取GPIO端口的状态,通过读取其端口状态来和写到GPIO口的数据相比较,若匹配则说明控制成功,反之则失败,其中port为端口号。

  3.2 MTK的短信模块

  3.2.1 MTK短信接收的流程

  从函数InitializeAll()中初始化开始,到信息显示在MTK的手机界面,提示用户读取信息的过程中经历中断、协议处理、MMI层收到新短信,更新短信计数器,转换短信数据,并压入未读短信队列等操作。

  3.2.2 MTK发送短信息的核心函数

  相比于日常生活中短信通信不同的是此平台是根据对远程终端的控制情况而自动回复的。自动回复信息需要知道发送短信到MTK远程终端的手机的号码,还需要自填充自动回复的短信内容。void mmi_frm_sms_send_sms_seg(void)为MTK6225发送短信的核心函数,自动回复是在此函数的基础上将发送短信到MTK终端的手机号码作为该函数的形参,对发送内容的自填充也在该函数中定义:char * content="the bulb turn on successfully";(此处即为根据接收到的指令对外接负载采取操作后,自动回复信息的内容,根据操作结果不同自填充短信内容即不同)。

  3.2.3MTK接收短信息数据结构体

  MTK将收到的短信息的相关参数打包成结构体,以下为MTK关于接收到短信内容相关信息的结构体。MTK平台每一条短信的内容分成若干段,一个字节为一段。其中no_msg_data为接收到的段数,数组msg_data[1]接收到的信息的第一段数据,以接收到的第一段的数据为索引,解析接收到内容后通过判断远程终端接收到的短信内容来对远程终端外接负载采取相应操作。

  typedef struct{

  ……

  U16 no_msg_data;

  U8 msg_data[1];

  } mmi_frm_sms_deliver_msg_struct;

  3.3 MTK远程终端的控制程序流程

  基于MTK平台的远程控制终端在接收到控制信息后,MTK自动回复和对负载采取操作的代码在函数void mmi_frm_sms_new_sms_ind(void *inMsg)中被调用。此函数的功能是将L4层的数据转换成MMI层的数据,并对接收到的数据进行处理,直至显示到远程终端界面上。将MTK作为远程终端,不需要将接收到的控制负载的信息显示在界面上,所以为了屏蔽发送来的信息显示在终端界面,应把接收到的短信添加到短信记录中的函数CHISTIncRecvdSMS注释掉。装有SIM卡的远程终端经常收到如10086之类的服务信息,为了屏蔽这些不必要的信息,对发送信息进来的号码长度进行判断,加上中国的电话区位号86,则若为手机发送一共为13位。由于MTK的代码是分模块的,当在短信模块中调用其他模块的函数时,就需要在这个函数被调用的文件里面加上相应的头文件。图4为条件判断和对打开/关断负载的函数的调用以及对短信自动回复的函数的调用情况。

远程终端控制负载及自动回复流程


图4 远程终端控制负载及自动回复流程

  3.4 试验结果

  将一支发光二极管作为远程控制终端的外接负载,正极接MTK6225的GPIO45,负极接MTK6225的GND,GPIO45默认为低电平,刚接上时发光二极管处于熄灭状态。用手机发送短信内容为“on”的指令到基于MTK平台的远程控制终端时,发光二极管亮,远程控制终端返回信息“ the bulb turn on successfully”;用手机发送短信内容为“off”的指令到基于MTK平台的远程控制终端时,发光二极管熄灭,远程控制终端返回信息“ the bulb turn off successfully”。发送其他内容的短信指令到远程控制终端时,发光二极管没有响应且不返回任何信息。试验结果表明,基于MTK的短信控制远程终端的方案切实可行。

  结语

  充分发挥MTK平台高性价比的优势, 提出将MTK手机平台应用于控制领域,设计了基于MTK平台的短信控制远程终端的实现方案,并通过试验验证了该方案的可行性。该方案具有成本低、开发周期短、组网方便、易于扩展等优点,为通信和控制相关领域的研究和开发人员提供了参考。

此内容为AET网站原创,未经授权禁止转载。
Baidu
map