首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

移动设备中ZigBee接口的实现 02

移动设备中ZigBee接口的实现 02

系统的功能如下:
1. 信道检测。通过扫描,完成ZigBee技术2.4GHz频段16个信道的状态检测,并返回给UI进行显示。
2. 发送/接收信道设置。用户通过UI给ZigBee模块发送指令,使之通过设定的信道来发送和接收数据。
3. 发送/接收数据。用户可以用文本方式或者HEX方式发送数据,并且可以用一定间隔进行连续发送。
4. 发送功率设置。用户发送数据时,通过UI给ZigBee模块发送指令,可以设定发送的功率大小。
2. 结构模型
2.1硬件结构模型
如图1所示,ZigBee模块选用Freescale的HCS08GB60为MCU,MC13192为IEEE 802.15.4收发器,它们之间通过SPI接口进行通信。移动设备通过串口和ZigBee模块中的HCS08GB60进行通信。
2.2网络结构模型
ZigBee网络可以使用Star、Mesh和Mesh-Tree这三种拓扑结构,具体可以参考图2.

图2 ZigBee网络拓扑结构模型

从成本上来考虑,无线部分采用了Freescale免费提供的SMAC(Simple MAC)。SMAC给出了物理层和MAC层的API函数,包括工作状态转换、信道选择、发送功率选择、时钟选择、信道能量和接收信号能量指示(RSSI)等等。该工程文件以Source的方式给出,而不是lib,且可以直接从Freescale网站上下载得到。
3. 软硬件设计平台
硬件设计软件采用经典的Protel99se,主要涉及ZigBee模块的设计。设计输出原理图和PCB图如下图3所示:

图3 硬件设计输出图

嵌入式开发环境采用CodeWarrior for HCS08 V3.1,使用C语言和汇编语言进行开发。
移动设备使用windows mobile设备。具体开发环境为:Microsoft Visual Studio 2005+SP1+Windows Mobile 6 professional SDK+ .Net Compact Framework 2.0 SP2。
4. ZigBee模块程序流程
目前,嵌入式系统有三种主流架构解决方案:基于中断的多任务模拟、前后台系统和实时多任务操作系统。“中断模拟多任务”会导致系统丢失中断信息,大大破坏系统的稳定性,所以这种方法是不建议使用的。
多任务实时操作系统是目前最成熟而且最合理的解决方案,但是实时操作系统一般为第三方提供,需要付费,而且就像uCOS-II这样的开源系统也不再免费,若在没有获得许可的情况之下使用,可能会涉及到版权纠纷。
而自己开发实时操作系统,研发开销太大,另外,一些功能简单或者对实时性要求不高的系统,根本没有必要上实时操作系统。因此,在实际开发中,很有可能会采用简单的前后台系统。
前后台系统的基本概念是“前台中断,后台循环”。
前后台系统的基本思想是:硬件中断函数中只做非常少量而且是绝对必须的操作:如设置中断寄存器、保存数据寄存器等,然后置后台标志位,随即退出中断。这些操作称为“前台操作”。
而后台操作是一个开放中断的无限循环。在循环中检查各后台标志位,如果某一标志位被置位,则说明有中断发生,立即调用相应的中断服务任务,这些任务被称为“后台操作”。
在ZigBee模块的嵌入式软件开发中,我们使用“前台中断,后台循环”的架构。主程序流程如下图4所示:

图4主程序流程图

TargetInit()执行系统初始化操作,主要包括HCS08的IO、UART和Timer等模块的初始化。ConfigInit()执行配置初始化操作,主要包括SMAC协议和串口通信协议配置。
ScheduleLoop()为主调度循环,根据状态来执行不同的任务,
返回列表