This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SimpleLink CC13x2 / 26x2 SDK开发协调器出现的组网、入网和PA的问题

Other Parts Discussed in Thread: CC2652R, TIMAC, CC2592, SYSCONFIG, CC2650, CC2652P

开发平台:SimpleLink CC13x2 / 26x2 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的。

     

  • 1、新协议栈使用BDB来实现入网绑定等机制,直接BDB_COMMISSIONING_MODE_NWK_STEERING,不用调用NLME_PermitJoiningRequest
    2、参考这边链接配置:e2echina.ti.com/.../157395
    3、CC26X2/CC13X2 sdk里没有PA相关文件,无法通过sysconfig配置,建议从CC2650的配置开始,参考:
    e2e.ti.com/.../2955127
    e2e.ti.com/.../897953
  • 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,但是我在工程里全部搜索,也没找到这两个定义(不知道是定义还是专门的寄存器)?

  • 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

  • CC2592的设置请参考右边文档:www.ti.com/.../tidub71.pdf
  • 文档看了,里边的设置跟我上边写的这个一样:
    // 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);

    请问高低电平不需要设置么?还是只要按照这个映射了之后,协议栈就自动配置了?
  • 管脚映射就可以了
  • 建議如果CC2652R還要加上CC2592,就不如直接用CC2652P,內建PA,比較方便

  • 买的现成的模块~
  • 您好Viki,再问下,关于打开入网的问题:
    原来使用NLME_PermitJoiningRequest()函数打开入网的话,可以限定打开入网的时间,30秒还是60秒等;
    如果使用BDB_COMMISSIONING_MODE_NWK_STEERING的话,怎么限定入网允许的时间呢?现在好像是打开了3分钟的允许时间
  • 透過BDBC_MIN_COMMISSIONING_TIME去修改允许时间
  • 谢谢YK Chen,那还有个问题,这个zigbee模块是通过UART跟网关相连的,网关程序还是以前的程序,如果网关通过MT发送这个指令:
    MT_ZdoMgmtPermitJoinRequest(),还有效果吗?
    如果有效果的话,BDBC_MIN_COMMISSIONING_TIME定义的是180秒,MT指令定义的是60秒,以哪个为准呢?
  • 有效果,會以後發的那個為準