开发平台:SimpleLink CC13x2 / 26×2 SDK ,IAR
使用芯片:CC2652R
设备类型:协调器
使用模板:C:\ti\simplelink_cc13x2_26x2_sdk_3_40_00_02\examples\rtos\CC26X2R1_LAUNCHXL\zstack\zc_cie
工程配置:
NPI_USE_UART
NPI
ZTOOL_P1
MT_TASK
MT_APP_FUNC
MT_SYS_FUNC
MT_AF_FUNC
MT_ZDO_FUNC
MT_ZDO_CB_FUNC
MT_NWK_FUNC
MT_NWK_CB_FUNC
MT_UTIL_FUNC
MT_APP_CNF_FUNC
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_BASIC
ZCL_IDENTIFY
ZCL_ZONE
ZCL_WD
ZCL_ACE
TIMAC_ROM_IMAGE_BUILD
TIMAC_ROM_PATCH
xUSE_ZCL_SAMPLEAPP_UI
MAX_STATUS_LINES=10
ZSTACK_SECURITY
xBOARD_DISPLAY_USE_UART
FREQ_2_4G
OSAL_PORT2TIRTOS
OSAL_PORT2TIRTOS_OSALMAP
STACK_LIBRARY
RCN_APP_ASSERT
HAL_ASSERT_SPIN
ZDO_API_BASIC
TC_LINKKEY_JOIN
NV_RESTORE
NV_INIT
FEATURE_NON_BEACON_MODE
ZCL_STANDALONE
MAX_DEVICE_TABLE_ENTRIES=50
NVOCMP_NVPAGES=2
DEVICE_FAMILY=cc26x0
CC26X2R1_LAUNCHXL
DeviceFamily_CC26X2
遇到的问题:
1、关于组网
通过例程,了解到3.0的协议栈现在都是通过BDB来实现的,通过Zstackapi_bdbStartCommissioningReq(),可以启动网络,里边有4种配置:
BDB_COMMISSIONING_MODE_INITIATOR、
BDB_COMMISSIONING_MODE_NWK_STEERING、
BDB_COMMISSIONING_MODE_NWK_FORMATION、
BDB_COMMISSIONING_MODE_FINDING_BINDING;
根据我的试验,单独配置BDB_COMMISSIONING_MODE_NWK_FORMATION,会建立网络,配置BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING的话,会建立网络并且打开允许入网。
ZHA1.2种的允许入网用的是NLME_PermitJoiningRequest()。然后我看3.0协议栈里,还有这个函数,请问它和 BDB_COMMISSIONING_MODE_NWK_STEERING的允许入网有说明区别么?或者我可以先通过BDB_COMMISSIONING_MODE_NWK_FORMATION建立网络,不配置BDB_COMMISSIONING_MODE_NWK_STEERING,然后再调用NLME_PermitJoiningRequest()来允许入网么?
2、设备入网
我初始化里,配置了BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING,启机之后立即打开了允许入网,从抓包里也能看出来。这时我让一个ZHA1.2的路由开关申请入网,能看到抓包里有关联请求,协调器也发了关联回应,但是就没有后来transkey了,开关一直入不了网,我检查了别人提到过的配置,
#define BDB_DEFAULT_JOIN_USES_INSTALL_CODE_KEY FALSE
#define BDB_DEFAULT_TC_REQUIRE_KEY_EXCHANGE FALSE
这两项都是FALSE的。
3、PA
我的zigbee模块使用了CC2592做PA的,但是在协议栈和SysConfig里找了两天,还是没有看到从哪里开启PA的设置,ZHA协议栈里是添加“HAL_PA_LNA_CC2592”的定义来启用PA的。
user5020974:
回复 Viki Shi:
n您好,Viki~
您提供 的链接,我看了,另外也看了论坛里相关的帖子,关于PA的这块,还是不太了解 。
1、我看帖子里的用法就说到了IO的配置,是只要将PA_EN、 LNA_EN、 HGM这3个GPIO配置成输出,然后固定其高低电平就行了么?协议栈本身在运行期间怎么不需要对这几个IO端口进行操作么?
2、CC2592的工作模式如下:
PA_EN LNA_EN HGM 模式
0 0 X 掉电 X 1 0 RX低增益模式 X 1 1 RX高增益模式 1 0 X TX
我初始化这3个IO端口,应该都配置说明电平呢? ZHA1.2.2的协议栈种,我看初始配置的PA_EN =0,LNA_EN =1,这样的话,发送的时候,是不是就是没有增益了?还是在协议栈种在发送和接收的时候,有对这几个IO口的工作模式的切换?
3、我看还有的提到,需要将PA_EN、 LNA_EN映射到RFC_GPO0和PA到RFC_GPO1,但是我在工程里全部搜索,也没找到这两个定义(不知道是定义还是专门的寄存器)?
user5020974:
回复 user5020974:
IO映射这块找到了,那我这么修改对吗?PA可以工作了吗?
1、在初始化程序种添加:
//将RFC_GPO0映射到DIO13 IOCPortConfigureSet(IOID_13,IOC_PORT_RFC_GPO0,IOC_IOMODE_NORMAL); //将RFC_GPO1映射到DIO7 IOCPortConfigureSet(IOID_7,IOC_PORT_RFC_GPO1,IOC_IOMODE_NORMAL);
2、通过sysconfig添加DIO14,配置为输出、高电平:
GPIOCC26XX_DIO_14 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_HIGH
Viki Shi:
回复 user5020974:
CC2592的设置请参考右边文档:www.ti.com/…/tidub71.pdf
user5020974:
回复 Viki Shi:
文档看了,里边的设置跟我上边写的这个一样:
// Map RFC_GPO0 to DIO13 IOCPortConfigureSet(IOID_13, IOC_PORT_RFC_GPO0, IOC_IOMODE_NORMAL); // Map RFC_GPO1 to DIO7 IOCPortConfigureSet(IOID_7, IOC_PORT_RFC_GPO1, IOC_IOMODE_NORMAL);请问高低电平不需要设置么?还是只要按照这个映射了之后,协议栈就自动配置了?
Viki Shi:
回复 user5020974:
管脚映射就可以了
YiKai Chen:
回复 user5020974:
建議如果CC2652R還要加上CC2592,就不如直接用CC2652P,內建PA,比較方便
user5020974:
回复 YiKai Chen:
买的现成的模块~
user5020974:
回复 Viki Shi:
您好Viki,再问下,关于打开入网的问题:
原来使用NLME_PermitJoiningRequest()函数打开入网的话,可以限定打开入网的时间,30秒还是60秒等;
如果使用BDB_COMMISSIONING_MODE_NWK_STEERING的话,怎么限定入网允许的时间呢?现在好像是打开了3分钟的允许时间
YiKai Chen:
回复 user5020974:
透過BDBC_MIN_COMMISSIONING_TIME去修改允许时间