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.

LAUNCHXL-CC1352P: Power testing. What is consuming power once per second?

Part Number: LAUNCHXL-CC1352P
Other Parts Discussed in Thread: Z-STACK, LAUNCHXL-CC1352R1, LAUNCHXL-CC26X2R1, SIMPLELINK-CC13X2-26X2-SDK, SYSCONFIG, CCSTUDIO

We are designed a system to monitor energy used by industrial machinery and periodically transmit this data over a Zigbee network. Our system will use a CC1352P processor powered by an energy harvester that we are designing.

We are currently testing power consumption using a LAUNCHXL-CC1352P evaluation board running the TI zed_sw example. 

I made some updates,as follows, to the zed_sw example to reduce power as described in this tech note
"Z-Stack end device power consumption measurement with the SimpleLink™ wireless MCU family"

Ensured NV_RESTORE is defined
Undefined xBOARD_DISPLAY_USE_UART (add the x prefix to undefine it)
Added Board_shutDownExtFlash() to main()
Changed POLL_RATE to 5 minutes in zstack_config.h
Left DEFAULT_CHANLIST at channel 11 (see zstack_config.h)
Set power level to 0 dBm by calling Zstackapi_sysSetTxPowerReq() in zclSampleSw_Init()
I didn't disable boost mode as described in the note

The only other change I made was to create a TI-RTOS task that sends a Zigbee message every 10 seconds.

We are testing with an oscilloscope. Take a look at the following scope image. The tall spikes that occur every 10 seconds is the transmission of the Zigbee message. However, notice that there are two smaller spikes that occur once per second. Does anyone know what these spikes represent? The POLL RATE is 5 minutes, so they are not poll messages. The processor should be in low power mode most of the time. Does TI-RTOS wake up once per second to do something? Is the network doing something  once per second?

Does anyone know what's occurring once per second?

Thanks,

Tim

  • Thanks for the reply. 

    Notice there are two small spikes that occur once per second. On the oscilloscope we zoomed in to the first spike, and we believe this is the recharge pulse (it looks similar to the pulse in the document you reference).

    However we zoomed in on the second pulse and it looks very different and it's about 5.5 milliseconds wide, so we don't think this is a recharge pulse. We suspect the processor is waking up to do something, but what?

    The device we are testing is running the TI zed_sw example with the alterations I mentioned in my original post above. That example has an endless processing loop (see zclSampleSw_process_loop() in zcl_samplesw.c). That loop pends on a semaphore; when the semaphore is posted the loop wakes up and processes the event. There are 5 events that can occur:

    1. The radio receives a message
    2. A button press occurs
    3. A UI refresh event occurs
    4. A UI input event occurs (input has arrived at the UART)
    5. An end device rejoin event occurs

    The UI is disabled so events 3 and 4 are not occurring. I'm positive our device has joined the network, so event 5 is not occurring. We are not pressing the button, so event 2 should not be occurring. That leaves event 1.

    So my questions are:

    Is the radio waking every second to do something, like check for messages?

    How are button presses detected? Does the main processor wake up once per second to poll the button?

    Is there something else that I don't know about that occurs once per second?

    Any help would be appreciated. We need to get power consumption as low as possible. Remember this is the stock TI example, we are not doing anything weird.

    Thanks,

    Tim

  • This could be related to the integrated PA, have you tried disabling CONFIG_PA_TYPE=APIMAC_DEFAULT_PA?  Of course if you are using under 5 dBm output power you should consider using a LAUNCHXL-CC26X2R1 or LAUNCHXL-CC1352R1 instead as the external antenna switch could also be affecting power consumption.

    Regards,
    Ryan

  • If you suspect it’s case 1 causing the wakeup, you can set a breakpoint in “the radio receives a message“ related code of zclSampleSw_process_loop to verify it first.

  • Could these actually be zigbee end device to router/coordinator polls?

    The reason I ask is that we're trying to set the end device poll time to 5 minutes.  That's handled in the app through a #define value but I just went to look at what it does with that data, and the system calls to set the poll rate seem to all take a 16 bit (millisecond) value.  I'm wondering if we're seeing is actually a 1 second poll, because the rate we're trying to use is invalid.

  • Have you confirmed that data requests occur every second with a sniffer?  If you are using the v3.20 SIMPLELINK-CC13X2-26X2-SDK then you cannot simply modify the ti_zstack_config.h POLL_RATE due to a bug, in order  to fix the issue you must change the poll rate during run time like demonstrated in this other E2E thread: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/837567 

    If using SDK v3.30 then the bug is resolved but you will have to change the poll rate setting inside the SysConfig file as it will not be enough to change POLL_RATE from ti_zstack_config.h which is generated by SysConfig.

    Regards,
    Ryan

  • We just figure that i doesn’t work when we change POLL_RATE from ti_zstack_config.h in SDK 3.30, it’s good to know we have to change it on sysconfig. I would suggest you to mention this somewhere in your document otherwise people might have the same trouble using SDK 3.30. By the way, I think it’s better that TI can make change POLL_RATE from ti_zstack_config.h work in future SDK release. I see no reason why it needs to change POLL_RATE from SYSconfig.

  • Please reference the warning provided at the bottom of this page: http://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_3_30_00_03/docs/zigbee/html/sysconfig/zigbee.html 

    I apologize if it was not made clear enough.  Future SDK releases will continue to rely on the SysConfig tool to re-generate project files, in order to remove this dependency you must disable SysConfig.

    Regards,
    Ryan

  •   Shouldn’t it be more reasonable that sysconfig would change related value in ti_zstack_config.h and Z-Stack would use those value in ti_zstack_config.h to build firmware? In this way, it doesn’t matter that developer changes it from sysconfig or ti_zstack_config.h

  • I will pass along your feedback to the Software Development Team but this discussion has already occurred internally in favor of the process I've described.

    Regards,
    Ryan

  • The idea of generating boilerplate code with sysconfig is really helpful for getting started, it just shouldn't be the only way.  My application is very dynamic; a lot of these parameters are configurable at run-time (sometimes at next reboot).  Sysconfig-like approaches can be pretty nice, it's just no good if it's the only way.

    If I'm off base here disregard.  I think I'm a little behind on SDK versions at the moment and trying to catch up.

  • Getting back to my original problem. We have SDK 3.20 so due to the bug, polling was taking place every second. I was unaware of the bug so I thought polling was occurring every 5 minutes since I set it to 5 minutes in zstack_config.h. I fixed by using this code:

    zstack_sysConfigWriteReq_t writeReq = { 0 };
    writeReq.has_pollRate = true;
    writeReq.pollRate = POLL_RATE;
    writeReq.pollRateType = POLL_RATE_TYPE_DEFAULT;
    Zstackapi_sysConfigWriteReq(appServiceTaskId, &writeReq);

    I'll probably upgrade to SDK 3.30, even though I hate upgrading because of the potential of breaking things that are working (e.g. API changes).

    Regarding SysConfig, does this come with Code Composer Studio, or is it a separate download?

    Tim

  • Tim,

    I recommend using the SysConfig built into CCSTUDIO v9.x, however there is a standalone version available for third party IDE integration & custom development environments.  

    Regards,
    Ryan

  • I recommend you to use CCS9.2 which includes sysconfig For SDK 3.30.