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.

ZED 和 ZC之间无法通信

CPU为CC2652,在我们自己的硬件单板上是否无需修改sample程序就可以直接运行?

1) 目前一块单板运行zc_light,另一块运行zed_switch,都是使用默认配置,e.g. -DZDAPP_CONFIG_PAN_ID=0xFFFF

  两块单板启动后,串口UI信息:

ZED:

00124B001C9EA7ED
nFFFE c00 aFFFE
ZED (000) <INFO>

-- NotOnNwk
Id000 Srch000/00
< COMMISSION >

ZC:

00124B001C9EA829

n18E2 c00 a0000
ZC     <INFO>

-- NotOnNwk
Id000 Srch000/00
< COMMISSION >

请问软件需要做些配置才能正常组网入网?

ZED PAN_ID 什么情况下会变成无效的FFFE ?

  • 在自己板子上需要修改,请按照下面文档的Running the SDK on Custom Boards进行修改:
    http://dev.ti.com/tirex/explore/content/simplelink_cc26x2_sdk_2_30_00_34/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/index-cc26x2.html#running-the-sdk-on-custom-boards

  • 如YK提供的连接可以去参考:

    当然你可以去看程序中的UI部分,或者按键部分:

        if(keysPressed == KEY_LEFT)
        {
            zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq;
    
            if(ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE)
            {
                zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
                Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq);
            }
            else if (ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE)
            {
                zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
                Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq);
            }
        }

  • step 1) You can navigate through the User Interface using W, A, S, D and make selections using E. For more information about the User Interface, check the Zigbee Developer's Guide under the Common User Interface section.
    -- NotOnNwk
    Id000 Srch000/00
    < COMMISSION >

    step 2)To do this action with the Sample Application UI, navigate to the < COMMISSION > screen and press E. Alternatively, pressing BTN-1 on your LaunchPad accomplishes the same function.

    -- From Open176
    Id176 Srch000/00
    < COMMISSION >

    请问从step 1)到step 2), 我的一直是notOnNwk,我的单板没有按键,是否通过W,A,S,D同样可以设置,
    在这一步需要改什么,from open176这个是怎么出来的,这界面下我只能按E键啊
    -- NotOnNwk
    Id000 Srch000/00
    < COMMISSION >

    多谢回复
  • "from open176这个是怎么出来的,这界面下我只能按E键啊"
    是这样,这是ZC 允许入网的permit join.
    当你ZC处于这个状态时,你的ZED 也去同样的界面按E即可。
  • 这是按键部分代码,我们单板上没有按键,用UART UI 的'E' 键在下列界面下可同样bdb_StartCommissioning吧
    -- NotOnNwk
    Id000 Srch000/00
    < COMMISSION >
  • -- NotOnNwk
    Id000 Srch000/00
    < COMMISSION >
    在上面界面下按E, ZC会变成:
    NF CLOSED
    Id000 Srch000/00
    < COMMISSION >

    在上面界面下按E, ZED输出“Please wait”,后又恢复成原界面

    -- NotOnNwk
    Id000 Srch000/00
    < COMMISSION >


    另外, 下列信息不正常吧
    ZED:
    00124B001C9EA7ED
    nFFFE c00 aFFFE
    ZED (000) <INFO>

    ZC:
    00124B001C9EA829
    n18E2 c00 a0000
    ZC <INFO>
  • 请认真去看Yk提供的连接。

    在下面的< COMMISSION > 操作界面下,ZC和ZED 都需要按E。

  • 看了下上面链接文档,我现在是两块板子之间zigbee通信,我都是使用默认配置,不需要修改什么吧?
    另外我是使用simplelink_cc26x2_sdk_2_30_00_34里的ZC_light & ZED_switch样例程序
  • 不需要修改。
  • 我是在ZC界面下先按E,后在ZED界面下按E,但是两个界面很快返回
    ZC: NF CLOSE
    ZED: --NotOnNwk
  • 你把我最上面的给你贴的那个两个程序,分别参考不同的设备添加到初始化中试试。
  • 1) 原始代码sample代码:
    ZC:
    static void zclSampleLight_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg)
    {
    switch(bdbCommissioningModeMsg->bdbCommissioningMode)
    {
    case BDB_COMMISSIONING_FORMATION:
    if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
    {
    zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq;

    //After formation, perform nwk steering again plus the remaining commissioning modes that has not been process yet
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | bdbCommissioningModeMsg->bdbRemainingCommissioningModes;
    Zstackapi_bdbStartCommissioningReq(zclSampleLight_Entity,&zstack_bdbStartCommissioningReq);
    }
    else
    {
    //Want to try other channels?
    //try with bdb_setChannelAttribute
    }
    break;
    case BDB_COMMISSIONING_NWK_STEERING:
    if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
    {
    //YOUR JOB:
    //We are on the nwk, what now?
    }
    else
    {
    //See the possible errors for nwk steering procedure
    //No suitable networks found
    //Want to try other channels?
    //try with bdb_setChannelAttribute
    }
    break;
    case BDB_COMMISSIONING_FINDING_BINDING:
    if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
    {
    //YOUR JOB:
    }
    else
    {
    //YOUR JOB:
    //retry?, wait for user interaction?
    }
    break;

    ZED:
    static void zclSampleSw_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg)
    {
    switch(bdbCommissioningModeMsg->bdbCommissioningMode)
    {
    case BDB_COMMISSIONING_FORMATION:
    if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
    {
    zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq;

    //After formation, perform nwk steering again plus the remaining commissioning modes that has not been process yet
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | bdbCommissioningModeMsg->bdbRemainingCommissioningModes;
    Zstackapi_bdbStartCommissioningReq(zclSampleSw_Entity,&zstack_bdbStartCommissioningReq);
    }
    else
    {
    //Want to try other channels?
    //try with bdb_setChannelAttribute
    }
    break;
    case BDB_COMMISSIONING_NWK_STEERING:
    if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
    {
    //YOUR JOB:
    //We are on the nwk, what now?
    }
    else
    {
    //See the possible errors for nwk steering procedure
    //No suitable networks found
    //Want to try other channels?
    //try with bdb_setChannelAttribute
    }
    break;
    case BDB_COMMISSIONING_FINDING_BINDING:
    if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
    {
    //YOUR JOB:
    }
    else
    {
    //YOUR JOB:
    //retry?, wait for user interaction?
    }
    break;

    2) 我修改后代码:
    ZC:
    static void zclSampleLight_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg)
    {
    zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq;
    switch(bdbCommissioningModeMsg->bdbCommissioningMode)
    {
    case BDB_COMMISSIONING_FORMATION:
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
    Zstackapi_bdbStartCommissioningReq(zclSampleLight_Entity,&zstack_bdbStartCommissioningReq);

    break;
    case BDB_COMMISSIONING_NWK_STEERING:
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
    Zstackapi_bdbStartCommissioningReq(zclSampleLight_Entity,&zstack_bdbStartCommissioningReq);

    break;
    case BDB_COMMISSIONING_FINDING_BINDING:
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
    Zstackapi_bdbStartCommissioningReq(zclSampleLight_Entity,&zstack_bdbStartCommissioningReq);

    break;

    ZED:
    static void zclSampleSw_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg)
    {
    zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq;
    switch(bdbCommissioningModeMsg->bdbCommissioningMode)
    {
    case BDB_COMMISSIONING_FORMATION:
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
    Zstackapi_bdbStartCommissioningReq(zclSampleSw_Entity,&zstack_bdbStartCommissioningReq);

    break;
    case BDB_COMMISSIONING_NWK_STEERING:


    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
    Zstackapi_bdbStartCommissioningReq(zclSampleSw_Entity,&zstack_bdbStartCommissioningReq);

    break;
    case BDB_COMMISSIONING_FINDING_BINDING:
    zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING;
    Zstackapi_bdbStartCommissioningReq(zclSampleSw_Entity,&zstack_bdbStartCommissioningReq);

    break;

    3) 在ZC和ZED 的< COMMISSION > 操作界面下,ZC和ZED 按E 后,
    ZC和ZED 都会很快返回如下信息, 不知上述代码所放位置及修改内容是否正确? 多谢

    NS NotOnNwk
    Id000 Srch000/00
    < COMMISSION >
  • 你有沒有先設置primary channel?
  • 我没有设置,是指通过UI 设置PRI CHANL MASK? ZC 和ZED 都要设置吧

    我ZC及ZED都使用默认配置 -DDEFAULT_CHANLIST=0x00000800 /* 11 - 0x0B */
    这样的话我需要将Displayed Digit第一个1对应的bit选择成 ‘*’ ?
    SEC CHANL MASK不需要设置吧?

    Channel mask conversion
    Logical Channel 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
    Displayed Digit 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
  • 确认了一下,ZC及ZED默认配置如下,第一个1对应的bit已经是*了,应该是选择channel 11 了吧,不需要修改了吧
    1234567890123456
    *---------------
    <PRI CHANL MASK>
  • 這樣看來是已經設置了primary channel,建議你抓包看一下狀況