Z-Stack

Posted Tea&Honey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Z-Stack相关的知识,希望对你有一定的参考价值。

CCM - Counter with CBC-MAC          (mode of operation)
HAL - Hardware Abstraction Layer        ( 硬件抽象层)   提供接口访问TIMER,GPIO,UART,ADC等
PAN - Personal Area Network           (个人局域网)
RF - Radio Frequency              (射频)
RSSI - Received Signal Strength Indicator   (接收信号强度指示)

以简单的无线数据通信为例,其一般步骤为:

① 组网:调用协议栈组网函数、加入网络函数,实现网络的建立和节点的加入

② 发送:发送节点调用协议栈的发送函数,实现数据无线发送

③ 接收:接收节点调用协议栈的无线接收函数,实现无线数据接收

  由于协议栈都把这些函数都封装好了,因此我们用起来比较方便。下面是协议栈无线发送函数:

                    

启动程序

typedef struct {
uint16 myAddr;
uint16 panId;
uint8 channel;  //RF通道,必须在11-26之间
uint8 ackRequest;
#ifdef SECURITY_CCM  //预定义取消加密
uint8* securityKey;
uint8* securityNonce;
#endif
} basicRfCfg_t;//typedef struct{...} basicRfCfg_t,
                //在这里basicRfCfg_t类似于一个新的变量名称            

 

 basicRfCfg_t 的数据结构,并初始化其中的成员,在basic_rf.h 代码中可以找到

 

uint8 basicRfInit(basicRfCfg_t* pRfConfig)//调用 basicRfInit()函数进行协议的初始化,在 basic_rf.c 代码中可以找到

 

函数功能:对 Basic RF 的数据结构初始化,设置模块的传输通道,短地址,PAD ID。

 

发送程序

  1. 创建一个 buffer,把 payload 放入其中。Payload 最大为103 个字节
  2. 调用 basicRfSendPacket()函数发送,并查看其返回值
uint8 basicRfSendPacket(uint16 destAddr, uint8* pPayload, uint8 length)
//destAddr 目的短地址
//pPayload 指向发送缓冲区的指针
//length 发送数据长度

 

 

函数功能:给目的短地址发送指定长度的数据,发送成功刚返回 SUCCESS,失败则返回 FAILED

接收程序

uint8 basicRfPacketIsReady(void)
//  上层通过 basicRfPacketIsReady()函数来检查是否收到一个新数据包

函数功能:检查模块是否已经可以接收下一个数据,如果准备好刚返回TRUE

 

uint8 basicRfReceive(uint8* pRxData, uint8 len,int16* pRssi)
//用 basicRfReceive()函数,把收到的数据复制到 buffer 中

 

函数功能:接收来自 Basic RF 层的数据包,并为所接收的数据和 RSSI 值

 

以上是关于Z-Stack的主要内容,如果未能解决你的问题,请参考以下文章

Z-Stack串口通信使用心得

Z-Stack

转TI Z-stack协议栈学习-添加新任务

阅读z-stack组网,记录笔记

Z-Stack发送数据函数“afStatus_t AF_DataRequest”参数解读

Zigbee技术入门教程-号外基于Z-Stack协议栈的抢答系统