基于CC2430和ZigBee2006协议栈的通信模块设计 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于CC2430和ZigBee2006协议栈的通信模块设计

来源:中国一卡通网  作者:中国一卡通收录  发布时间:2011-12-27 09:01:23  字体:[ ]

关键字:通信模块  传感器  ZigBee技术  芯片  

摘   要:介绍了CC2430芯片的基本特性和ZigBee2006协议栈的基本内容。论述了以CC22430芯片为核心的无线通信模块的硬件设计,和以ZigB-ee2006协议栈为基础的软件设计。在实现短距离多网络节点间的无线通信的同时,使用串口实现无线通信模块与终端采集部分和本地控制部分的数据传输。


  无线通信模块通过串口分别实现与数据采集部分及本地主控制部分的连接。因此,应用层软件主要功能是实现串口数据的收发和无线网络数据传输。在ZStack程序中嵌入了实时操作系统,用于统一调度网络组建、节点加入、数据收发等功能运行。其工作机制主要是多任务事件运行机制,对于同一个任务可能有多种事件发生,需要执行不同的事件处理。为了方便,对于每个任务的事件处理函数都统一在一个事件处理函数中实现,然后根据任务ID号(task id)和该任务的具体事件(event)调用某个任务的事件处理函数。进入该任务的事件处理函数之后,再根据event来判别是该任务的哪一种事件发生,进而执行相应的事件处理。任务处理部分具体流程如图4所示。 


  下面详细介绍串口部分和无线接收、发送部分程序。

  3.1 串口部分程序

  (1)串口初始化

  主要是设置halUARTCfg_t结构体成员值: 


  通过对halUARTCfg_t赋值,可以设置波特率、字符数、数据位、停止位、奇偶校验位和硬件流控等。其中call-BackFunc是自定义设置串口回调函数,即一旦串口有数据传送,OSAL会就自动转到自定义的回调函数,执行自定义的操作。

  (2)串口回调函数

  首先调用Hal_UART_RxBufLen(uint8 port)函数确定串口数据的长度,然后再调用HalUARTRead(uint8 port,uint8*buf,uintl6 len)读取串口数据到自定义的串口数据缓冲区,并调用osal_set_event(byte task_id,UINTl6 event_flag)函数发送事件信号,进行数据的无线发送。

  3.2 无线接收、发送部分程序

  (1)无线接收

  当有数据通过无线发送到应用层时,应用层会发送1个AE_INCOMING_MSG_CMD消息事件。

  case AF_INCOMING_MSG_CMD:

  GenericApp_MessageMSGCB(MSGpkt);

  break:

  这里表示收到AF_INCOMING_MSG_CMD消息事件,然后调用收到消息事件的信息处理函数GenericApp_MessageMSGCB(MSGpkt),开始接收数据并通过涮用串口HalUARTWrite(uint8 port,uint8*buf,uintl6 len)写函数发送接收到的数据。

  (2)无线发送

  在串口回调函数中当串口有数据输入时,应用层会发送1个GENERICAPP_SEND_MSG_EVT消息事件。 


  调用GenericApp_SendThmMessage()数据发送函数,具体到TI/Chipcon公司所提供的ZigBee2006协议栈中即为AF_DataRequest()函数,具体形式如下: 


  结语

  本文以CC2430为主体设计了无线通信模块的硬件,并选用TI/Chipcon公司免费提供的ZigBee2006协议栈作为软件开发平台。通过实验验证,设计的硬件节点基本达到了项目要求。经调试,串口能够正确地接收和发送数据,能够实现多个无线节点(1个协调器,3个终端设备)在50 m左右的通信和数据传输,并通过计算机串口调试软件测试正确。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖