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.

CC2541: CC2541 _simpleBLEPeripheral sleep current

Part Number: CC2541

Using a custom board that uses a CC2541. I am using the simpleBLE peripheral example and have my own application tasks running as well.

When the system goes to sleep, I stop all the application tasks and the sleep current drops to ~15 uA as expected (has UART module initialized).

But when I disable the uart module i.e. when UART is not initialized - When the system goes to sleep, I stop all the application tasks but the sleep current stays at 2.5 mA in this case. Not sure why disbaling UART causes this issue. I have verified the UART related I/O pins are set to pull down.

Please let me know what could be the issue

  • Try to set UART pins to tristate in the case that you don't initial them.

  • Hello Venkatraman,

    I am working to find the appropriate expert to help you. This may take some time to reach the right person depending on availability. Please expect an update by 7/27. I appreciate your patience.

    In the meantime, can you please indicate what SDK you're using?

    Regards,

    Luis

  • Thank you Yikai. I will set the pins to tristate and verify the sleep current behavior. 

  • Thank you Luis. Appreciate the support.

    I am currently using the BLE sdk v1.4.1 and built my application using the simpleBLEPeripheral example.

  • Hi Venkatraman,

    I want to narrow down the issue a bit by asking a few questions. Are you able to verify if this amount of sleep current occurs with an unmodified simpleBLEPeripheral? How are you measuring the sleep current? Can you also verify if Yikai's suggestion resolved the issue? 

    Regards,

    Jan

  • Hi Jan,

    To answer your questions.

    "Are you able to verify if this amount of sleep current occurs with an unmodified simpleBLEPeripheral? "         

    I have not verified the sleep current with the unmodified simpleBLEPeripheral yet.

    "How are you measuring the sleep current?" 

    I am using a digital programmable power supply to power up the board and then monitor the current draw.

    "Can you also verify if Yikai's suggestion resolved the issue?"

    I am yet to try Yikai's suggestions.

    I am currently in the process of verifying  all unused I/O pin states before going to sleep and also checking the voltage on these pins(w. multimeter) after sleep to see if there is any anomaly.

    I will try Yikai's suggestions and test the sleep current for the unmodified simpleBLEperipheral and let you know soon.

    Thanks,

    Venkat

  • Hi Venkat,

    Thank you for the detailed response. Please update us with the results of the tests when you are able to. This will help us narrow down if it is a hardware issue or a software issue. I hope to hear from you soon!

    Regards,

    Jan

  • Hi Jan,

              Yikai's suggestions i.e. setting up the pins to tristate did not work. It still records high sleep current.

    But I tested the sleep current with the bare minimum simpleBLEperipheral example and it works as expected i.e. the current drops to ~15uA as expected. 

    My next steps would be to figure out the exact differences in the pin setup and pin state between the simpleBLEperipheral example and my application. 

    If you have any suggestions based on the above mentioned results please let me know.

    Thanks & Regards,

    Venkat

  • What do you see on power consumption after you do tristate settings?

  • Hi Yikai,

                 After the tri-state settings, the sleep current still remains at ~2.5mA. I will double check on my unused pins and discrepancies between the simpleBLE peripheral example and my application and let you know.

  • Hello!

    If the simpleBLE peripheral example draws the expected current using your custom board, then it seems that the problem may lie in the software implementation. I completely agree that the next steps you have proposed are the best ones right now. I would also recommend analyzing the code as well and comparing it with the simple_peripheral example. Please update us with any additional findings!

    Regards,

    Jan

  • Hi Jan,

               Thanks for your input. Yes, it was a software setup issue. I looked through the Uart initialization code specifically the HalUARTInit() and HalUARTOpen() modules and the different registers modified inside them to exactly narrow down on what software setup I am missing when I disable uart initialization (because initializing uart maintains optimal sleep current). 

    I narrowed it down to one line of code that resulted in the optimal sleep current which is; setting up the IEN2 interrupt enable register. Enabling the interrupt on Port 1 i.e IEN2 |= 1 << 4 resulted in the optimal sleep current ~10-15uA. Although, I have optimal sleep current now, I am surprised by this behavior and cannot make much sense with it. Please let me know if you understand this behavior or have any additional insights.

    Thanks,

    Venkat

  • Hi Venkat,

    I looked into this for you. This behavior typically occurs whenever a pin is left floating. The issue is most likely that a floating pin was drawing power. Could you verify if any of the pins are floating?

    Regards,

    Jan

  • Hi Jan,         

                I apologize for the delayed response. I looked into the unconnected or floating pins in our board schematic. Firstly, there are several unconnected pins. P0.2,P0.3,P0.4,P0.6 and P1.1, P1.2. Does the power drain relate to specific floating pins as well?

    Also, as mentioned in the CC253x/4x programmers manual, I setup all unused pins to either input and pull-down or output. In both cases, I did not see optimal sleep current. This is something I tried even before setting up the interrupt register (IEN2 |= 1 << 4). 

    Thanks,

    Venkat

  • Venkat,

    Thanks for your response. Jan passed me this thread. 

    Have you resolved your issue?

    Thanks,

    Luis

  • Hi Luis,

                Thank you for reaching out again. As I have mentioned in the previous responses, enabling the interrupt on Port 1 i.e IEN2 |= 1 << 4 resulted in the optimal sleep current ~10-15uA and did resolve my issue. But I wanted to know why I was seeing this behavior. 

    As Jan suggested, I looked for the floating pins in our board and there are several unconnected pins. P0.2,P0.3,P0.4,P0.6 and P1.1, P1.2. These pins were set as either 1) input and pull-up or 2)output (according to the 2541 datasheet). In both cases, the sleept current was not optimal ~2.5mA.  Enabling the interrupt on Port 1 i.e IEN2 |= 1 << 4  seems to be the only solution in my case.

    Although enabling the interrupt on Port 1 i.e IEN2 |= 1 << 4 solved my issue, I am looking for the root cause of this behavior. As enabling the interrupt pin to reduce current draw does not make much sense to me. 

    Please let me know if you have additional info.