dear cypress!
我现在有一个疑惑,我之前在用psoc63系列带蓝牙版本的mcu的时候。 我的m4跑100MHz, M0跑50MHz, 蓝牙协议栈单独运行在M0. 我测试了一下待机功耗。 我发现在M0,M4全部开启的情况下,功耗大概13mA, M4睡眠,M0唤醒的情况下待机功耗7mA。 我在M0跑起来的时候我是没有开启蓝牙广播的。 我记得之前用62的时候M0跑起来没有这么大的功耗。 好像也就2~3mA。 我现在有个疑问,是不是在M0跑起来的时候蓝牙部分也在耗电? 能否在不开启蓝牙的时候让蓝牙不耗电?
已解决! 转到解答。
我们有api - Cy_BLE_Stop()用来关闭BLE Stack,可以尝试在关闭广播时调用该函数来降低功耗,待需要开启广播时调用Cy_BLE_Start()重新开启BLE Stack。
要查看api注释,确认调用之后产生的事件是否正确再进行下一步操作。
没有使能广播,但是使能BLE组件并在代码里Start之后也会有额外的功耗。M4 Deep Sleep,M0 Active下功耗应该不止2-3mA,我测下来在100MHz/50MHz / LDO下差不多是5mA,没有开启BLE。
你可以试下在你的板子上,BLE组件完全disable之后功耗有多少。
现在就是不知道相关的函数。 比如我想完全禁止蓝牙组件。 需要调用哪条函数。 然后我完全禁止以后是不是还能重新开启。 我希望能够灵活一点。 能够通过软件开启和禁止。 如果能节省2ma那也非常好了。 我现在的项目设计的是蓝牙平时是不开启的。 通过外部中断唤醒mcu。 然后通过指令来开启和关闭蓝牙组件。
我目前的代码是这样的:
我们有api - Cy_BLE_Stop()用来关闭BLE Stack,可以尝试在关闭广播时调用该函数来降低功耗,待需要开启广播时调用Cy_BLE_Start()重新开启BLE Stack。
要查看api注释,确认调用之后产生的事件是否正确再进行下一步操作。