首页 > 编程知识 正文

nxpzigbee协议栈(zigbee)

时间:2023-05-04 12:50:20 阅读:77128 作者:3696

文章目录Zigbee协议栈概述如何理解Zigbee协议栈如何使用Zigbee协议栈

Zigbee协议栈概述

Zigbee协议分为两个部分。

IEEE 802.15.4定义了PHY (物理层)和MAC (介质访问层)的技术规范。 Zigbee联盟定义了网络层(NWK )、APS (APP应用支持层)和APL (APL )技术规范。 Zigbee协议栈是将在每一层定义的协议实现为函数,并为用户提供用户可以直接调用的API。

如何理解Zigbee协议栈TI发布的ZigBee 2007协议栈也称为Z-Stack,是Chipcon发布CC2430开发平台时开发的商用级协议栈软件

Chipcon公司自行设计的Z-Stack协议栈提供了一个名为操作系统抽象层OSAL的协议栈调度程序。

下图为TI公司基于ZigBee 2007的协议栈Z-Stack-CC2530-2.3.0。 所有文件目录都由红色框指示。 这可以看作是一个使用任务轮询运行的小操作系统。

如何使用Zigbee协议栈以简单的无线数据通信为例,常见步骤如下:

组网:调用协议栈的组网函数,加入网络函数,实现网络的构建和节点的参与。 发送:发送节点调用协议栈的发送函数,实现数据的无线发送。 接收:接收节点调用协议栈的无线接收函数,实现无线数据接收。 协议栈封装了这些函数,所以我们很容易使用。 知道以下关键词。

修改层(CCM )硬件抽象层(pan :个人区域网络(pan ) RF :

docs文件夹:打开文件夹时,只有一个名为CC2530_Software_Examples的PDF文档。 文档的主要内容是介绍基本射频的特点、结构和使用方法。 由此可见,Basic RF包括无线点灯、传输质量检查、频谱分析APP应用三个实验例程。 Ide文件夹:打开文件夹时,有三个文件夹和上述三个实验例程项目的集合cc2530_sw_examples.eww项目。 在IAR环境中打开项目时,workspace中将显示以下文件夹: IdeSettings文件夹位于每个基础实验的文件夹中,用于保存读者自己的IAR首选项。 Idesrf05_CC2530文件夹包含三个项目: light_switch.eww、per_test.eww和spectrum_analyzer.eww。 Source文件夹:此文件夹包含apps文件夹和components文件夹。 Sourceapps文件夹包含由Basic RF三个实验的APP应用程序实现的源代码。 Sourcecomponents文件夹包含的源代码使用具有不同basic RF APP应用程序的组件。 打开文件夹web eecc 2530 basic RFideSRF 05 _ cc 2530IAR路径中的工程light_switch.eww (无线点亮),实验对其进行了修改。 在介绍Basic RF之前,先看看这个实验例程设计的大致结构。

硬件层:这是实现数据传输的基础。 硬件结构层—提供用于访问时间、GPIO、UART、ADC等的接口。 这些接口通过相应的函数实现。 基本射频层:为双向无线传输提供简单的协议。 应用程序层:这是一个用户APP应用层,相当于用户使用基本射频层和HAL接口。 在应用程序层中,可以使用封装的指向Basic RF和HAL的函数。 Basic RF由TI公司提供,包含IEEE 802.15.4标准的分组发送和接收功能,但没有用于协议栈,只是允许两个节点轻松通信。 这意味着,基本射频只是包括IEEE 802.15.4标准在内的一小部分。 主要特点如下:

它不会自动加入协议,不会自动扫描其他节点,也不会拥有网络指示灯(LED3)。 协议栈中没有协调器、路由器或终端的区分,节点地位相等。 没有自动重新发送的功能。 基本射频的工作过程包括启动、发射和接收。 要使用Basic RF实现无线传输,只要记住使用这些过程的适当函数即可。

的启动要求如下。

1 .确保外围设备没有问题。

创建basicRfCfg_t的数据结构并初始化其中的成员。 basic_rf.h代码包含以下信息:

类型结构{ uint 16 myaddr; /* 16位短地址(节点地址) */uint16 panId; /*节点的“panid”*/uint 8通道;/*射频通道(必须在11~26

之间 */ uint8 ackRequest; /* 目标确认就置为true */#ifdef SECURITY_CCM /* 是否加密,预定义里取消了加密 */ uint8 *securityKey; uint8 *securityNonce;#endif} basicRfCfg_t;

  3. 调用basicRfInit函数进行协议的初始化,在basic_rf.c代码中可以找到:

uint8 basicRfInit ( basicRfCfg_t *pRfConfig );

函数功能是对Basic RF的数据结构初始化,设置模块的传输通道、短地址和PAD ID。
  发送过程如下:
  1. 创建一个buffer,把payload放入其中,Payload不大于103个字节。
  2. 调用basicRfSendPacket函数发送,并查看其返回值。在basic_rf.c中可以找到:

uint8 basicRfSendPacket ( uint16 destAddr, uint8 *pPayload, uint8 length )

参数destAddr是目的短地址,pPayload是指向发送缓冲区的指针,length是发送数据长度。函数功能是给目的短地址发送指定长度的数据,发送成功刚返回SUCCESS,失败则返回FAILED。
  接收过程如下:
  1. 上层通过basicRfPacketIsReady函数来检查是否收到一个新数据包。在basic_rf.c中可以找到:

uint8 basicRfPacketIsReady ( void );

函数功能是检查模块是否已经可以接收下一个数据,如果准备好了,则返回TRUE。
  2. 调用basicRfReceive函数,把收到的数据复制到buffer中。代码可以在basic_rf.c中找到:

uint8 basicRfReceive ( uint8 *pRxData, uint8 len, int16 *pRssi );

函数功能是接收来自Basic RF层的数据包,并为所接收的数据和RSSI值配缓冲区。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。