Zigbee 学习计划——第4天——基于CC2530 Basic RF的无线点灯
2012-11-24 00:49
411 查看
就像Hellow world一样,无线点灯也是Zigbee的经典例子。根据《网蜂实战演练》中介绍,虽然还没有用到协议栈,但它体现出来的数据发送、接收和用协议栈是差不多的,而且TI公司的Basic RF的代码容易看懂,如果把这个实验掌握了(不要只是下载程序然后看试现象),到后面的协议栈就比较好入手了。基于这一点,这个还是很有必要学习了解一下。
关键字:
CCM - Counter with CBC-MAC (mode of operation)
HAL - Hardware Abstraction Layer (硬件抽象层)
PAN - Personal Area Network (个人局域网)
RF - Radio Frequency (射频)
RSSI - Received Signal Strength Indicator (接收信号强度指示)
Basic RF的软件设计分层如下:
Application
| |
| Baisc RF
| |
Hardware Abstraction Layer
|
Hardware
Basic RF layer 简介:
Basic RF 由TI公司提供,它包含了IEEE 802.15.4 标准的数据包的收发功能但并没有使用到协议栈,它仅仅是是让两个结点进行简单的通信,也就是说Basic
RF 仅仅是包含着IEEE 802.15.4 标准的一小部分而已。
其主要特点有:
1、不会自动加入协议、也不会自动扫描其他节点也没有组网指示灯(LED3)。
2、没有协议栈里面所说的协调器、路由器或者终端的区分,节点的地位都是相等的。
3、没有自动重发的功能。
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 //是否加密,预定义里取消了加密
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 值配缓冲区
关键字:
CCM - Counter with CBC-MAC (mode of operation)
HAL - Hardware Abstraction Layer (硬件抽象层)
PAN - Personal Area Network (个人局域网)
RF - Radio Frequency (射频)
RSSI - Received Signal Strength Indicator (接收信号强度指示)
Basic RF的软件设计分层如下:
Application
| |
| Baisc RF
| |
Hardware Abstraction Layer
|
Hardware
Basic RF layer 简介:
Basic RF 由TI公司提供,它包含了IEEE 802.15.4 标准的数据包的收发功能但并没有使用到协议栈,它仅仅是是让两个结点进行简单的通信,也就是说Basic
RF 仅仅是包含着IEEE 802.15.4 标准的一小部分而已。
其主要特点有:
1、不会自动加入协议、也不会自动扫描其他节点也没有组网指示灯(LED3)。
2、没有协议栈里面所说的协调器、路由器或者终端的区分,节点的地位都是相等的。
3、没有自动重发的功能。
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 //是否加密,预定义里取消了加密
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 值配缓冲区
相关文章推荐
- Zigbee 学习计划——第3天——熟悉CC2530的基本例程(续)
- Zigbee 学习计划——第5天——无线传输质量检测
- 基于CC2530的zIgbee传感器无线数据采集系统开发(部分关键源码)
- ZigBee组网学习笔记(一)无线点灯
- Zigbee 学习计划——第2天——熟悉CC2530的基本例程
- [置顶] 基于stm32f103zet6之UC/OS_II的学习1(初步移植OS--点灯大法)
- 基于矿灯的ZigBee无线预警系统
- zigbee学习笔记3----cc2530 外部中断实验
- ZigBee学习五 无线温度检测
- ZigBee组网学习笔记(五)--无线数据传输
- CC2530与zigbee学习笔记の初识zigbee(1)
- 大三下------无线通信实习-----基于zigbee的无线电阻检测系统
- 第四部视频,CC2538TinyOS之CoAP协议无线点灯例程+firefox网页访问(含CC2530 COAP)
- [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)
- [置顶] 基于stm32f103zet6之UC/OS_II的学习1(初步移植OS--点灯大法)
- ZigBee TI ZStack CC2530 3.6 创建基于ZStack的新工程
- Zigbee无线组网技术入门的学习路线
- 计划继续深化学习物联网系统的相关知识 目前的WiFi模块基于ESP8266
- ZigBee-CC2530学习心得(1) --------ZigBee开发工具
- ZigBee_CC2530_01H_关于无线通信的结构体介绍