微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZStack中怎样获取各个通道的能量值

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

时间:10-02 整理:3721RD 点击:

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

谢谢!

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

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

SuSan and VV,

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

NLME_EDScanRequest( MAX_CHANNELS_24GHZ, _NIB.scanDuration )

VV好,

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

ZDNwkMgr_ProcessEDScanConfirm( ZDNwkMgr_EDScanConfirm_t *pEDScanConfirm )

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

VV您好,

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

你好,

在协议栈里面关于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,在这个函数里面你就可以获得扫描的结果了。

下面是我调试的截图

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扫描最后得到一个正常值的吗?

谢谢!

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

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

VV您好,

MAX_CHANNELS_24GHZ的定义是默认的,没有改,表示扫描所有通道。

#define MAX_CHANNELS_24GHZ    0x07FFF800

我的网络默认使用11通道(f8wConfig.cfg中-DDEFAULT_CHANLIST=0x00000800),协调器创建网络时会扫描ED,有时会扫描两到三次,并且串口输出“Energy Level Scan Failed”,我将ED值打印出来发现这时11通道和其他很多通道的ED值都是0,如果ED值越小越好,那此时11通道的ED值是0,为什么还会打印“Energy Level Scan Failed”呢?这时通道11-26的ED值为:00 00 00 00 00 2D 80 00 00 26 00 FF 07 00 00 00

当协调器创建网络成功的那一次ED扫描就不会再打印“Energy Level Scan Failed”,并且通道的ED值也基本都是非0值。为什么创建网络成功时所有通道的的ED值都不是0呢?这时通道11-26的ED值为:05 80 46 EC 24 FB F5 82 ED 34 FF F5 83 12 BF 6C

还想请教下,ED值是怎么得出来的呢?cc2530有对应的寄存器吗?

你好,我想请教一下ED值的物理含义是什么?功率还是能量呢?当我增大了信道扫描时间时,ED值并没有增大,代表他是功率吗?

您好,我想问一下怎样才能调出二位用仿真器显示的图片,该如何操作IAR软件才可以?

    您好,请问可以把完成的程序发给我参考下吗?对于信道能量检测并返回结果有点困惑。谢谢您。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top