7 posts / 0 new
Last post
fxishui
Offline
Last seen:3 years 10 months ago
Joined:2016-04-12 13:27
da14580 sleep 功耗问题

我用最小系统测试蓝牙睡眠功耗。
1、#define CFG_INTEGRATED_HOST_GTL 进入睡眠功耗是460多uA。
2、#undef CFG_INTEGRATED_HOST_GTL 进入睡眠功耗是1.8uA (正常)。
当不是最小系统的时候,
1、如果我定义了#define CFG_INTEGRATED_HOST_GTL ,配置睡眠 ,外设驱动正常,蓝牙信号和连接正常。
2、如果我定义了#undef CFG_INTEGRATED_HOST_GTL ,配置睡眠 ,外设可以驱动,蓝牙信号和连接不正常。明显的延迟和卡盾现象。连接不上的概率很大。
2、如果我定义了#undef CFG_INTEGRATED_HOST_GTL ,不配置睡眠 ,外设驱动正常,蓝牙信号和连接正常。

问题:1、为什么 #define CFG_INTEGRATED_HOST_GTL 进入睡眠功耗这么大的变化。怎样降低功耗
2、如果 #undef CFG_INTEGRATED_HOST_GTL 是不是系统不能驱动外设(i2c ,spi等),只能作为蓝颜模块。(在不驱动外设的情况下,通信是稳定的)

谢谢!

Device:
Gongyu_Dialog
Offline
Last seen:1 week 22 hours ago
Joined:2016-04-27 07:07
1.首先问一下你用的哪个工程在做测试的?

1.首先问一下你用的哪个工程在做测试的?

2.关于问题2,这个宏和驱动外设没关系,只是把原来应用层的代码独立出来,通过uart接口,让TASK_GTL和TASK_APP进行通信

fxishui
Offline
Last seen:3 years 10 months ago
Joined:2016-04-12 13:27
您好!

您好!
我用附件里面的工程测试最小系统下的功耗,在定义了宏CFG_INTEGRATED_HOST_GTL 之后功耗是464uA,不定义这个宏的是1.8uA
您帮我看一下这里有什么问题。谢谢 版本是3.0.6的

Attachment:
fxishui
Offline
Last seen:3 years 10 months ago
Joined:2016-04-12 13:27
这个工程时测试测试读取i2c的时候,不定义CFG_EXT

这个工程时测试测试读取i2c的时候,不定义CFG_EXT_SLEEP ,定义CFG_INTEGRATED_HOST_GTL与否都正常,
但是定义CFG_EXT_SLEEP 定义CFG_INTEGRATED_HOST_GTL 工作正常,睡眠功耗不正常
不定义CFG_INTEGRATED_HOST_GTL 工作不正常,通信明显延迟(卡) 睡眠功耗正常 ,唤醒时功能不正常。
如果我改 arch_main.c main函数里的(756-766行)为
//#if (EXT_SLEEP_ENABLED)
// app_set_extended_sleep();
//#elif (DEEP_SLEEP_ENABLED)
// app_set_deep_sleep();
//#else
// app_disable_sleep();
//#endif
app_disable_sleep();
功能正常 ,睡眠功能功耗也正常 ,但工作电流比不改的时候大很多

Gongyu_Dialog
Offline
Last seen:1 week 22 hours ago
Joined:2016-04-27 07:07
我拿你那份sleep_test,无论是否开CFG

我拿你那份sleep_test,无论是否开CFG_INTEGRATED_HOST_GTL ,smartsnippets显示都是大概2个多mA。
所以我直接拿3.0.6的原始throughput_eval_peripheral_fh工程来做测试,把CFG_EXT_SLEEP宏打开,定义和不定义CFG_INTEGRATED_HOST_GTL宏的两种情况见附件。确实电流都有偏大的情况。具体的原因我们还需要再看一下

Attachment:
fxishui
Offline
Last seen:3 years 10 months ago
Joined:2016-04-12 13:27
Gongyu_Dialog 非常感谢!,我还是有疑问

Gongyu_Dialog 非常感谢!,我还是有疑问,情况如下:
function-sleep-test.zip 工程里面 我要驱动i2c设备
如果我改 arch_main.c main函数里的(756-766行)为
//#if (EXT_SLEEP_ENABLED)
// app_set_extended_sleep();
//#elif (DEEP_SLEEP_ENABLED)
// app_set_deep_sleep();
//#else
// app_disable_sleep();
//#endif
app_disable_sleep();
就可以正常工作(电流520uA),不改的话就连不上蓝牙(110uA),不能正常工作
如果驱动i2c接口,只蓝牙收发的,不改也没问题,工作的时候间断睡眠,电流也比较小
这种情况是什么原因造成的?

在上面代码的情况下,工作电流(520uA)正常吗,(外设基本不耗电10uA级别的,一个i2c加速度设备(lis3dh)),这个工作电流是不是太大了,
因为不驱动2c加速度设备 和代码为:
#if (EXT_SLEEP_ENABLED)
app_set_extended_sleep();
#elif (DEEP_SLEEP_ENABLED)
app_set_deep_sleep();
#else
app_disable_sleep();
#endif
//app_disable_sleep();
这样的情况下时候电流才80多uA,连接上才110多uA,我这种情况电流怎么才能降下来。
谢谢!

Gongyu_Dialog
Offline
Last seen:1 week 22 hours ago
Joined:2016-04-27 07:07
我用你的工程,我只修改了一个按键GPIO

我用你的工程,我只修改了一个按键GPIO,方便在demo板上测试。因为广播只会持续一段时间,然后就不发广播进睡眠了。除非用按键唤醒。
我只要在广播发送的这个时间段,去连就能连接上。