LPC1227的远距离ZigBee无线网关设计

来源:21IC 作者:—— 时间:2011-11-15 14:05


    ①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所示。

e.jpg


4 测试结果

       网关的测试借助上位机测试平台和ZigBee终端节点,以无线路灯节能、监控系统为应用背景。上位机测试平台如图5所示。

g.jpg


    网关技术指标如表2所列

f.jpg


5 总结

       本次设计中网关没有采用任何嵌入式操作系统,相比当前采用的嵌入式操作系统网关,它具有更小的软件负荷和更低的软硬件成本。网关中的ZigBee模块加入了2.4 GHz功率放大芯片CC2591,使得ZigBee节点间的无线通信距离更大,更适用于远距离无线通信场合。

       网关的MCU采用较新的基于Cortex-M0内核的ARM芯片LPC1227,运行速度高达45 MHz,具备在应用编程(IAP)功能,方便对关键数据的掉电保存。两路串口与ZigBee模块和GSM模块连接方便,具有较高的性价比。

       系统软件的编写采用前后台的设计思想,使得网关具有很好的实时性和可靠性,满足工业级要求。因此本文设计的网关在低成本、远距离ZigBee通信领域具有较高的推广价值。

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子