TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2540 PWM

我在用CC2540PWM控制灯时发现打开低功耗PWM输出很不稳定,关闭时正常,但如果不打开低功耗模式时广播时的电流太大,这个怎么解决?

Viki Shi:

PWM需要时钟源,低功耗会关闭时钟,二选一

Tao Hong:

回复 Viki Shi:

我想在广播的时候开启低功耗,当收到蓝牙数据的时候主动开启时钟源,这样做行不行?

guo yang1:

hi,Tao Hong,

请问你的PWM是怎么设置的呢,能方便把代码贴出来吗

Barbara Wu:

回复 Tao Hong:

广播的时候默认应该是不会进入低功耗模式的

jason wen:

回复 Tao Hong:

Hi TaoHong 

我也遇到同样的情况,只不过你使用的是定时器的比较输出,而我使用的是定时器的输入捕获,我验证过,就算是一个简单的定时器溢出中断,没有捕获也没有比较,只要把POWER_SAVING这个宏打开,定时器的计数频率就会出现偏差,也就是与设定的频率不对应,我觉得是OSAL进入和退出休眠时,晶振间的频繁切换造成定时器的计数不正确,至今还没找到解决方法。

Barbara Wu:

回复 jason wen:

尝试一下不要这个函数

  HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_DIVIDE_ON_HALT );

jason wen:

回复 Barbara Wu:

Hi WBJ 关闭了该函数后,依然不能实现在打开POWER_SAVING的情况下,使用定时器进行计数,请问还有什么方法吗?

Tao Hong:

回复 guo yang1:

void PWM_init(){    // PERCFG = PERCFG | 0x03; // Select Timer 1 Alternative 0 location, set U1CFG and U0CFG to Alternative 1     PERCFG = (PERCFG & ~0x40) | 0x03; // Select Timer 1 Alternative 0 location, set U1CFG and U0CFG to Alternative 1   // PERCFG = PERCFG | 0x40;    P2DIR |= 0xc0; // Give priority to Timer 1    P0SEL |= 0x18;  // Set P0.4, P0.5 and P0.6 to peripheral          T1CNTH = 0xff;    T1CNTL = 0xff;              T1CTL = 0x02;      T1CCTL1 = 0x1c;    T1CCTL2 = 0x1c;        T1CC0L = 0x00;    T1CC0H = 0x01;                T1CC1L = 0x00;            T1CC1H = 0x00;         T1CC2L = 0x00;            T1CC2H = 0x00;      }

Tao Hong:

回复 jason wen:

你如果开了POWER_SAVING后如果要使用定时器,在使用前加上下面的代码输出的频率就稳定了

CLEAR_SLEEP_MODE();  HAL_BOARD_INIT();  osal_pwrmgr_device( PWRMGR_ALWAYS_ON );

jason wen:

回复 Tao Hong:

Thx TaoHong

请问添加了   CLEAR_SLEEP_MODE();    HAL_BOARD_INIT();     osal_pwrmgr_device( PWRMGR_ALWAYS_ON );    这三句代码后,您是在哪里再启动POWER_SAVING 的呢?

赞(0)
未经允许不得转载:TI中文支持网 » CC2540 PWM
分享到: 更多 (0)