CH592蓝牙芯片从机端调试记录:如何降低连接功耗

项目场景:

        使用CH592芯片实现一个蓝牙从机模块,对于静态功耗和连接功耗都有一定的要求(为了延长电池使用时间)


问题描述

        与app连接成功后整机功耗0.3mA左右(整机功耗),要求将整机功耗降低到0.0xmA级别


原因分析:

参考文章:

蓝牙BLE从机Peripheral讲解一(广播间隔和连接间隔) - SweetTea_lllpc - 博客园百度安全验证icon-default.png?t=O83Ahttps://baijiahao.baidu.com/s?id=1690204008664769649&wfr=spider&for=pc

        重点关注:连接间隔、从设备延迟、连接超时这几个参数

        实际与厂商FAE联系,只需要关注“连接间隔”这个参数

        连接间隔:长的时间间隔的优势是显著地节省功耗,因为设备可以在连接事件之间有较长时间的休眠,坏处是当设备有应用数据需要发送时,必须要等到下一个连接事件;短的时间间隔优势是两设备连接频发,可以更快地收发数据,不利之处是设备因连接事件的到来而被频繁的唤醒,会有较多功耗。因此,在实际应用的时候,有时候需要发送数据快一点,这个时候我们可以把连接间隔改小一点,这样发送数据快,但是功耗大,当把数据发完的时候,可把连接间隔改小一点,这样可以降低功耗,达到一个均衡。


解决方案:

        初次尝试:程序中“DEFAULT_DESIRED_MIN_CONN_INTERVAL”“DEFAULT_DESIRED_MAX_CONN_INTERVAL”默认连接间隔范围7.5ms~125ms之间,直接修改"DEFAULT_DESIRED_MAX_CONN_INTERVAL"为800(1s)实际测试连接后整机功耗可以在0.0xmA范围,修改为1600(2s)电流会更小一点。

        存在问题:修改最大连接间隔为1s之后,用OTA升级工具app更新程序时会失败

        可行方案:从机端保持原始连接间隔宏定义(7.5ms~125ms)设定不变,在“SBP_PARAM_UPDATE_EVT”任务中协调连接间隔。

//用户定义用于协商的连接间隔
uint16_t  User_DESIRED_MIN_CONN_INTERVAL=1500;//1000;// 1.25*1000=1.25s 1500=>1.875s
uint16_t  User_DESIRED_MAX_CONN_INTERVAL=1600;//1200;// 1.25*1200=1.5s  1600=>2s
    if(events & SBP_PARAM_UPDATE_EVT)//协商连接间隔
    {
       
	// Send connect param update request
      GAPRole_PeripheralConnParamUpdateReq( peripheralConnList.connHandle,    //协商函数
                                                        User_DESIRED_MIN_CONN_INTERVAL,
                                                        User_DESIRED_MAX_CONN_INTERVAL,
                                                         DEFAULT_DESIRED_SLAVE_LATENCY,
                                                         DEFAULT_DESIRED_CONN_TIMEOUT,
                                                         Peripheral_TaskID);
	    if(peripheralConnList.connInterval < User_DESIRED_MIN_CONN_INTERVAL){ //开启第一次协商
	        retry++;                            //interval_current是回调函数中实际的间隔,传递到此处
	        if(retry < 5){                      //第一次协商次数最多为5(可自行配置),中途协商成功则跳出。
			tmos_start_task(Peripheral_TaskID, SBP_PARAM_UPDATE_EVT, 1600);//SBP_PARAM_UPDATE_DELAY

	        }
	    }else {
	        retry = 0;
		  tmos_stop_task(Peripheral_TaskID, SBP_PARAM_UPDATE_EVT);
	    }
        return (events ^ SBP_PARAM_UPDATE_EVT);
    }

测试验证:

        配合CH592的主机例程debug测试验证。实测与主机连接后电流0.0xmA级别。用OTA升级app更新程序不受影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT搬砖客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值