The FAQ of TI ZigBee
Written by RF-star senior adviser XCODER (a We-Media essayist)
1. Due to the differences among the versions of TI ZigBee protocol stack, how to choose the right protocol stack for product development?
TI ZigBee protocol stack Z-Stack is developed from Z-Stack 0.1 to Z-Stack 2.5.1a, and later Z-Stack Home 1.2.1, Z-Stack Lighting 1.0.2, Z-Stack Energy 1.0. 1, Z-Stack Mesh 1.0.0. In the process of upgrading the protocol stack, TI has mainly done two aspects of the protocol stack.
1) Add some new features according to the ZigBee Specification of the ZigBee Alliance.
For example, ZigBee 2007 is a tree-shaped routing. In ZigBee Pro, Mesh routing is coming out, and routing algorithms such as MTO and Source Routing are proposed. TI adds corresponding new features to the protocol stack is to fix some related bugs in specs, such as those with ambiguous descriptions.
2) To fix the bug in the TI ZigBee protocol stack itself.
The difference of the protocol stack between a version and the previous version can be found in the Release Note.
After the version of Z-Stack 2.5.1a, TI protocol stack did not continue to be released directly in the form of Z-Stack 2.6.x, but was released in the form of Application Profile.
The reason is that TI wants developers to choose more targeted protocol stack for development according to the actual application. Protocol stack like Z-stack Home 1.2.1 mainly includes the following two parts.
1) The Core Stack, the beginning of this part is the continuation version of Z-Stack 2.5.1a and later, can be found in the Z-Stack Core Release Notes.txt, Version 2.6.2.
2) The application protocol stack is related to the profile, which is mainly related to the actual application. The Home Automation protocol stack is all related to the implementation of the ZigBee Home Automation Profile. Similarly, Z-Stack Lighting 1.0.2 and Z-Stack Energy 1.0.1 are also a Core Stack with an application profile.
a. Z-Stack Home 1.2.2a is developed for smart home related products.
b. Z-Stack Lighting 1.0.2 is developed for ZLL related products.
c. Z-Stack Energy 1.0.1 is developed for smart energy, Meter, In Home Display, and other related products.
d. Z-Stack Mesh 1.0.0 is developed for products related to private applications, which only uses standard ZigBee protocol related features, such as Mesh routing, etc. The application layer is defined by the developer.
After the ZigBee Alliance released the , the latest ZigBee protocol stack is Z-Stack 3.0, which currently supports , CC2538, , .
2. How to do ZigBee testing and certification of products, what needs to be understood and what process needs to be followed?
There is an example about the development of standard ZigBee Home Automation related products. To begin with, when developers develop products, they must develop products according to the products described in the ZigBee Home Automation Profile Specification which can be downloaded at . After completing the product development, developers need to understand the ZigBee Home Automation Profile Test Specification which can also be downloaded at www.zigbee.org. The document describes the relevant test items that a specific product needs to be tested in the Test House. There is also a PICS document besides the above two documents. The third document describes the functions supported by the products that need to be certified and tested. Developers compare and confirm the features in PICS according to the actual functions of the developed products and the functions required in the Specification. The following is the test process.
1) Join the ZigBee Alliance, there will be a test laboratory that can help to complete the test.
2) Send samples to the test laboratory and complete the PICS file.
3) After the first round of pre-testing, the test laboratory feedbacks the test results, and the developer modifies the sample code. (If needed)
4) Verify the modified sample in the test laboratory, and then start the formal test.
5) The developer completes the preparation and submission of the ZigBee Alliance online certification application materials with the help of test laboratory.
6) The test laboratory submits a formal test report to the ZigBee Alliance. The alliance will review and issue a certificate.
At present, there are seven testing laboratories that can do the standard ZigBee testing.
o Chinese Electronics Standardization Institute (CESI)
o Element Materials Technology
o National Technical Systems, Inc. (NTS)
o UL
o Bureau Veritas
o Dekra
o TÜV Rheinland Group
3. How to select the 64-bit MAC address of the device?
There are two IEEE addresses in CC2530 / CC2538 / CC2630, the one is called Primary IEEE address, and the other is called Secondary address. The Primary IEEE address is stored in the Information Page of the chip. This Primary address is purchased by TI from the IEEE Association, and each of them is unique. The user can only read this value and cannot erase/modify. Reading the address in the protocol stack can obtain Osal_memcpy (aExtendedAddress,(uint8*)(P_INFOPAGE+HAL_INFOP_IEEE_OSET),Z_EXTADDR_LEN). The secondary address is stored in the last page of Flash, and the user can perform Read/Write through the function HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, aExtendedAddress, Z_EXTADDR_LEN).
How does the protocol stack operate to select the Primary IEEE address or the Secondary address as the MAC address of the device? The specific operation is in zmain_ext_addr(void).
1) Read the IEEE address from NV. If the MAC address is already existing (none of which is 0xFF), then it can be the MAC address.
2) If the MAC address does not exist in 1), it can be read from the storage location of Secondary IEEE address. If it exists in the storage location of Secondary IEEE address (none of which is 0xFF), the address can be written into NV as the MAC address later.
3) If the MAC address does not in 2), it can be read from the storage location of the Primary IEEE address. If it exists in the storage location of the Primary IEEE address (none of which is 0xFF), the address can be written into NV as the MAC address later.
4) If the MAC address does not in 3), a 64-bit variable address is randomly generated, written into the NV as the MAC address.
4. End Device is a low-power device with battery power supply. After the node is disconnected from the network, how to prohibit nodes from continuously searching the network, or how to increase the interval between sending Beacon Requests?
1) Start searching network: uint8 ZDApp_StartJoiningCycle(void)
Stop searching the network: uint8 ZDApp_StopJoiningCycle(void)
2) Change the cycle of sending Beacon Request.
Modify the variable: zgDefaultStartingScanDuration
// Beacon Order Values
#define BEACON_ORDER_NO_BEACONS 15
#define BEACON_ORDER_4_MINUTES 14 // 245760 milliseconds
#define BEACON_ORDER_2_MINUTES 13 // 122880 milliseconds
#define BEACON_ORDER_1_MINUTE 12 // 61440 milliseconds
#define BEACON_ORDER_31_SECONDS 11 // 30720 milliseconds
#define BEACON_ORDER_15_SECONDS 10 // 15360 MSecs
#define BEACON_ORDER_7_5_SECONDS 9 // 7680 MSecs
#define BEACON_ORDER_4_SECONDS 8 // 3840 MSecs
#define BEACON_ORDER_2_SECONDS 7 // 1920 MSecs
#define BEACON_ORDER_1_SECOND 6 // 960 MSecs
#define BEACON_ORDER_480_MSEC 5
#define BEACON_ORDER_240_MSEC 4
#define BEACON_ORDER_120_MSEC 3
#define BEACON_ORDER_60_MSEC 2
#define BEACON_ORDER_30_MSEC 1
#define BEACON_ORDER_15_MSEC 0
5. How to make End Device enter low-power status and how to set the sleep time?
After enable POWER_SAVING in the protocol stack macro definition, and then operate -DRFD_RCVC_ALWAYS_ON=FALSE in the f8wConfig.cfg file, then the End Device can enter the sleep status.
The sleep time is determined by the scheduling of the OSAL operation system. Each sleep time is based on the latest Event Timeout as the sleep time. The details are explained in the protocol stack hal_sleep function.
This timeout is mainly divided into two categories, the one is the timeout of application layer events, and the other is the timeout of MAC layer events.
1) The timeout time of the application layer is obtained by osal_next_timeout(); in the function of osal_pwrmgr_powerconserve( void).
2) The timeout time of the MAC layer is obtained by MAC_PwrNextTimeout(); in the function of halSleep(uint16 osal_timeout).
6. What's new in the ZigBee 3.0 protocol stack?
Please refer to the link below, which introduces the additions of the ZigBee 3.0 protocol stack compared to the previous ZigBee Home Automation/ZigBee Light Link.
7. Detailed explanation of the state switching of the terminal equipment in the TI ZigBee protocol stack.
8. The differences between OAD and OTA in TI protocol stack.
OAD is Over the Air Download, and OTA is Over the Air. The functions of these two implementations are the same, and both can be called remote upgrades to the program. In the early ZigBee protocol standard, there is no standard for the over-the-air upgrade of the node program, but many customers have requirements for it. Therefore, TI has developed a set of protocol stacks for the over-the-air upgrade of the program and named it OAD. ZigBee Alliance realized that the demand was increasing, then they also specified a standard for over-the-air upgrades and named OTA, which also referred to TI OAD implementation and made relevant modifications. Therefore, in early TI protocol stack, the over-the-air upgrade is called OAD, and later in ZigBee Alliance, it is called OTA.
9. If the 32K crystal oscillator is not soldered in a non-low power device, how to modify the Z-Stack protocol stack?
In the Z-Stack protocol stack, whether the used crystal oscillator is stable will be checked during the initialization process. If the 32K crystal oscillator is not soldered, the following code needs to be modified. TI Z-Stack protocol stack uses 32K crystal oscillator by default.
In the file of hal_board_cfg.h, #define OSC32K_CRYSTAL_INSTALLED FALSE
10. If a private application need to be developed based on the ZigBee Mesh network, which protocol stack should be selected?
Many users, in some industrial applications, only want to use the functions of the ZigBee mesh network in their own systems or products, and do not need to follow the application layer specifications defined by ZigBee. For such application requirements, how to choose appropriate TI protocol stack for product development?
11. When using CC2630/CC2650 ZigBee to develop, can I debug with a breakpoint in the Core stack code?
Yes. You must download the file corresponding to the breakpoint code and open it in advance, then debugging.
12. How does the Zigbee coordinator select the appropriate channel to create the network?
The creation of a Zigbee network must be completed by a coordinator. A Zigbee network has only one coordinator. The Zigbee coordinator mainly completes the selection of the network channel and the generation of PANID when creating the network. There are two steps to select the channel.
1) Passive scan is also called Energy Scan. Passive scanning means that the coordinator turns on its receiver, and then scans sequentially on the previously set channel list. After scanning, the energy value of each channel will be obtained. This energy mainly comes from other Zigbee networks or other 2.4 GHz wireless networks signal. The coordinator will consider the channel whose energy value is higher than the preset threshold value as having greater interference, and remove the channel.
2) Active Scan. In the channels left after the first round of scanning, Beacon Requests are sent in sequence. If the corresponding Beacon data packet is received, it is considered that there are other Zigbee devices in the channel. Finally, the coordinator will choose a PANID that does not have other Zigbee networks, or the channel with the least Zigbee network to establish its own network and set a PANID that does not conflict.
13. How to delete UI and use TI Zigbee 3.0 protocol stack to quickly enter product development mode?
14. How to optimize the Flash and RAM of CC2530?
//www.ti.com/lit/wp/swra635/swra635.pdf
CC2650, CC2538, CC2652R, CC2630, Z-Stack, CC2530