项目功能: 采集5s数据发送——休眠5s——采集5s数据发送,循环往复
平台: CC2630
协议栈:timac_1_05_02_43299
问题描述: 在休眠5s的过程中,整体电流在7,8ma,只比数据发送低1ma,这是不科学的。验证没有event在跑的时候
是可以到3,400ua的电流消耗的(主要是板子上的传感器功耗)。
看了TI的RTOS,TIMAC协议介绍,以及社区的问答,都没有给出解决问题的办法或者提到这一现象。
着重强调的都只有一点:RTOS会管理功耗。
试了一下 联网——采集5s数据发送——断网——休眠5s——联网——采集5s数据发送——断网,这样的方案,但是对于同一个协调器,每次联网都会重新分配shortaddress,到
了0x10地址后,就不能再进行连接,终端持续搜索信道。这个方案PASS掉。
解决方法:之后想看看RTOS到底是如何实现低功耗管理的,遂搜索 IDLE 关键词,有了意外的发现。
这里有一句话:TRUE if the MAC enables its receiver during idle periods 。 继续搜索MAC_RX_ON_WHEN_IDLE 关键字,发现如下判断,赋值函数。
再搜索 msa_IsDirectMsg 发现他的初值虽然是 FALSE,但是在按键处理函数,即扫描信道函数 MSA_ScanReq(MAC_SCAN_ACTIVE, 3); 之前却赋值了MSA_DIRECT_MSG_ENABLED,MSA_DIRECT_MSG_ENABLED 是 TRUE的宏定义。
这样问题就很明朗了,原来是系统设置,在IDLE模式下,射频部分没有关闭导致的电流消耗。
只要将MSA_DIRECT_MSG_ENABLED 宏定义改为 FALSE 即可。
|