mcu是ch579,整个系统关掉蓝牙并且对不用的引脚做了必要初始化,在HAL_SLEEP=1的情况下,如果不读传感器数据时,功耗为18ua,主要是传感器自身的耗电,mcu不耗电。但根据实际需求,每0.2s需要读一次传感器,这时加了一个tmos_start_task来唤醒,时间为0.2s来读传感器,这时功耗在50-150ua变化。然后为了测试,进行修改,依然每0.2s唤醒一次,但并不做任何操作,进入事件处理后直接结束,这时功耗仍然在50-150ua变化。按理说没跑什么代码不应该有这么大电流,不知能否修改一些设置达到低电流。谢谢
用的HID_Keyboard这个例程
更改的代码如下
.
.
.
#define SENSOR_INTERVAL? ? ?MS1_TO_SYSTEM_TIME(200)
.
.
.
uint16 HidEmu_ProcessEvent( uint8 task_id, uint16 events )
{
.
.
.
if ( events & READ_SENSOR )
{
//if(readsensor()==1)
{
// display(pTxData);
}
tmos_start_task( hidEmuTaskId, READ_SENSOR, SENSOR_INTERVAL );
return ( events ^ READ_SENSOR );
}
.
.
.
}
注释掉了读传感器和显示,依然不能降低功耗,将SENSOR_INTERVAL 设置很大,相当于长时间休眠,mcu就不耗电了
结合蓝牙使用时原始功耗为18uA,这里提供一个思路:添加一个TMOS任务,每0.2S执行一次打印,其他均为默认,串口接上打印信息查看日志同时测试功耗,理论上功耗增加不会特别大的。
关了蓝牙,18ua是传感器的功耗,无任务时mcu没有耗电,具体情况帖子应该说清楚了,增加了0.2s空任务都没有添加打印代码电流就变大了很多
整个电路上有个传感器,相当于排除这个传感器,不开蓝牙无任务整个系统基本不耗电,但TMOS添加一个每0.2s的空任务,耗电会增加平均七八十微安的功耗(电流波动很大,大概50-150ua,减去20ua传感器电流也有30-130ua),按理说只是每0.2s唤醒一次,不应该这么大
下图分别测试默认的例程和添加了TMOS任务的功耗测试:
添加打印
用的HID_Keyboard这个例程吗?你这是开了蓝牙才平均29ua,开蓝牙并增加打印任务才65.55ua。比我测试的低多了,我电路板加了个47微法的电容,测试时电池直接串联的万用表
使用的是HID_KBD的例程,连接间隔做了修改。
可以先在开发板上进行测试,上面开启了0.2S的任务后功耗增加30±,这还是一个比较正常的现象的。
会不会是版本问题,能否方便把你用的版本给个下载地址或者发给我也行?
PPK2功耗分析仪,多少钱可以买到?
功率计直接淘宝上搜索进行购买即可,目前提供精准测量的工具很多的。
程序是官网下载的最新的,做了连接间隔的调整如上。
TMOS任务如图:
可以发送一份邮件至邮箱:lpc@wch.cn,我这里也可以提供该程序进行验证,备注情况。
去官网下载了2.5版本,做了图中的修改,做测试估算平均电流也有五六十微安,能否通过更改设置将电流降到20ua以下
官方提供了PM的程序,开启sleep模式查看芯片的sleep模式底电流是否为手册标注,注意需去除LDO/灯等功耗元件。
上面测试的是开启了一个TMOS任务的睡眠,如果需要进一步降低功耗,需要将执行该任务的时间拉大,否则唤醒还是很频繁的。
谢谢解答。由于液晶显示的问题,如果降低唤醒频率会使显示看起来不平滑。看了下PM程序,没提供类似TMOS的时间唤醒.项目是纽扣电池供电,其中传感器大约不到20ua,希望不开蓝牙的状态下总共不超过50ua,看来不容易了
再请教下,发现TOMS系统在HAL_SLEEP=1时LCD不能显示,怎样设置能使LCD点亮
确保你的操作是在TMOS管理运行的,可以加上打印信息查看是否有运行到了。
在开启睡眠后,确保LCD显示已完成,可以通过置一个标志,如果该标志显示任务未完成,此时进入了睡眠,则直接在一进入CH58X_LowPower这个函数时就return出去,直到任务执行完成将标志恢复,重新进入睡眠。