2.3 EM310模块电路
EM310是由华为公司设计的GSM模块。它的输入电压设计在第1节中已有介绍。这里需要注意2点:
①串口引脚的连接。EM310模块采用串口与LPC1227进行通信,EM310串口引脚的连接比较特殊。RXD对应终端设备的RXD口,TXD对应终端设备的TXD口。因此LPC1227与EM310相连时引脚分配如下:PIO0_1/RXD0对应RXD,PIO0_2/TXD0对应TXD。
②本次设计中虽然不需要使用EM310进行语音通话,但建议EM310模块的RING引脚与LPC1227的GPIO引脚相连。因为EM310模块在收到短信和语音呼叫时都会在RING引脚输出低电平,LPC1227通过中断可以及时计算出RING引脚低电平持续时间,从而尽快地对短信或来电进行处理,比采用软件查询方式更具有实时性。
3 软件设计
网关的软件系统主要由ZigBee协调器程序和嵌入式处理器程序构成。
3.1 ZigBee协调器程序
ZigBee标准定义ZigBee网络中存在3种类型的设备:协调器、路由器、终端设备。其中协调器负责建立ZigBee网络,因此网关中的ZigBee模块需要在程序中配置为协调器类型。
协调器程序采用最新的TI公司推出的ZigBee协议栈2007版,该协议栈可很好地支持网络的自组织和自愈合。相对于目前使用较多的ZigBe e协议栈2006版,07版协议栈在06版协议栈基础上主要增加了支持多密钥高安全性、大型网络和分割传输等特性。
协调器程序在已有协议栈基础上,主要还需增加如下部分:
①2007版ZigBee协议栈中包含了CC2591控制程序,为了使用CC2591,在协调器程序中需要开启“halboard_cfg.h”文件中的HAL_PA_LNA编译选项。
②增加串口处理任务,实现与网关处理器的串口通信。
③按照自定义的数据传输帧格式解析、处理接收到的数据,按照自定义的数据传输帧格式构造待发送的数据。
④定期向全网广播包含RTC信息的数据包。定期广播该数据包对于全网节点来说有两种作用。一是该数据包可实现全网节点RTC同步;二是网络中的其他节点可通过定期检查有无收到该数据包判断协调器有无出现异常。此设计很适合包含路由器、需要RTC同步的大型网络。
⑤增加CC2530芯片的看门狗初始化以及定期喂狗程序。
3.2 嵌入式处理器程序
为了实现网关的低成本、高实时性设计,本次网关不采用任何嵌入式操作系统。整个软件系统采用前后台的编程思想,后台ISR(中断服务程序)和前台主程序循环之间的数据交换可以通过事件标志和数据缓存区来实现。
由于EM310模块内置了TCP/IP协议,因此网关的MCU向该模块直接发送
AT指令即可与目标上位机建立TCP/IP连接,实现数据的远程无线传输;通过发送
AT指令还可收发短信、挂断语音通话。为了增强网关的灵活性以及降低运行成本,网关采用GPRS方式与上位机进行通信,同时保留处理短信功能,实现短信对网关的配置与操控。比如遇到目标上位机IP地址变动的情况时,可通过给网关发送短信,配置网关最新目标IP地址然后再与目标主机建立GPRS连接。
对于该部分程序,需要注意以下几点:
①LPC1227具备在应用中编程的功能,对于需要掉电保存的信息可无须外扩Flash芯片而直接通过执行程序将特定信息保存到LPC1227芯片中。
②ZigBee协调器中RAM空间很有限,而且自身的Flash擦除次数也有限(CC2530支持约2万次的擦写,而LPC1227可支持约10万次的擦写)。考虑到保存ZigBee网络中大量节点的16位网络地址需要很大的空间,而协调器中RAM空间明显不够用,如果保存到协调器的Flash中又会影响CC2530芯片的使用寿命,因此采用LPC1227中的RAM空间来保存节点的网络地址。毕竟LPC1227芯片8 KB的RAM空间足以保存一个大型网络中节点的网络地址。同时,LPC1227具备的在应用编程功能可将节点网络地址信息保存在自身Flash中。
③本次设计中自定义的ZigBee数据传输帧的节点ID号采用一字节进行保存。因此,一个网关所建立的ZigBee网络容量最大可为255个节点(除去协调器节点)。为了实现简单的ZigBee节点网络地址和节点号之间的地址映射,采用如下代码实现(前提是节点编号从0到255):
uint16 Node[256]; //定义用于保存16位网络地址的数组
Node[x]=NetAddr; //保存节点号为x的网络地址
NetAddr=Node[x]; //获取节点号为x的网络地址
嵌入式处理器程序的MCU程序处理流程如图4所示。
上一页 [1] [2] [3] [4] 下一页