微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于低功耗的一些疑问

关于低功耗的一些疑问

时间:10-02 整理:3721RD 点击:

各位好,

我使用SPPBLESever的工程,我想实现串口控制进入低功耗。

1)一上电,在MAIN函数中执行:

/* Set constraints for Standby, powerdown and idle mode */
Power_setConstraint(Power_SB_DISALLOW);
Power_setConstraint(Power_IDLE_PD_DISALLOW);

2)当串口接收到进入低功耗指令时,执行:

// release constraints for Standby and idle mode
PowerState = STANDBY;
Power_releaseConstraint(Power_SB_DISALLOW);
Power_releaseConstraint(Power_IDLE_PD_DISALLOW);

3)当串口接收到进入shutdown模式时,执行:

        Power_shutdown(NULL);

4)当IO触发中断时,唤醒MCU,执行:

/* Set constraints for Standby, powerdown and idle mode */
Power_setConstraint(Power_SB_DISALLOW);
Power_setConstraint(Power_IDLE_PD_DISALLOW);

以上就是代码的修改地方,现在有一些疑问:

Q1:执行步骤2)时,电流只下降了0.5ma,如何进入STANDBY模式(电流可以到达1ua)

Q2:当进入shutdown模式,电流可以到达0.1ua,但是此时如何唤醒MCU呢?

我现在是也能进入低功耗,不知道是中断唤醒后自动进入低功耗,还是再写数据进入低功耗,我中断唤醒后也不能发送数据还需要写操作唤醒还是中断自动唤醒

Frank Mei ,

你用的是CC26xx自带的UART驱动吗?比如NPI驱动,在HostTest工程中就有用到。

如果用的是自带UART驱动,你不需要自己手动去设置Power_setConstraint(),因为UART驱动本身自动在读或者写的时候会去设置Constraint。

Shutdown模式下只有IO口能唤醒,你需要配置你想要的IO口有唤醒系统的功能,具体配置你可以看一下这个连接:https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/410883/1461886

Power_releaseConstraint(Power_SB_DISALLOW);
Power_releaseConstraint(Power_NEED_FLASH_IN_IDLE);

是成对出现的吧

Power_setConstraint(Power_IDLE_PD_DISALLOW);

我用这个好像没有唤醒,不能进入串口接收

请参考文档 3.2.2/3.2.3 节: http://www.ti.com/lit/ug/sprui20/sprui20.pdf

我通过置标志位能够进入低功耗,但把标志位取反后无法取消休眠,

串口无法响应

Power_releaseConstraint(Power_SB_DISALLOW);

Power_releaseConstraint(Power_NEED_FLASH_IN_IDLE);

Power_setConstraint(Power_SB_DISALLOW);
Power_setConstraint(Power_NEED_FLASH_IN_IDLE);

标志位28->8->28

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top