1:1.ZigBee 协议栈简介
- 协议:是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。
- 协议栈:是协议的具体实现形式。
- <协议栈> 是 <协议> 和用户之间的一个接口,开发人员通过使用 <协议栈> 来使用这个 <协议> 的,进而实现无线 数据收发。
2:该图展示了 ZigBee 无线网络协议层的架构图。
ZigBee 的协议分为两部分:
- IEEE 802.15.4 定义了 PHY(物理层)和 MAC(介质访问层)技术规范;
- ZigBee 联盟定义了 NW K(网络层)、APS(应 用程序支持子层)、APL(应 用层)技术规范。
- ZigBee 协议栈就是将各个层定义的协议都集合在一直, 以函数的形式实现,并给用户提供 API(应用层),用户可以直接调用。
3:如何使用 ZigBee 协议栈
- 协议栈是协议的实现,
- 可以理解为代码,函数库,供上层应 用调用,协议较底下的层与应用是相互独立的。
- 商业化的协议栈就是给你写好了底层的代码,符合协议标准,提供给你一个功能模块给你调用。你需要关心的就是你的应用逻辑,
- 数据从哪里到哪里,怎么存储,处理;还有系统里的设备之间的通信顺序什么的,当你的应用需要数据通信时,调用组网函数给你组建你 想要的网络;
- 当你 想从一个设备发数据到另一个设备时,调用无线数据发送函数;当然,接收端就调用接收函数;
- 当你的设备没事干的时候 ,你就调用睡眠函数;要干活的时候就调用唤醒函数。所以当你做具体应用时, 不需要关心协议栈是怎么写的,里面的每条代码是什么 意思。除非你要做协议研究。
- 每个厂商的协议 栈有区别,也就是函数名称和参数可能有区别,这个要看具体的例子、说明文档。
4:怎么使用 ZigBee 协议栈
用户实现一个简单的无线数据通信时的一般步骤:
- 组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入。
- 发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送。
- 接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。
5:下面我们大概看看无线发送函数
afStat us_t AF_DataRequest(
afAddrType_t *dstAddr,
endPointDesc _t *srcEP,
uint16 cID,
uint16 len, /* 发送数据的长度 */
uint8 *buf, /* 指向存放发送数据的缓冲区的指针 */
uint8 *transID,
uint8 options,
uint8 radius
)
至于调用该函数后,如何初始化硬件进行数据发送等工作,用户不需要关心,ZigBee 协议栈己经 将所需要的工作做好了,我们只需要调用相应的 API 函数即可,而不必关心具体实现细节。