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。
发送程序
- 创建一个 buffer,把 payload 放入其中。Payload 最大为103 个字节
- 调用 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的主要内容,如果未能解决你的问题,请参考以下文章