ZigBee学习之12对ZDO的初步理解无锡职业技术学院.docx
《ZigBee学习之12对ZDO的初步理解无锡职业技术学院.docx》由会员分享,可在线阅读,更多相关《ZigBee学习之12对ZDO的初步理解无锡职业技术学院.docx(30页珍藏版)》请在冰豆网上搜索。
![ZigBee学习之12对ZDO的初步理解无锡职业技术学院.docx](https://file1.bdocx.com/fileroot1/2023-2/25/cd274bee-03ed-4dbc-bf2e-cce60fab9b19/cd274bee-03ed-4dbc-bf2e-cce60fab9b191.gif)
ZigBee学习之12对ZDO的初步理解无锡职业技术学院
物联网应用技术教学资源库建设项目
——文档说明
一、名称
序号
资源名称
文件后缀
资源类别
1
ZigBee学习之1—点灯
.doc
文档
2
ZigBee学习之2—SPI&LCD
.doc
文档
3
ZigBee学习之3—USART之UART
.doc
文档
4
ZigBee学习之4—DMA
.doc
文档
5
ZigBee学习之5—无线电
.doc
文档
6
ZigBee学习之6—无线电2
.doc
文档
7
ZigBee学习之7—OSAL(操作系统抽象层)API解读
.doc
文档
8
ZigBee学习之8—对ZigBee地址的理解
.doc
文档
9
ZigBee学习之9—Z-Stack编译选项
.doc
文档
10
ZigBee学习之10—MAC层API解读
.doc
文档
11
ZigBee学习之12—对ZDO的初步理解
.doc
文档
12
ZigBee学习之13—ZStackAPI解读
.doc
文档
13
ZigBee学习之14—ZStackAPI解读2.
.doc
文档
14
ZigBee学习之14—ZStackAPI解读3
.doc
文档
15
ZigBee学习之16—ZStackAPI解读4
.doc
文档
16
ZigBee学习之17—ZStackAPI解读5
.doc
文档
17
ZigBee学习之18—ZCL解读
.doc
文档
18
ZigBee学习之19—如何创建自己的简单应用
.doc
文档
19
ZigBee学习之20—SimpleAPP分析
.doc
文档
20
ZigBee学习之21—osal_int_disable(INTS_ALL)
.doc
文档
21
ZigBee学习之22—HAL_BOARD_INIT()
.doc
文档
22
ZigBee学习之23—zmain_vdd_check()
.doc
文档
23
ZigBee学习之24—zmain_ram_init()
.doc
文档
24
ZigBee学习之25—InitBoard
.doc
文档
25
ZigBee学习之26—HalDriverInit().
.doc
文档
26
ZigBee学习之27—osal_nv_init
.doc
文档
27
ZigBee学习之28—zgInit()
.doc
文档
28
ZigBee学习之29—ZMacInit()
.doc
文档
29
ZigBee学习之30—afInit()
.doc
文档
30
ZigBee学习之31—osal_init_system
.doc
文档
31
ZigBee学习之32—zmain_dev_info()
.doc
文档
32
ZigBee学习之33—osal_start_system()
.doc
文档
33
ZigBee学习之34—按键部分及系统调用时钟的分析1
.doc
文档
34
ZigBee学习之35—按键部分及系统调用时钟的分析2
.doc
文档
34
ZigBee学习之36—osalInitTasks()分析
.doc
文档
36
ZigBee学习之36—simpleapp分析-续
.doc
文档
37
ZigBee学习之38—初步理解HomeAutomationProfile
.doc
文档
38
ZigBee学习之39—HomeAutomationProfile2
.doc
文档
39
ZigBee学习之40—HomeAutomationProfile3
.doc
文档
40
ZigBee学习之41—SimpleSwitch
.doc
文档
41
ZigBee学习之42—协议栈中的串口操作
.doc
文档
序号
资源名称
文件后缀
资源类别
42
奥特曼的zigbee读书笔记
(一)Zigbee简介
.doc
文档
43
奥特曼的zigbee读书笔记
(二)--OSAL系统框架专题
.doc
文档
44
奥特曼的zigbee读书笔记(三)设备“对话”专题
(1)
.doc
文档
45
奥特曼Zigbee读书日记(四)--设备“对话”专题
(2)
.doc
文档
46
奥特曼Zigbee读书日记(五)--第三章第一层(物理层)
.doc
文档
47
奥特曼Zigbee读书日记(六)--开源协议
.doc
文档
48
奥特曼Zigbee读书日记(七)ZigBee无线网络和收发器
.doc
文档
49
奥特曼Zigbee读书日记(八)
.doc
文档
50
奥特曼Zigbee读书日记.(全)
.pdf
文档
51
协议中UART的两种模式
.doc
文档
52
协议栈按键流程
.doc
文档
53
系统时钟定时器
.doc
文档
54
基于ZigBeeRSSI的定位小方案—通信网络布局通信协议选择方案
.doc
文档
55
关于协议栈XDATA溢出的小结
.doc
文档
56
定位小方案—目标定位算法设计方案
.doc
文档
57
定位小方案—节点软硬件系统中心软件设计方案
.doc
文档
58
定位小方案——方案内容摘要
.doc
文档
59
串口开头乱码记录
.doc
文档
60
触发任务事件方式
.doc
文档
61
绑定前言
.doc
文档
62
绑定小实验
.doc
文档
63
把串口接收的数据送往应用层的方法
.doc
文档
64
Z-STACK问题之串口结构
.doc
文档
65
zigbee组网小实验3—添加传感数据采集功能
.doc
文档
66
zigbee组网小实验2—相关源代码2
.doc
文档
67
zigbee组网小实验2—相关源代码1
.doc
文档
68
zigbee组网小实验2—网络功能说明
.doc
文档
69
zigbee组网小实验1
.doc
文档
70
ZigBee组网流程—理论层面描述
.doc
文档
71
zigbee协议重要名词解释及英文缩写
.doc
文档
72
Zigbee协议术语
.doc
文档
73
Zigbee网络设备启动—主要函数说明
.doc
文档
74
Zigbee网络设备启动流程—终端(自启动模式)
.doc
文档
75
Zigbee网络设备启动流程—终端(非自启动模式)
.doc
文档
76
Zigbee网络设备启动流程—协调器(自启动模式)
.doc
文档
77
Zigbee网络设备启动流程—协调器(非自启动模式)
.doc
文档
78
Zigbee网络设备启动流程—路由器(自启动模式)
.doc
文档
79
Zigbee网络设备启动流程—路由器(非自启动模式)
.doc
文档
80
Zigbee网络设备启动—基本问题说明
.doc
文档
81
ZigBee四种绑定方式在TIZ-Stack中的应用
.doc
文档
82
zigbee各层帧结构的构成
.doc
文档
83
资源名称
文件后缀
资源类别
84
ZigBee各版本规范比较
.doc
文档
85
zigbee串口透明传输
.doc
文档
86
zigbee—MAC层帧结构
.doc
文档
87
SPIMgr_ProcessZToolData()数据传送流程
.doc
文档
88
SimpleApp例程中两种绑定机制程序流程
.doc
文档
89
SimpleApp和GenericApp实例绑定程序流程
.doc
文档
90
SimpleApp传感器实验笔记
.doc
文档
91
SampleApp例子中发送flash_perodic信息流程
.doc
文档
92
SampleApp例子的自定义小实验
.doc
文档
93
OSAL主循环流程
.doc
文档
94
OSAL系统框架专题
.doc
文档
95
OSAL调度机制
.doc
文档
96
OSAL处理来自AF的数据包流程
.doc
文档
97
OSAL初始化流程
.doc
文档
98
IAR_gotodefinitionofXX
.doc
文档
99
CC2430低功耗模式
.doc
文档
100
CC2430单片机LED实验
.doc
文档
101
CC2430串口测试实验(UART)
.doc
文档
102
NV
.doc
文档
103
SimpleApp绑定回调的分析
.doc
文档
104
ZigBee(Z-Stcak)常用API函数实际使用代码
.doc
文档
105
zigbee组网过程
.doc
文档
106
飞比”Zigbee论坛CC2530开发板学习教程
(一)--前言
.doc
文档
107
基于CC2530的zigbee信道、PANID扫描设备
.doc
文档
108
ZigBee协议栈学习版视频_1
.exe
视频
109
Zigbee基础实验外部中断
.doc
文档
110
Zigbee基础实验T2
.doc
文档
111
zigbee路由
.doc
文档
112
zstack中的指针
.doc
文档
113
CC253X-CN2
.pdf
文档
114
CC2530芯片介绍
.doc
文档
二、创建或搜集相关信息
搜集单位:
无锡职业技术学院
搜集时间:
2013-9-22
来源:
互联网
三、适用对象
ZigBee学习者
四、适用场景
ZigBee系统学习,ZigBee项目开发
五、功能简介
包含文件:
doc、pdf。
六、保留
MAC层API解读
MACAPI[802.15.4MACAPI_F8W-2005-1503_.pdf]
常量和结构体
typedefuint8sAddrExt_t[8];
typedefstruct
{
union
{
uint16shortAddr;
sAddrExt_textAddr;
}addr;
uint8addrMode;
}sAddr_t;
shortAddr-16位MAC短地址
extAddr-64位MAC扩展地址
addrMode-地址模式
SADDR_MODE_NONE-地址不存在
SADDR_MODE_SHORT-使用16位短地址
SADDR_MODE_EXT-使用64位扩展地址
状态值
标准状态值
MAC_SUCCESS操作成功
MAC_BEACON_LOSS同步请求中丢失信标
MAC_CHANNEL_ACCESS_FAILURE由于通道活跃,数据请求失败
MAC_COUNTER_ERROR接收到的帧的发送源的帧计数器不可用
MAC_DENIEDMAC不能进入低功耗模式
MAC_FRAME_TOO_LONG接收到的帧或者操作产生的帧或数据请求太长
MAC_IMPROPER_KEY_TYPE接收到的帧的发送源的KEY不可用
MAC_IMPROPER_SECURITY_LEVEL接收到的帧的发送源安全等级和最低等级不匹配
MAC_INVALID_ADDRESS由于没有源地址或目的地址,数据请求失败
MAC_INVALID_HANDLE清除请求包含不可用的处理
MAC_INVALID_PARAMETERAPI函数参数超出范围
MAC_LIMIT_REACHED由于PAN描述储存达到界限,扫描中止
MAC_NO_ACK由于没有收到应答,操作或数据请求失败
MAC_NO_BEACON由于没有收到信标,扫描请求失败
MAC_NO_DATA由于没有收到关联应答,关联请求失败
MAC_NO_SHORT_ADDRESS开始请求的短地址错误
MAC_PAN_ID_CONFLICT检测到一个PANID冲突
MAC_READ_ONLY拥有只读标记的请求
MAC_REALIGNMENT接收到协调器重排列
MAC_SCAN_IN_PROGRESS扫描正在进行,新的扫描请求失败
MAC_SECURITY_ERROR接收到的安全帧密码处理失败
MAC_SUPERFRAME_OVERLAP信标开始时间超出协调器传输时间
MAC_TRACKING_OFF没有找到其协调器的信标,开始请求失败
MAC_TRANSACTION_EXPIRED关联应答,解关联请求,间接数据传输失败
MAC_TRANSACTION_OVERFLOW数据缓存溢出,操作失败
MAC_UNAVAILABLE_KEY安全密钥不可用
MAC_UNSUPPORTED_ATTRIBUTE由于不支持的特性指令或请求失败
MAC_UNSUPPORTED_LEGACY不支持的安全方式
MAC_UNSUPPORTED_SECURITY接收到的帧的安全方式不支持
私有状态值
MAC_UNSUPPORTED当前配置不支持的操作
MAC_BAD_STATE当前状态不支持的操作
MAC_NO_RESOURCES内存资源不足
MAC时间值
aBaseSuperframeDuration构成超帧的符号周期96015.36ms(2.4G)
aUnitBackoffPeriod构成CSMA-CA算法的时间周期的符号周期20320us(2.4G)
初始化接口
初始化接口函数都是直接执行函数
voidMAC_Init(void)
初始化MAC子系统
voidMAC_InitDevice(void)
初始化MAC关联到一个非信标网络,使用此函数初始化一个RFD设备,如果使用此函数,要在调用其它数据和管理API之前调用
voidMAC_InitCoord(void)
初始化MAC能进行协调器的操作。
此函数用来初始化一个FFD设备,要在调用其它数据和管理API之前调用
voidMAC_InitSecurity(void)
使MAC能使用安全功能,要在调用其它数据和管理API之前调用
voidMAC_InitBeaconCoord(void)
初始化MAC在信标网络中能进行协调器的操作。
此函数要在调用其它数据和管理API之前调用
voidMAC_InitBeaconDevice(void)
初始化MAC能关联到一个信标网络,此函数要在调用其它数据和管理API之前调用
提供一些ZigBee的配置事例,其他的网络配置请看TI的文档
ZigBee节点设备ZigBee路由器ZigBee协调器
MAC_InitDevice();MAC_InitDevice();MAC_InitCoord();
MAC_InitCoord();
数据接口
MAC层用来发送和接收数据的API
数据结构
typedefstruct
{
uint8*p;
uint8len;
}sData_t;
p–指向数据
len–数据的字节长度
数据常量
MAC_MAX_FRAME_SIZE102不包含安全域的最大数据长度
MAC_DATA_OFFSET24MAC头要求的数据偏移
MAC_ENC_OFFSET5加密头要求的数据偏移
MAC_MIC_32_LEN432位认证代码要求的长度
MAC_MIC_64_LEN864位认证代码要求的长度
MAC_MIC_128_LEN16128位认证代码要求的长度
voidMAC_McpsDataReq(macMcpsDataReq_t*pData)
将应用数据发送到MAC。
若MAC拥堵或者不能接受数据请求则发送状态为MAC_TRANSACTION_OVERFLOW的MAC_MCPS_DATA_CNF,最终MAC将变得不拥堵并且为一个缓存的请求发送MAC_MCPS_DATA_CNF。
所以应用能在任何时候发送数据,只是数据将被队列。
应用必须分配一定字节的缓存,数目是:
MAC_DATA_OFFSET+MAC_ENC_OFFSET(如果使用加密安全)。
可用使用MAC_McpsDataAlloc()来方便准确的分配这个缓存。
最大的数据帧长度为MAC_MAX_FRAME_SIZE,如果使用加密安全,则还要减去MAC_ENC_OFFSET及其相关的加密代码区域:
比如使用AES-MIC128,则最大的数据帧长度为:
max=MAC_MAX_FRAME_SIZE-MAC_ENC_OFFSET–MAC_MIC_128_LEN;
参数:
typedefstruct
{
sAddr_tdstAddr;
uint16dstPanId;
uint8srcAddrMode;
uint8mdsuHandle;
uint8txOptions;
uint8channel;
uint8Power;
}macDataReq_t;
typedefstruct
{
macEventHdr_thdr;
sData_tmsdu;
macTxIntData_tinternal;
macSec_tsec;
macDataReq_tmac;
}macMcpsDataReq_t;
hdr和internal是内部使用的,mac.mdsuHandle是应用定义的关于数据请求的句柄值,mac.txOptions为TX参数位掩码,有以下一些值,其他的都很好理解了。
MAC_TXOPTION_ACK应答传输。
如果没有收到应答将重传
MAC_TXOPTION_GTSGTS传输(unused).
MAC_TXOPTION_INDIRECT间接传输。
MAC将队列数据等待目标设备请求此数据。
只有协调器才可用这种方式
MAC_TXOPTION_NO_RETRANS无中继传输。
MAC_TXOPTION_NO_CNF无确认。
这将阻止为此帧发送MAC_MCPS_DATA_CNF事件
MAC_TXOPTION_ALT_BEUsePIBvalueMAC_ALT_BEfortheminimumbackoffexponent.
MAC_TXOPTION_PWR_CHAN用macDataReq_t结构中的电源和通道值而不用PIB中的值来传输
voidMAC_McpsPurgeReq(uint8msduHandle)
从MAC数据队列中清空并丢弃数据请求,当完成操作后MAC发送MAC_MCPS_PURGE_CNF
macMcpsDataReq_t*MAC_McpsDataAlloc(uint8len,uint8securityLevel,uint8keyIdMode)
如果用此函数分配了MAC_McpsDataReq()所需的数据缓存,在收到MAC_MCPS_DATA_CNF后要通过osal_msg_deallocate(pBuffer)来释放。
若不使用安全则设置securityLevel和keyIdMode为MAC_SEC_LEVEL_NONE和MAC_KEY_ID_MODE_NONE
回调函数事件
这些回调函数由应用调用,用来将事件或者数据从MAC传到应用。
MAC_MCPS_DATA_IND
从MAC发送数据到应用。
这个事件的参数指向一个动态分配的缓存,当应用用完数据后必须调用osal_msg_deallocate(pData)来释放缓存。
MAC还能为应用定义的数据分配额外的空间,应用定义的数据的大小由MAC_MlmeSetReq()的属性MAC_DATA_IND_OFFSET设置。
参数:
typedefstruct
{
sAddr_tsrcAddr;
sAddr_tdstAddr;
uint32timestamp;
uint16timestamp2;
uint16srcPanId;
uint16dstPanId;
uint8mpduLinkQuality;//链路质量
uint8correlation;//?
uint8rssi;//接收信号强度
uint8dsn;//接收到的帧的数据序列
}macDataInd_t;
typedefstruct
{
macEventHdr_thdr;
sData_tmsdu;
macRxIntData_tinternal;
macSec_tsec;
macDataInd_tmac;
}macMcpsDataInd_t;
mac.timestamp–接收到帧的时间,单位为aUnitBackoffPeriod
mac.timestamp2–接收到帧的时间,单位为内部MAC定时器单元
mac.correlation–Therawcorrelationvalueofthereceiveddataframe.Thisvaluedependsontheradio.Seethechipdatasheetfordetails.
dsn–接收到的帧的数据序列
MAC_MCPS_DATA_CNF
每当调用MAC_McpsDataReq()时就会向应用发送这个事件,这个事件返回数据请求的状态这个事件同样返回指向数据缓存的指针,应用能利用这个指针来释放空间。
typedefstruct
{
macEventHdr_thdr;
uint8msduHandle;
macMcpsDataReq_t*pDataReq;
uint32timestamp;
uint16timestamp2;
}macMcpsDataCnf_t;
hdr.status有如下的值
MAC_SUCCESS操作成功
MAC_CHANNEL_ACCESS_FAILURE通道繁忙,请求失败
MAC_FRAME_TOO_LONG数据太长
MAC_INVALID_PARAMETER参数超出范围
MAC_NO_ACK没有收到应答
MAC_TRANSACTION_EXPIRED传输期到没有收到响应
MAC_TRANSACTION_OVERFLOW数据buffer溢出
MAC_MCPS_PURGE_CNF
当调用MAC_McpsPurgeReq()时向应用发送这一事件
typedefstruct
{
macEventHdr_thdr;
uint8msduHandle;
}macMcpsPurgeCnf_t;
hdr.status-清空请求的状态
MAC_SUCCESS成功
MAC_INVALID_HANDLE清