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.

CC2640: Beacon advertisement issue

Part Number: CC2640

I am having problem with CC2640 hardware. The problem is that, sometimes the tag stops advertisement and it doesn't start advertisement again even after giving power cycle.

After investigation it was found out this issue is related discharging of capacitors, in order to verify this supply is removed for a longer time (i.e more than 30 sec) to allow all the capacitors to discharge. Once all the capacitors are discharged, and power is given to tag, it start working.

After further investigation it was found out that the VDDS decoupling 10uf capacitor (c6 in the following diagram) is causing the problem, so after removal of this 10uf capacitor, this advertisement issue is resolved

My question is that we have designed the circuit according to TI recommended schematic and this 10uf capacitor is recommended by TI, so therefore it is requested you to please check the design and let us know the issue guide us know the main issue.

  • Hi Sumair,

    It sounds like you have a problem with that specific capacitor. For proper operation we recommend a 10 uF or 22 uF decoupling capacitor on VDDS. This has been used in all testing and characterization.

    Cheers,
    Fredrik
  • Hi Fredrik,

    Thanks for your prompt response.

    We used TI recommended capacitor "CL10A106MQ8NNNC", this capacitor is working in one circuit and in another circuit it doesn't work. Can we remove this capacitor permanently from the circuit, will there be any consequences?

    Regards,
    Sumair
  • Hi Sumair,

    I would not recommend removing the 10 uF decoupling capacitor. It is required for the DCDC and to handle the transients when turning on the radio.

    Why do you believe there is a problem with the capacitor? What measurements is this conclusion based on?

    Regards,
    Fredrik
  • Hi Fredrik,

    Can you send me your email id so that i can send you design files and videos of testing.

    Regards,
    Sumair
  • Hi Fredrik,

    Did you read my last message?

    Regards,
    Sumair

  • Hi Sumair,

    I cannot share my email address. If you can provide more information on why you believe the failure is caused by having a 10 uF dacoupling capacitor on VDDS (measurements, etc.) I can help you out. If not, I can only repeat that it is recommended to have this capacitor in the design to avoid triggering the BOD during current transients when changing power states, enabling the radio and so on.

    Regards,
    Fredrik
  • Dear ,
    if it works on one board and not in the other, it is probably a soldering problem. Can this be?
  • The problem is not in circuit, this problem is in batch.
    In one production out of thousands some boards has this issue while in another batch this problem is very prominent (more than 90%). The components and hardware design everything is same.
  • Is there any chance that some batch of TI chip has this problem?

    Regards,
    Sumair

  • HI Sumair,

    There are no known problems associated with what you see.

    You still have not answered this question: Why do you believe there is a problem with the capacitor? What measurements is this conclusion based on?

    Regards,
    Fredrik
  • Fredrik K said:
    HI Sumair,

    There are no known problems associated with what you see.

    You still have not answered this question: Why do you believe there is a problem with the capacitor? What measurements is this conclusion based on?

    Regards,
    Fredrik



    Hello Fredrik,

    After analyzing the situation I came to a conclusion that this problem is some how related to "brownout" condition.

    Sometime it happens that if power is removed and plugged in immediately, then tag doesn't restarts and it enters into an unknown state in which it doesn't send advertisement data, unless power is removed for particular time and allow all the capacitors to discharge. 
    Please see attached video for better understanding.

    Please be noted that even in this unknown state "External Hardware Interrupt" does work.

  • Hello  

    I'd appreciate if you can look into this problem.


    Thanks

    Sumair Qureshi

  • You can try to add a timer in main.c to delay the rest of the task and see if that helps.
  • Hello ,

    Thanks for your prompt response. I have already tried it, but i didn't work :(


    Regards,
    Sumair

  • Please use task_sleep instead of delay_ms.  so that the device can stay in low power state when it tries to boot.

    Following is the example code. 

    /*******************************************************************************
     * @fn          Main
     *
     * @brief       Application Main
     *
     * input parameters
     *
     * @param       None.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.   
     */
    
    void delayTaskFxn(uintptr_t a0, uintptr_t a1)
    {
    
      Task_sleep(5000 * (1000 / Clock_tickPeriod));
    
      
      Task_disable();
      
      /* Initialize ICall module */
      ICall_init();
      
      /* Start tasks of external images - Priority 5 */
      ICall_createRemoteTasks();
      
      /* Kick off profile - Priority 3 */
      GAPRole_createTask();
      
      SimpleBLEPeripheral_createTask();
      
      Task_enable();
      
    }
    
    Task_Struct delayTaskStruct;
    uint8_t delayTaskStack[1024];
    
    
    int main()
    {
      /* Register Application callback to trap asserts raised in the Stack */
      RegisterAssertCback(AssertHandler);
    
      PIN_init(BoardGpioInitTable);
    
    #ifdef CC1350_LAUNCHXL
      // Enable 2.4GHz Radio
      radCtrlHandle = PIN_open(&radCtrlState, radCtrlCfg);
      
    #ifdef POWER_SAVING
      Power_registerNotify(&rFSwitchPowerNotifyObj, 
                           PowerCC26XX_ENTERING_STANDBY | PowerCC26XX_AWAKE_STANDBY,
                           (Power_NotifyFxn) rFSwitchNotifyCb, NULL);
    #endif //POWER_SAVING
    #endif //CC1350_LAUNCHXL
    
    #ifndef POWER_SAVING
      /* Set constraints for Standby, powerdown and idle mode */
      Power_setConstraint(PowerCC26XX_SB_DISALLOW);
      Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
    #endif // POWER_SAVING
    
      Task_Params taskParams;
      Task_Params_init(&taskParams);
      taskParams.stack = delayTaskStack;
      taskParams.stackSize = sizeof(delayTaskStack);
    
      Task_construct(&delayTaskStruct, delayTaskFxn, &taskParams, NULL);
    
      /* enable interrupts and start SYS/BIOS */
      BIOS_start();
    
      return 0;
    }

  • Hi Sumair,

    I merged your two threads since they are about the same topic.

    We recommend using a 22 uF capacitor when running off coin cell batteries, can you try changing C6 to 22 uF and see if that helps?

    Cheers,
    Fredrik
  • And what is the state of the battery you are using? Is it fully charged, or discharged?
  • Dear Fredrik

    Battery is fully charged.
    I'll change the capacitor and let you know soon.

    Dear Christine,
    Thanks for example code, I am changing code will update you in a while.

    Regards,
    Sumair
  • Hello Christine/Fredrik,

    I changed the code as you suggested but all in vain. Result is same.

    Let me brief you more about the situation;
    - We have produced 15,000+ tags in different batch. In last 2 batches we faced this problem.
    - After production and QC, tag is shipped to client (Tag was powered on during shipment).
    - When tag is received to client, it was found out that some tags were not working, after investigating it is identified that tag entered into unknown state where it stopped sending beacon, and it was not working unless all capacitors were discharged.

    To repeat this situation we write a code in which we stop the advertisement manually by sending command to UART, following are the steps we followed to turn off the advertisement;

    - Power on the tag
    - Connect the tag with central
    - Send "advertisement off" command on UART to peripheral
    - After receiving the command peripheral disable the advertisement by disabling the flag "initialAdvertEnable = FALSE;"
    - Unplug the battery and plug in.

    After following these steps we were able to repeat the same situation we faced in last productions in which tag doesn't starts advertisement unless all capacitors are discharged.

    I hope now you are more aware of the situation. Please let me know if you have any confusion.

    Regards,
    Sumair
  • HI Sumair,

    So you can consistently provoke the issue? On all devices, or just some? What is the VDDR voltage and DCOUPL voltage in this state? Do you see any oscillations on the 32k crystal?

    What are the timing window between unplugging and reconnecting the battery to trigger the problem?

    Regards,
    Fredrik
  • Yes I can consistently provoke the issue on all device.

    There are 3 states;

    State 1: Normal Working

    State 2: Hanging Unknown State (In which advertisement stops automatically)

    Solution of this problem:

    UnPlug the battery for 5-10 secs to all all capacitor to discharge.

    State 3: Advertisement Unknown State (In which advertisement stops Manually)

    Solution of this problem:

    1- UnPlug the battery for 5-10 secs to all all capacitor to discharge.

    2- Use External Interrupt to enable advertisement  through "initialAdvertEnable" flag.

    Following are values of voltage in all 3 states;

    - VDDR Voltage at State 1: 1.675V

    - VDDR Voltage at State 2 : 0.00V

    - VDDR Voltage at State 3: Fluctuating from 1.5V to 1.6V


    - DCOUPL Voltage at State 1: 3.66V

    - DCOUPL Voltage at State 2: 3.66V

    - DCOUPL Voltage at State 3: 3.66V


    Regards,

    Sumair Qureshi

  • Hi Sumair,

    I meant the DCOUPL pin, not the VDDS decoupling capacitors. Anyway, it is not important, if VDDR is 0 V then DCOUPL will also be 0 V. 

    Can you use an oscilloscope an capture the VDDS curve and the VDDR curve when you trigger the problem?

    Regards,
    Fredrik

  • Hello Fredrik,

    As mentioned earlier there are 3 states.

    State 1 (normal working state) and state 2 3 (Advertisement manually turn off) is repeatable and Waveform at DCOUPL pin in state 1 and state 2 3 are normal (i.e. 1.2V), while state 3 2 (Unknown state, which is the main problem) is not repeatable, so i am unable to capture the waveform now. 


    Regards,
    Sumair

  • Hi Sumair,

    Are you mixing up states 2 and 3 compared to what you wrote further up?

    Referring to your May 17th post:
    State 2: I would like to see oscilloscope plots of VDDS and VDDR when the problem is triggered. I want to see if it can be related to note 2 under table 6-2 in the CC2640 datasheet.

    State 3: Can you provide more details? What do you mean by advertisements stop "manually"? If VDDR is fluctuating between 1.5 and 1.6 V the device is in Standby.

    Regards,
    Fredrik
  • Hi Fredrik,

    Sorry for mix-up, I have rectified the typo error in earlier post.

    State 2: As i mentioned in my last post this is not easily repeatable, I'll capture the waveform if i the problem is triggered again.

    State 3: I think its not an issue.
    Let me explain you about this state in detail;

    -To achieve this state Send "advertisement_off" command on UART to peripheral

    - if (cmd==Advertisement_off)
    // After receiving the command peripheral disable the advertisement by disabling the flag "initialAdvertEnable = FALSE;"
    {
    initialAdvertEnable = FALSE;
    GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initialAdvertEnable);
    Util_stopClock(&periodicClock); //periodic event clock
    }

    In this state (Advertisement disabled) the current consumption reduce to bare minimum that's why after given a normal power cycle VDDS decoupling network doesn't depleted and it takes more time to discharge.

    Regards,
    Sumair
  • Hi Sumair,

    State 3 sounds like normal behavior.

    State 2 is what is interesting, I thought you could easily reproduce that.

    Regards,
    Fredrik