久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: Zigbee 設置信道,PANID,發射功率 [打印本頁]

作者: das    時間: 2015-4-18 00:31
標題: Zigbee 設置信道,PANID,發射功率
  現對z-stack里幾個網絡參數的設置以及如何獲取總結一下。
信道配置:
Zigbee在3個頻段定義了27個物理信道:868MHz頻段中定義了1個信道,915MHz頻段中定義了2個信道,信道間隔為2MHz,2.4GHz頻段上定義了16個信道,信道間隔為5MHz.
信道編號
中心頻率/MHz
信道間隔/MHz
頻率上限/MHz
頻率下限/MHz
k=0
868.3
--
868.6
868.0
k=1,2,…,10
906+2(k-1)
2
928.0
902.0
k=11,12,…,26
2401+5(k-11)
5
2483.5
2400.0
Z-stack中可以在f8wConfig.cfg里設置信道,相關部分如下:
/* Default channel is Channel 11 - 0x0B */
// Channels are defined in 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了。(NIB -NWK Information base-. 其中包含一些網絡屬性 PANID ,NETWORK ADDRESS 等等。其中_nib.nwkpanID是本網的ID標識,_NIB.extendedPANID按照字面意思是外網ID)
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 PAN ID.
*
* Setting this to a value other than 0xFFFF causes
* ZDO_COORD to use this value as its PAN ID and
* Routers and end devices to join PAN with this ID
*/
-DZDAPP_CONFIG_PAN_ID=0xFFFF
若要在應用中查看PANID可以這樣獲得,_NIB.nwkPanId,讀取這個就OK了。
發射功率:
傳送范圍的大小是和發射功率還有信道環境有關, 傳送速率和傳送范圍之間沒有直接聯系。所以呢,適當的增大發射功率可增大傳送范圍。但也是有一定的限制的。具體詳見datasheet。
在mac_radio_def.h里有可以設置:
#define MAC_RADIO_CHANNEL_DEFAULT               11
#define MAC_RADIO_TX_POWER_DEFAULT              0x1F
#define MAC_RADIO_TX_POWER_MAX_MINUS_DBM        25
這些只是舉例說明一下,這些參數的意義,以及在z-stack里的什么地方修改。還有很多其它的參數,可以查看相關的源文件。
[mac_radio_def.h]
#define MAC_RADIO_SET_CHANNEL(x)            st( FSCTRLL = FREQ_2405MHZ + 5 * ((x) - 11); )
#define MAC_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)
{
/* variable initialization 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]
uint8 macRadioRandomByte(void);
void macRadioSetPanCoordinator(uint8 panCoordinator);
void macRadioSetPanID(uint16 panID);
void macRadioSetShortAddr(uint16 shortAddr);
void macRadioSetIEEEAddr(uint8 * pIEEEAddr);
void macRadioSetTxPower(uint8 txPower);
void macRadioSetChannel(uint8 channel);
void macRadioStartScan(uint8 scanType);
void macRadioStopScan(void);
void macRadioEnergyDetectStart(void);
uint8 macRadioEnergyDetectStop(void);

設置發射功率:
CC2530 設置RF的發送功率寄存器為TXPOWER,全局搜索一下可以看到以下代碼

[csharp] view plaincopy




繼續跟蹤MAC_RADIO_SET_TX_POWER

[csharp] view plaincopy




在這里我們可以看到TXPOWER的設置值實際上應該是reqTxOower,讓我看一下reqTxOower在哪里設置吧,繼續跟蹤可以發現reqTxPower在函數MAC_INTERNAL_API uint8 macRadioSetTxPower(uint8 txPower)中得到更新,一路跟蹤下去可以在函數uint8 MAC_MlmeSetReq(uint8 pibAttribute, void *pValue)看到以下代碼

[csharp] view plaincopy




到這里為止Z-Stack發送功率的設置流程已經明確,但是我找遍Z-Stack的工程也沒有找到調用uint8 MAC_MlmeSetReq(uint8 pibAttribute, void *pValue)的地方想來應該是封裝在TI提供的LIB文件中了,
修改TXPOWER的方法有兩種:一、在uint8 macRadioSetTxPower(uint8 txPower)函數中通過修改macPib.phyTransmitPower = (uint8)(-(int8)macPib.phyTransmitPower);的值來修改TXPOWER參數,系統復位后將使用調用該函數設置發送功率。修改macPib.phyTransmitPower = (uint8)(-(int8)macPib.phyTransmitPower);可以通過修改以下結構體中的紅色部分來修改

[csharp] view plaincopy




該值可以再-22到3之間變化具體可以參考

[csharp] view plaincopy




二、就是使用MT功能

[csharp] view plaincopy










歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线免费黄色 | 中文字幕在线观看第一页 | 国产精品久久久久久久粉嫩 | 成人精品鲁一区一区二区 | 亚洲精品视频在线播放 | 亚洲精品一区二区网址 | 亚洲欧美日韩电影 | 日韩精品在线观看一区二区三区 | 欧美aaaaa | 日韩免费电影 | 日韩精品a在线观看图片 | 黑人久久久 | 亚洲欧美日韩精品久久亚洲区 | 伊人免费观看视频 | 99精品在线 | 国产无套一区二区三区久久 | 欧美高清免费 | 九九在线视频 | 一级黄a | 亚洲精品乱码久久久久久按摩观 | 久久精品亚洲欧美日韩久久 | 精品一区二区三区在线视频 | 免费国产一区二区 | 欧美午夜在线 | 亚洲在线免费 | 亚洲欧洲在线视频 | 亚洲欧美一区二区三区在线 | 亚洲精品久久久久久久久久久 | 人人看人人搞 | 欧美一区二区三区四区在线 | 激情三区| 超碰在线国产 | 成人在线精品 | 欧美www在线观看 | 久久久久网站 | 国产一区二区在线免费观看 | 国产精品国产三级国产aⅴ中文 | 午夜小视频在线播放 | 91亚洲国产成人久久精品网站 | 日韩午夜电影在线观看 | 粉嫩国产精品一区二区在线观看 |