TI中文支持网
TI专业的中文技术问题搜集分享网站

ZStack中怎样获取各个通道的能量值

请问大家,谁知道在ZStack中怎样获取11到26通道的通道能量值呢?

谢谢!

VV:

协议栈中有针对ED Scan的API函数

Susan Yang:

回复 VV:

可以看一下 协议栈安装文件夹内的 802.15.4 MAC API  第19页

bx da:

回复 Susan Yang:

SuSan and VV,

谢谢你们的回复,使用这个函数MAC_MlmeScanReq(macMlmeScanReq_t *pData)就可以实现吧,scanType设置为:MAC_SCAN_ED?

VV:

回复 bx da:

NLME_EDScanRequest( MAX_CHANNELS_24GHZ, _NIB.scanDuration )

bx da:

回复 VV:

VV好,

谢谢您的回复,NLME_EDScanRequest函数只是request,上层怎么知道什么时候扫描完成,并且得到通道ED值呢?

VV:

回复 bx da:

ZDNwkMgr_ProcessEDScanConfirm( ZDNwkMgr_EDScanConfirm_t *pEDScanConfirm )

这个函数是可以看到的啊!

bx da:

回复 VV:

VV您好,

static void ZDNwkMgr_ProcessEDScanConfirm( ZDNwkMgr_EDScanConfirm_t *pEDScanConfirm )这个函数应该是NwkMgr自己内部的函数,这个函数是通过ZDNwkMgr_EDScanConfirmCB函数发消息产生的调用,而ZDNwkMgr_EDScanConfirmCB函数应该是在协议栈内部调用的(并且我在该函数加打印信息测试,发现没有调用这个函数)。我在应用层是不能直接用这个函数的。

VV:

回复 bx da:

你好,

在协议栈里面关于ED Scan Request, 你直接使用NLME_EDScanRequest函数就可以了,在这个函数里面调用的是ZMacScanReq,在这个函数里面调用的是

MAC_MlmeScanReq。所以你直接使用NLME_EDScanRequest就可以了。

在扫描完成以后,首先调用的是 macScanComplete,这个函数里面会调用MAC_CbackEvent,这个函数里面会把扫描结果发到网络层去,在网络层里面会调用

pNwkFreqAgilityScanCfg = NwkFreqAgilityScanCfg这个call back函数。在这个callback函数里面,会调用ZDNwkMgr_EDScanConfirmCB,在这个callback函数里面会把NM_ED_SCAN_CONFIRM消息发送给 ZDNwkMgr_TaskID,那么你只要去ZDNwkMgr_event_loop处理这个消息就可以了,处理这个消息的函数是

ZDNwkMgr_ProcessEDScanConfirm( (ZDNwkMgr_EDScanConfirm_t *)msgPtr ) 之后调用ZDNwkMgr_BuildAndSendUpdateNotify,在这个函数里面你就可以获得扫描的结果了。

下面是我调试的截图

bx da:

回复 VV:

VV您好,

谢谢您的详细回复,我按照您的方法,用NLME_EDScanRequest(MAX_CHANNELS_24GHZ, 1);请求扫描ED值,用仿真器设置断点看返回的ED值,但是我扫描出来的ED值还是很多通道都是0,感觉是不正常的ED值,下面是我调试的截图。

所以有几个问题想麻烦您帮忙确认:

1、很多通道扫描返回的ED值都是0应该是不正常的吧?

2、Zigbee协议里面ED值是属于phy层,表示通道检测到的能量值,这个值是会以一个8位数送给mac层,ED应该是越大越好吧?越大表示通道能接收或发送的能量越高?

3、cc2530有没有寄存器直接能读ED值呢?我只看到RSSI值的寄存器。

4、协调器创建网络时也会扫描ED,有时会扫描两到三次,并且串口会输出“Energy Level Scan Failed”,我将ED值打印出来发现这种情况下很多通道的ED值也都是0。协调器创建网络成功的最后一次ED扫描就不会打印“Energy Level Scan Failed”,并且通道的ED值也基本都是非0值。您能大概说下协议栈内部是怎么进行多次ED扫描最后得到一个正常值的吗?

谢谢!

VV:

回复 bx da:

MAX_CHANNELS_24GHZ这个值你那边定义的是多少?

ED值越大越不好,越大表明信道中正在进行无线通信,或者其他干扰信号,所以能量值会很高。

赞(0)
未经允许不得转载:TI中文支持网 » ZStack中怎样获取各个通道的能量值
分享到: 更多 (0)