ch573 做蓝牙遥控如何降低功耗?

目前用ch582做主机,用ch573做遥控,只有一个按键,电池用2032纽扣电池。

第一版的电源是直接接到2032电池,ch573启用dcdc。

ch573通过按键唤醒,30s没有按键按下就进入休眠。

目前来看,遥控还是很费电,1节2032电池用一周就不行了。并且,蓝牙的距离很近,只有0.5m左右。

如果想降低功耗,延长电池使用时间,有怎样的方法呢?

外部加一个dcdc输出3.3v的电源给ch573供电,会不会好点?

有没有办法让蓝牙连接的时间短一些,目前遥控唤醒后,大概需要1-2s才能稳定的发送按键信息。

我计划如下工作流程,不知能否将功耗降低到最低:

1,遥控平时在shutdown模式。

2、在按键唤醒后,开启蓝牙进行连接。

3、连接成功后,发送按键状态。

4、发送完成后,进入sleep模式,并保持连接。

5、按键再次按下,唤醒并发送按键状态。

6、长时间没有按键操作(5分钟),进入shutdown模式。

在这种情况下,广播间隔和连接间隔设置为多少合适呢?


遥控按键,按键触发不频繁,最快大概3-5秒按一次,慢则一两分钟按一次。

我查了一下,有一下几个参数设置可以平衡功耗与通信速率。这几个参数应该如何设置呢?



// Minimum connection interval (units of 1.25ms, 6=7.5ms) 

#define DEFAULT_DESIRED_MIN_CONN_INTERVAL     6


// Maximum connection interval (units of 1.25ms, 100=125ms)

#define DEFAULT_DESIRED_MAX_CONN_INTERVAL     100


// Slave latency to use parameter update

#define DEFAULT_DESIRED_SLAVE_LATENCY         0


// Supervision timeout value (units of 10ms, 100=1s)

#define DEFAULT_DESIRED_CONN_TIMEOUT          100



启用HAL_SLEEP, 启用DCDC后,再把IO仔细配置,是可以极低功耗待机的。


蓝牙连接的速度跟广播间隔有关,在第一次按下按键唤醒蓝牙功能的时候,将广播间隔配置小一些,然后立马连接,这样连接速度会比较快。如果一直没有连接,则将广播间隔配置大一些防止功耗过高。

连接间隔配置小可能导致连接后的功耗比较高,但是数据收发(可以理解为按键的蓝牙传输延迟)比较快。这点建议实测一下,如配置间隔为80-100,或者配置为800-1000,查看功耗和延时是否满足需求。

长时间待机使用shutdown就可以了,此时蓝牙是停止的,可以通过GPIO中断唤醒。唤醒后则不需要手动调用睡眠函数,HALSLEEP开启后协议栈会调用sleep的。

DCDC功能开启需要使用一颗电感。开启DCDC后功耗会降低。

开启HAISLEEP后io默认是输入上拉,注意如果外围有拉低拉高引脚,则将引脚配置为跟外部的一样,防止有压差导致漏电。


提供一份按键唤醒与休眠参考:

在TMOS系统中手动管理休眠 - JayWell - 博客园 (cnblogs.com)


好的,谢谢。

PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE,Long_Delay ); 

参数的Short_Delay与Long_Delay 有什么区别么?


跟唤醒的时间有关,建议使用long_delay。这里是如果使用short_delay,需要确保中断代码在RAM中运行。


目前用ch592 开启halsleep,gpio中断唤醒,在按gpio按键时,ch592很容易重启,蓝牙就断开了。 关闭halsleep后,就不重启了。 

目前,只能手动启动shutdown,进入低功耗。

这样,在进入shutdown之前,按按键ch592不重启。


CH592开启睡眠后使用GPIO中断唤醒不存在重启的现象。

硬件使用开发板进行测试。

软件排查,使用最新peripheral例程:

CH592EVT.ZIP - 南京沁恒微电子股份有限公司 (wch.cn)

MRS预编译开启HAL_SLEEP,将PM例程中的GPIO中断配置完整的拷贝到peripheral例程中。然后通过中断触发查看是否进入中断正常。

image.png

image.png


你连续多按几次,按快一点,就复位重启了。


建议先使用开发板进行测试,如果使用开发板测试复现问题,发送邮件至邮箱lpc@wch.cn,我们这里进行查看。

如果是使用的自己的板子,注意GPIO直连即可不需要外接电容等其他元件。


经过测试发现是按键的消抖电容造成的复位重启,去掉这个消抖电容,按按键就不复位重启了。

请问,为什么开启sleep后,按键的电容会影响这么大呢?

之前的设计中按键都会加消抖电容,为什么这里不用加呢?

 


可以去掉电容。或电容改到10pf以下。电容的瞬间放电导致芯片旁边的地被抬起来,从而导致芯片复位。 


只有登录才能回复,可以选择微信账号登录