At the moment I'm working on a project with at BLE-module. This module is based on the CC2541 from TI. I want the BLE-module to permanently transmit a signal.

This module has two modes: a level- and pulse-enabled mode.

The level mode is basically using an enable pin (EN-pin). When pulled to GND the module will transmit. The problem is that the EN-pin has an internal 20k pull-up, so this means it leaks about 0.15mA (VCC = 3v) when the EN-pin is pulled to GND.

I want to prevent this current leak and want to use the pulse-enabled mode: the module will transmit for 30sec after the EN-pin is pulled to GND for >200ms, then it goes into stanby-mode. This means there is no current leak outside this 200ms pulse. I was thinking of sending a pulse every 30.2 seconds for 220ms, to "permanently" transmit a signal.

The problem is that I haven't really figured out how to send a 220ms signal every 30.2 sec. I know there are IC's around which are capable of doing it, but these are using relatively a lot of power. I'm looking for a solution in the range of a couple uA. I found the css555c, but this one is not widely available and very expensive (almost $2). I'm hoping someone can help me to find a very costs and power efficient solution.

So is there a way to send a 220ms pulse every 30.2 seconds in cost and power efficient way?

(or is there a way to prevent the current leak from the EN-pin when it's permanently tied to GND, due to the 20k pull-up)

Cheers and thanks,


  • \$\begingroup\$ I haven't read the datasheet, but it doesn't sound like there is any way around the leakage issue when en is low. How close to 30.2 s does it need to be? If the 220ms pulse comes a little early, would it be ignored (since it is already transmitting) or would it restart the 30.2 second timer? I am a little surprised because BLE is intended for low power devices (I think) and 150 uA is kind of a lot. Maybe that is why they put the pulse mode in there. \$\endgroup\$
    – mkeith
    Dec 20 '14 at 19:50
  • \$\begingroup\$ The interval should be a bit longer than 30 sec (that's why I choose 30.2, but it doesn't have to be extremely accurate).But if it sends a pulse while it's still transmitting it will stop transmitting (it acts as a toggle), so I want to prevent that since it would creating long intervals without any broadcast. \$\endgroup\$
    – Ruben
    Dec 21 '14 at 0:00
  • \$\begingroup\$ So I guess I can assume that 3V is available. Is there any clock available to use for a CMOS counter? If so, what frequency is it? \$\endgroup\$
    – mkeith
    Dec 21 '14 at 0:14
  • \$\begingroup\$ On the module (RF-BM-S02 BLE module) there is nothing available of use for a timer. Maybe on the BLE chip itself, but they didn't make the pin available. I'm thinking about making square wave generator based on a ultra low power op amp (simplecircuitdiagram.com/2010/04/25/…). I just haven't figured out how I can calculate/ influence the frequency as well as how long the pulse should be. (all the examples I found so far have a 50% duty cycle) while I want it low for 30.2 sec and high for only 200ms. \$\endgroup\$
    – Ruben
    Dec 21 '14 at 21:47
  • \$\begingroup\$ What I had in mind was feed a clock (50% duty cycle is fine) to a counter. There are several varieties of this kind of circuit. Load a value and count down, with auto-reset at 0. Let me take a look at some ideas. It may be hard to get an accurate clock without a crystal, but it may not be needed. \$\endgroup\$
    – mkeith
    Dec 22 '14 at 1:58

You don't say which pin you mean when you say "EN pin", I assume it is simply one of the I/O pins. For the CC2541, you can determine in software whether any pin has a pull-up or not. By default they have pull-up, but you can remove that by setting the correct bit in the PxINP register.

The CC2541 also has plenty of internal timers that can be used to pull-up/down one of the I/O pins, so you don't need an external timer.

  • \$\begingroup\$ You are right that there are indeed pins available, but I'm not using the CC2541 directly. I'm using a BLE module based on it. So I can't access all of the original pins of the CC2541 (nor firmware). And i'm also not skilled enough at this moment to do so. But I think I found an alternative way to do what I like to achieve. I will built an interrupt timer based on the TS3005 timer/oscilator (silabs.com/Support%20Documents/TechnicalDocs/TS3005.pdf) , which is fairly low cost and low power. \$\endgroup\$
    – Ruben
    Dec 29 '14 at 20:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.