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.

CC2538: Can one CC2538 network with 100 zigbee end devices?

Part Number: CC2538
Other Parts Discussed in Thread: Z-STACK, CC2652R, CC2650

Hi All

Our current solution is through two cc2538 to network with 100 zigbee end device (2650).
    One CC2538:Router
    Two CC2538:Coodinate

Q1:I hope to know if it is possible to network with 100 zigbee end device with only one CC2538.

Q2:If I use zstack 3.0. Does it network well with other versions? (with 1.2.2a or 2.6.2 or others)

Thanks a lot.

  • You can try to increase association table size to 100 to see if CC2538 coordinator can be build successfully. Since you don't mention the Zigbee traffic loading in your system, you might do field test to see if everything work fine.

  • Hi Kuo,

    This question has been asked multiple times on the E2E.

    https://e2e.ti.com/f/1/t/892515 
    https://e2e.ti.com/f/1/t/843669 
    https://e2e.ti.com/f/1/t/1127900 
    https://e2e.ti.com/f/1/t/1229995 

    In summary, the CC2538 should be capable of supporting this functionality, however as YK mentioned you will need to perform field tests to further understand the limitations of your application and environment.  I would certainly recommend having a few ZRs to help manage networking.  Z-Stack 3.0.2 is recommended as the latest solution for the CC253X, Z-Stack 1.2.2a is deprecated and does not include Zigbee 3.0 features

    Regards,
    Ryan

  • Thanks for your reply.

  • Thanks, I'm more confident.

    I can use Z-Stack 3.0.2.
    But I have no way of knowing the version of my customer's zigbee device.

  • If your connecting devices are based on Zigbee 3.0 ior ZHA 1.2, there is no problem to connect. However, you still have to know how frequently those device would send packets to evaluate the possibility.

  • Hi Ryan

    In addition,

    1、If I develope router & coodinate function in one cc2538.

    2、And supports OTA upgrade firmware.

    3、Then add a few instructions to control the transmission of data.
          (Need to support the standard profile of Accelerometer Sensor)

    According to your experience.

    Is the code size of cc2538 sufficient for such a requirement?

  • Thanks, 

    Preliminary understanding.

    My customer may need to support acceleration sensing.

    Is it suitable to use the GenericApp sample code in the sdk?

    Or is there something else more suitable?

    Thanks a lot.

  • CC2538 should be sufficient for all three items and yes, you can use GenericApp for such application.

  • Got it.

    Very thanks for your help.

  • By the way, CC2538 is actually not recommend as new design and I would suggest you to use CC2652R instead of CC2538 for your new design.

  • Thanks for reminding.

    But currently there is only one customer in this case who needs.

    It is very possible that I will be asked to directly modify the current structure. (Z-Stack 1.2.2a)

    To achieve the fastest demo for my customer.

  • Is your product providing the updated image to other devices in the network through OTA, or accepting new image updates itself?  Either way you should follow the Z-Stack Home 1.2.2a.44539\Documents\Z-Stack OTA Upgrade User's Guide.pdf for either resourcing the OTA server project or adding client functionality, respectively.  Then you will also need to be adding ZCL clusters/attributes for the accelerometer since this is not already utilized in a default Z-Stack example.

    Regards,
    Ryan

  • Thanks for your many help.

    The existing fw already has an ota architecture that can be updated itself.

    CC2538 is used as client.

    My device --> PCIE iface --> upgrade two CC2538

    Just modify it to one CC2538.

  • Hi Ryan

    May I ask if one CC2538 chip can combine router and coordinate at the same time.

    Why do many people choose two CC2538 chips? (One Chip:Router, One Chip:Coodinate)

    Are there any limitations to one chip?

    Number of terminal devices in the network?
    reaction speed?
    or others?

  • Hi YiKai

    I can't open this website.

  • If you are from China, you have to use VPN to access the link.

  • Sorry.

    Are there any other links??

    I work in the company.

  • Here are the contents of YK's blog post webpage: 

    Apply the following steps to SampleLight coordinator project and I can set the Logical Device type to Coordinator and router at run time.
    1. Add "uint8 dev_type=0;" as global variable in ZDApp.c.
    2. Add the red part in ZDAppDetermineDeviceType.
    void ZDAppDetermineDeviceType( void )
    {
      if (dev_type==0)
        zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR;
      else if(dev_type==1)
        zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER;

      
      if ( zgDeviceLogicalType ==ZG_DEVICETYPE_COORDINATOR )
      {
        devStartMode = MODE_HARD;     // Start as a coordinator
        ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_COORDINATOR;
      }
      else
      ...

    3. Revise the red part in ZDAppCheckForHoldKey.
    void ZDAppCheckForHoldKey( void )
    {
    #if (defined HAL_KEY) && (HAL_KEY == TRUE)

      // Get Keypad directly to see if a HOLD is needed
      zdappHoldKeys = HalKeyRead();

      // Hold down the SW_BYPASS_START key (see OnBoard.h)
      // while booting to avoid starting up the device.
      if ( zdappHoldKeys == SW_BYPASS_START )
      {
        // Change the device state to HOLD on start up
        //devState = DEV_HOLD;
        dev_type=1;

      }
    #endif // HAL_KEY
    }
    4. Revise the red part in ZGlobals.h
    extern uint8 dev_type;
     
    /*********************************************************************
     * MACROS
     */
    #if defined( BUILD_ALL_DEVICES ) && !defined( ZSTACK_DEVICE_BUILD )
      #define ZSTACK_DEVICE_BUILD  (DEVICE_BUILD_COORDINATOR | DEVICE_BUILD_ROUTER | DEVICE_BUILD_ENDDEVICE)
    #endif

    // Setup to work with the existing (old) compile flags
    #if 0
    #if !defined ( ZSTACK_DEVICE_BUILD )
      #if defined ( ZDO_COORDINATOR )
        #define ZSTACK_DEVICE_BUILD  (DEVICE_BUILD_COORDINATOR)
      #elif defined ( RTR_NWK )
        #define ZSTACK_DEVICE_BUILD  (DEVICE_BUILD_ROUTER)
      #else
        #define ZSTACK_DEVICE_BUILD  (DEVICE_BUILD_ENDDEVICE)
      #endif
    #endif
    #else
    #define ZSTACK_DEVICE_BUILD  (dev_type+1)
    #endif
    5. Compile the code and download it to CC2538DK. If I turn on CC2538DK without pressing any button, it will become ZC. If I turn on CC2538DK with UP key pressed, it will become ZR.
     
    You can refer to the Zigbee Device Overview as you have not made it clear why you need this functionality.  
    Regards,
    Ryan
  • Sorry, I want to confirm.

    My architecture:
    My gateway <----> (uart)cc2538(coordinator) <----> Approximately 50 to 80 zigbee end device( CC2538 or CC2650)

    Because there is no IAR license, I can only use Z-Stack 1.2.2a.

    So I need to open the following project:
    1、CC2538:SampleLight (coordinator.bin)   <--- Don’t need  Router?
    2、End device:CC2538 SampleSwitch (EndDevice.bin)   <--- CC2650:I didn't see for cc2650 in zstack 1.2.2a.

  • 1.Since your gateway connects to CC2538 to act as coordinator, I suppose you should use ZNP running on CC2538 instead of SampleLight.

    2.If you install Z-Stack home 1.2.2a, Z-Stack home for CC2650 can be found under C:\ti\simplelink\zstack_home_1_02_02a_44539

  • Thanks, great help.

    So I should use "CC2538-SBL" project in ZNP on the gateway coordinator.

    Then use "CC2538 or CC2650(End Device - Pro)" project from ZNP on the end device. 

  • I remember you don't need "CC2538-SBL" project in ZNP. For end device, you can use SoC mode (SampleLight or GenericApp example) instead of ZNP.

  • Very thanks.

    I will study it immediately

    Gateway coordinate:"CC2538" in ZNP

    End device:CC2538(SampleLight) or CC2650(SensorTag)