1.CH573可以在低功耗模式下保持连接吗?
2.LowPower_Shutdown唤醒后需要做什么操作,
参考demo只GPIOA_ClearITFlagBit的话,蓝牙无法正常复连。目前是GPIO唤醒。
1.CH573可以在低功耗模式下保持连接吗?
2.LowPower_Shutdown唤醒后需要做什么操作,
参考demo只GPIOA_ClearITFlagBit的话,蓝牙无法正常复连。目前是GPIO唤醒。
还有一个问题,执行LowPower_Sleep,一样的代码和硬件,休眠的电流一时是ma级,一时是ua级,差距巨大。
1,低功耗可以保持连接, 但是这个低功耗, 需要协议栈自己去自己调用,用户只能去屏蔽,不能去主动调用,
wch 的ble工程中,使能全局宏:
HAL_SLEEP=TRUE
既即可让协议栈自动调用休眠函数
这个低功耗是RAM保持,rtc运行休眠时候电流CH577/578/579=2uA,CH573/571=6uA,CH581/582/583=3uA
至于平均功耗,要看配置的广播/连接间隔
2,LowPower_Shutdown 通常是掉电模式, 唤醒后通常会重启, 这种模式不适合处于连接/广播态的蓝牙使用.
LowPower_Shutdown 也考参考这个里面的code,http://www.wch.cn/bbs/thread-73554-1.html
1.实测,4种低功耗模式都是会断开连接。请问你们指的不会断开连接是指定时恢复连接并发送数据?
HAL_SLEEP=TRUE,会调用sleep.c里面的函数,主要是
LowPower_Sleep( RB_PWR_RAM2K | RB_PWR_RAM16K | RB_PWR_EXTEND );
LowPower_Idle();
无论自己写还是协议栈自动调用,功耗有下降,说明有休眠,但是明显断开连接。
2.进入低功耗模式非常玄学。一样的代码(无论是自己写还是协议栈自己调用的休眠),休眠功耗一时大一时小。。。。。一时是几百ua,一时是几个ma(当然这里我有其他电路的消耗,但是都不会一时一样的吧)???
3.运行蓝牙协议栈的主频问题。这个是不是必须要在多少频率以上?实测60m,48m没有问题,跑24m就不稳定了(连接慢甚至连接不到),单纯改个频率。正常连接应该是秒连,这种慢是大概10秒那样,又不能说他不能用,但是这样比较有问题。
4.dcdc问题。开启dcdc,一样的就像问题3的不稳定。连接很慢或者连接不到,但是一旦程序关闭dcdc,一切正常得很。(这个不绝对排除layout的问题)
1、BLE开启休眠,编译器HAL_SLEEP=TRUE即可,没有TMOS任务的时候回自动睡,有任务会提前醒来准备执行。
你可以控制唤醒,不要控制睡眠,因为BLE一旦连接上,即使没有用户数据交互,也会有空包交互,一旦你控制睡眠,空包交互失败(你可以认为这个是心跳),就回导致断连。
开启HAL_SLEEP=TRUE,你用万用表测试,忽大忽小,是2个情况导致的,1个是采样延时,还有1个是芯片因为TMOS任务确实会睡眠-唤醒-睡眠-唤醒,这个是BLE实现低功耗的本质原理。
建议你可以考虑搞个功率计测一下芯片电流,就能发现,睡眠电流很低,几个uA,工作时10+mA,低功耗就是增加睡眠时间,减少工作时间,平均电流减小。