既然要组网,那么就得熟悉一点计算机网络的知识,不同层之间的应用其实存在透明,只需要对相同层做出改动就可。手中的资料是使用的Z-Stack协议栈。
TI 推出的 ZigBee 2007 协议栈也称 Z-Stack协议栈,Z-Stack 协议栈中提供了一个名为操作系统抽象层 OSAL 的协议栈调度程序。对于用户来说,除了能够看到这个调度程序外,其它任何协议栈操作的具体 实现细节都被封装在库代码中。用户在进行具体的应用开发时只能够通过调用 API 接口来进行,而无权知道 ZigBee 协议栈实现的具体细节,也没必要去知道。可以将它看作是一个大工程,或者是一个操作系统,采用任务轮询的方法运行。
因此ZigBee 协议栈已经实现了 ZigBee 协议,用户可以使用协议 栈提供的 API 进行应用程序的开发,在开发过程中完全不必关心 ZigBee 协议的 具体实现细节,要关心的问题是:应用层的数据是使用哪些函数通过什么方式把 数据发送出去或者把数据接收过来的。所以最重要的是我们要学会使用 ZigBee 协议栈。
用户实现一个简单的无线数据通信时的一般步骤:
1、组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加 入。
2、发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送。
3、接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。
然后还有一些关键字需要掌握
CCM - Counter with CBC-MAC (mode of operation)
HAL - Hardware Abstraction Layer (硬件抽象层)
PAN - Personal Area Network (个人局域网)
RF - Radio Frequency (射频)
RSSI - Received Signal Strength Indicator (接收信号强度指示)
Hardware layer 放在最底,肯定是你实现数据传输的基础 了。
Hardware Abstraction layer 它提供了一种接口来访问 TIMER,GPIO, UART,ADC 等。这些接口都通过相应的 函数进行实现。
Basic RF layer 为双向无线传输提供一种简单的协议。
Application layer 是用户应用层,它相当于用户使用 Basic RF 层和 HAL 的接口,也就是说我们通过 在 Application layer 就可以使用到封装好的 Basic RF 和 HAL 的函数。
Basic RF 由 TI 公司提供,它包含了 IEEE 802.15.4 标准的数据包的收发功能但 并没有使用到协议栈,它仅仅是是让两个结点进行简单的通信,也就是说 Basic RF 仅仅是包含着 IEEE 802.15.4 标准的一小部分而已。其主要特点有:
1、不会自动加入协议、也不会自动扫描其他节点也没有组网指示灯(LED3)。
2、没有协议栈里面所说的协调器、路由器或者终端的区分,节点的地位都是相 等的。
3、没有自动重发的功能。
Basic RF layer 为双向无线通信提供了一个简单的协议,通过这个协议能够进 行数据的发送和接收。Basic RF 还提供了安全通信所使用的 CCM-64 身份验证和 数据加密,它的安全性读者可以通过在工程文件里面定义 SECURITY_CCM 在 Project->Option 里面就可以选择。
Basic RF 的工作过程:启动、发射、接收
启动
1、确保外围器件没有问题
2、创建一个 basicRfCfg_t 的数据结构,并初始化其中的成员,在 basic_rf.h 代码中可以找到
typedef struct {
uint16 myAddr; //16 位的短地址(就是节点的地址)
uint16 panId; //节点的 PAN ID
uint8 channel; //RF 通道(必须在 11-26 之间)
uint8 ackRequest; //目标确认就置 true
#ifdef SECURITY_CCM //是否