转 zigbee学习笔记---Channel、PANID、发射功率及其它参数
现对z-stack里几个网络参数的设置以及如何获取总结一下。
信道配置:
Zigbee在3个频段定义了27个物理信道:868MHz频段中定义了1个20Kb/s信道,915MHz频段中定义了10个40Kb/s信道,信道间隔为2MHz,2.4GHz频段上定义了16个250Kb/s信道,信道间隔为5MHz.
信道编号
Z-stack中可以在f8wConfig.cfg里设置信道,相关部分如下:
/* Default channel isChannel 11 - 0x0B */
// Channels are definedin the following:
// 0 : 868 MHz 0x00000001
// 1 - 10 : 915 MHz 0x000007FE
// 11 - 26 : 2.4 GHz 0x07FFF800
//-DMAX_CHANNELS_868MHZ 0x00000001
//-DMAX_CHANNELS_915MHZ 0x000007FE
//-DMAX_CHANNELS_24GHZ 0x07FFF800
//-DDEFAULT_CHANLIST=0x04000000// 26 - 0x1A
//-DDEFAULT_CHANLIST=0x02000000// 25 - 0x19
//-DDEFAULT_CHANLIST=0x01000000// 24 - 0x18
//-DDEFAULT_CHANLIST=0x00800000// 23 - 0x17
//-DDEFAULT_CHANLIST=0x00400000// 22 - 0x16
//-DDEFAULT_CHANLIST=0x00200000// 21 - 0x15
//-DDEFAULT_CHANLIST=0x00100000// 20 - 0x14
//-DDEFAULT_CHANLIST=0x00080000// 19 - 0x13
//-DDEFAULT_CHANLIST=0x00040000// 18 - 0x12
//-DDEFAULT_CHANLIST=0x00020000// 17 - 0x11
//-DDEFAULT_CHANLIST=0x00010000// 16 - 0x10
//-DDEFAULT_CHANLIST=0x00008000// 15 - 0x0F
//-DDEFAULT_CHANLIST=0x00004000// 14 - 0x0E
//-DDEFAULT_CHANLIST=0x00002000// 13 - 0x0D
//-DDEFAULT_CHANLIST=0x00001000// 12 - 0x0C
-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B 这里默认使用的是编号为11的信道
当建网过程开始后,网络层将请求MAC层对规定的信道或由物理层默认的有效信道进行能量检测扫描,以检测可能的干扰。网络层管理实体对能量扫描的结果以递增的方式排序,丢弃那些能量值超出可允许能量水平的信道,然后再由网络层管理实体执行一次主动扫描,结合检查PAN描述符,对剩下的信道选择一个合适的建立网络。
若要在应用中查看信道,可以这样获得,_NIB.nwkLogicalChannel,读取这个就OK了。
PANID:
在确定信道以后,下一步将是确定PANID,如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF),如ZDAPP_CONFIG_PAN_ID没有被定义为0xFFFF,那么网络的PANID将由ZDAPP_CONFIG_PAN_ID确定。
“如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF)”这句话怎么理解呢,我经过试验发现,这个随机的PANID并非完全随机,它有规律,与IEEE地址有一定的关系:要么就是IEEE地址的低16位,要么就是一个与IEEE地址低16位非常相似的值。如IEEE地址为0x8877665544332211,PANID很有可能就是2211,或相似的值;IEEE地址为0x8877665544337777,PANID很有可能就是3777,或其它相似的值;
Z-stack中相关部分代码如下:
/* Define the default PANID.
*
* Setting this to a valueother than 0xFFFF causes
* ZDO_COORD to use thisvalue as its PAN ID and
* Routers and end devicesto join PAN with this ID
*/
-DZDAPP_CONFIG_PAN_ID=0xFFFF
若要在应用中查看PANID可以这样获得,_NIB.nwkPanId,读取这个就OK了。
发射功率:
传送范围的大小是和发射功率还有信道环境有关, 传送速率和传送范围之间没有直接联系。所以呢,适当的增大发射功率可增大传送范围。但也是有一定的限制的。具体详见datasheet。
在mac_radio_def.h里有可以设置:
#defineMAC_RADIO_CHANNEL_DEFAULT 11
#defineMAC_RADIO_TX_POWER_DEFAULT 0x1F
#defineMAC_RADIO_TX_POWER_MAX_MINUS_DBM 25
这些只是举例说明一下,这些参数的意义,以及在z-stack里的什么地方修改。还有很多其它的参数,可以查看相关的源文件。
[mac_radio_def.h]
#defineMAC_RADIO_SET_CHANNEL(x) st(FSCTRLL = FREQ_2405MHZ + 5 * ((x) - 11); )
#defineMAC_RADIO_SET_TX_POWER(x) st(TXCTRLL = x; )
#define MAC_RADIO_SET_PAN_ID(x) st( PANIDL = (x) & 0xFF;PANIDH = (x) >> 8; )
[mac_radio.c]
void macRadioInit(void)
{
/* variableinitialization for this module */
reqChannel = MAC_RADIO_CHANNEL_DEFAULT;
macPhyChannel =MAC_RADIO_CHANNEL_DEFAULT;
reqTxPower = MAC_RADIO_TX_POWER_DEFAULT;
macPhyTxPower =MAC_RADIO_TX_POWER_DEFAULT;
}
[mac_low_level.h]
uint8macRadioRandomByte(void);
voidmacRadioSetPanCoordinator(uint8 panCoordinator);
voidmacRadioSetPanID(uint16 panID);
voidmacRadioSetShortAddr(uint16 shortAddr);
voidmacRadioSetIEEEAddr(uint8 * pIEEEAddr);
voidmacRadioSetTxPower(uint8 txPower);
voidmacRadioSetChannel(uint8 channel);
voidmacRadioStartScan(uint8 scanType);
voidmacRadioStopScan(void);
voidmacRadioEnergyDetectStart(void);
uint8 macRadioEnergyDetectStop(void);
转 zigbee学习笔记---Channel、PANID、发射功率及其它参数的更多相关文章
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- go lang学习笔记——channel机理及调度理解
<Go语言编程>一书介绍了libtask库,可以认为这个库等同于go的底层goroutine实现. libtask库的channel的数据结构如下: struct Alt { Channe ...
- Java NIO学习笔记---Channel
Java NIO 的核心组成部分: 1.Channels 2.Buffers 3.Selectors 我们首先来学习Channels(java.nio.channels): 通道 1)通道基础 通道( ...
- [XBee] ZigBee学习笔记
转自:http://blog.csdn.net/wanghanjiett/article/details/6931867 几个重要概念: node(节点): 在zigbee堆栈中最多有三种节点:Coo ...
- zigbee 学习笔记
在德州仪器的站点:http://www.ti.com.cn/tool/cn/z-stack上下载安装zigbee2007协议栈版,我的是ZStack-CC2530-2.3.0-1.4.0. 以下演示一 ...
- Guava学习笔记:Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处 ...
- JavaScript学习笔记3之 数组 & arguments(参数对象)& 数字和字符串转换 & innerText/innerHTML & 鼠标事件
一.Array数组 1.数组初始化(Array属于对象类型) /*关于数组的初始化*/ //1.创建 Array 对象--方法1: var arr1=[]; arr1[0]='aa';//给数组元素赋 ...
- jQuery学习笔记之jQuery.fn.init()的参数分析
这篇文章主要介绍了jQuery.fn.init()的参数分析,需要的朋友可以参考下 从return new jQuery.fn.init( selector, context, rootjQuer ...
- scala学习笔记5 (隐式转化/参数/类)
隐式转化: 隐式参数: 隐式类:
随机推荐
- IPMITOOL常用操作指令V1.0
一.开关机,重启 1. 查看开关机状态: ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) power statu ...
- sqlserver2012——.Net
1.Connection 属性: ConnectionString:获取或者设置用于打开SQLServer数据库的字符串 Database:获取当前数据库或者连接打开后要使用的数据库名称 State: ...
- [Windows]获取系统版本号
1 string GetMainProgInfo() 2 { 3 string strRet; 4 TCHAR szPath[MAX_PATH]; 5 GetModuleFileName(NULL,s ...
- 微信小程序小结(3) -- 使用wxParse解析html及多数据循环
wxParse-微信小程序富文本解析组件:https://github.com/icindy/wxParse 支持Html及markdown转wxml可视化 使用 1.copy下载好的文件夹wxPar ...
- 洛谷P1072 Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
- EOS多节点同步代码分析
EOS version: 1.0.7 一. 配置文件的修改 EOS的节点同步流程是通过p2p来完成,在nodeos的配置文件config.ini中填写,其默认路径为~/.local/share/eos ...
- AT2348 HonestOrUnkind
传送门 显然\(a>b\)的情况下才有解 考虑先找出一个诚实的人,然后剩下的都可以在\(n\)次以内问出来了 发现如果一个人说另一个人是说谎的那么这两个人必有一个是说谎的,由于诚实的人严格多于不 ...
- ubuntu16.0.4下修改MySQL的data目录之mysqld启动报错
由于需要更换MySQL的data目录,更改完成后启动报错如下: apparmor="DENIED" operation="mknod" profile=&quo ...
- 将Python的.py文件转变为可执行文件.exe
python是个很强大的工具,但我们生成的.py文件在没有Python环境下运行就需要转为.exe文件,我使用的是PyInstaller 1.安装PyInstaller: pip install Py ...
- java中key值可以重复的map:IdentityHashMap
在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 ...