zoukankan      html  css  js  c++  java
  • 转 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);

  • 相关阅读:
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    COM对象
  • 原文地址:https://www.cnblogs.com/sgh69/p/6214035.html
Copyright © 2011-2022 走看看