码迷,mamicode.com
首页 > 其他好文 > 详细

Z-Stack

时间:2017-05-01 16:00:33      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:center   received   auto   实现   with   tps   发送   .com   tor   

CCM - Counter with CBC-MAC          (mode of operation)
HAL - Hardware Abstraction Layer        ( 硬件抽象层)   提供接口访问TIMER,GPIO,UART,ADC等
PAN - Personal Area Network           (个人局域网)
RF - Radio Frequency              (射频)
RSSI - Received Signal Strength Indicator   (接收信号强度指示)

技术分享

以简单的无线数据通信为例,其一般步骤为:

① 组网:调用协议栈组网函数、加入网络函数,实现网络的建立和节点的加入

② 发送:发送节点调用协议栈的发送函数,实现数据无线发送

③ 接收:接收节点调用协议栈的无线接收函数,实现无线数据接收

  由于协议栈都把这些函数都封装好了,因此我们用起来比较方便。下面是协议栈无线发送函数:

技术分享

技术分享                    

启动程序

typedef struct {
uint16 myAddr;
uint16 panId;
uint8 channel;  //RF通道,必须在11-26之间
uint8 ackRequest;
#ifdef SECURITY_CCM  //预定义取消加密
uint8* securityKey;
uint8* securityNonce;
#endif
} basicRfCfg_t;//typedef struct{...} basicRfCfg_t,
                //在这里basicRfCfg_t类似于一个新的变量名称            

 

 basicRfCfg_t 的数据结构,并初始化其中的成员,在basic_rf.h 代码中可以找到

 

uint8 basicRfInit(basicRfCfg_t* pRfConfig)//调用 basicRfInit()函数进行协议的初始化,在 basic_rf.c 代码中可以找到

 

函数功能:对 Basic RF 的数据结构初始化,设置模块的传输通道,短地址,PAD ID。

 

发送程序

  1. 创建一个 buffer,把 payload 放入其中。Payload 最大为103 个字节
  2. 调用 basicRfSendPacket()函数发送,并查看其返回值
uint8 basicRfSendPacket(uint16 destAddr, uint8* pPayload, uint8 length)
//destAddr 目的短地址
//pPayload 指向发送缓冲区的指针
//length 发送数据长度

 

 

函数功能:给目的短地址发送指定长度的数据,发送成功刚返回 SUCCESS,失败则返回 FAILED

接收程序

uint8 basicRfPacketIsReady(void)
//  上层通过 basicRfPacketIsReady()函数来检查是否收到一个新数据包

函数功能:检查模块是否已经可以接收下一个数据,如果准备好刚返回TRUE

 

uint8 basicRfReceive(uint8* pRxData, uint8 len,int16* pRssi)
//用 basicRfReceive()函数,把收到的数据复制到 buffer 中

 

函数功能:接收来自 Basic RF 层的数据包,并为所接收的数据和 RSSI 值

 

Z-Stack

标签:center   received   auto   实现   with   tps   发送   .com   tor   

原文地址:http://www.cnblogs.com/Tea1024/p/6791879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!