cydelay延时报警如何不增加功耗

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

使用psoc4000,对设备有低功耗要求,需要对目标识别后延时保持目标,但是延时启动后会增加2ma的功耗,能从哪些方面避免吗

0 点赞
1 解答
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1:在我第一次发给你的AN86233里面有一张power mode的截图,我放在这次回复里面。

LinglingG_46_0-1652750050249.png

 

2:1中的截图明确表明了sleep的情况下哪些资源是active的,还是off。你可以对比我之前给你的excel表格初步计算功耗。

3:还有我无法帮你评估的你的硬件电路会耗电的模块,这个需要你自己去分析。

4:你说的待机是什么模式,你可以让你的系统进入deepsleep,这在AN86233中很清晰的描述了功耗情况,以及如何降低功耗。这个问题不是那种一问一答,直接能给出答案的,是需要集合你硬件测试的。

5:要解决功耗的问题,最简单的逻辑是:你先分析出这90ua的功耗是出自哪个地方,然后你就知道怎么降低功耗了。一般想要系统的功耗低,就要是的deepsleep的时间占比比较大,active比较小,如第一个截图,sleep只是停掉了时钟IMO,那你在之前的藐视中称为待机模式的是使用了deepsleep吗?还是只是单纯的用了sleep。

6:这个问题的逻辑在我第一次给你发的AN86233里面分析的算比较详细的。希望你可以仔细的阅读一下,然后分析出你当前的功耗由哪些模块引起,解决问题在知道整体功耗不能满足的情况下,需要再去分析,可以采用增加你代码的逻辑来进行,或者减少你代码的逻辑进行测试。

 

 

在原帖中查看解决方案

15 回复数
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1: 你说的这个2mA的功耗,是在什么逻辑下面的得出的?你具体是怎么测试的?

2:增加功耗的原因是:cydelay的时候,高频时钟是使能的,功耗肯定会增加。

3:系统只是延时启动,按照我的理解,这个启动是在main函数的for loop之前,对你整体的平均功耗影响应该不会太大。所以就有点不清楚你这个2mA是从哪个点上面描述的参数。

4:你可以从缩短delay时间,降低主频这两个点进行分析。

0 点赞
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

我是要触摸输出低电平,手离开后保持400ms的延时做其他处理。电流是通过万用表串流进电源中测量得出电流上升的。我想过说降低主频,但是降低主频会对整体反应下降吗?而且未发现相关读取和修改主频的方式,您有什么建议吗?还有就是我可以通过定时器中断解决这个问题吗?

0 点赞
Fayne_Meng
Level 4
Level 4
Distributor - Weikeng(GC)
100 sign-ins First like received 10 likes given

Hi Liu,

     Demo的话用Cydelay是可以的,如果是做产品的话,不建议你把cydelay用在主循环里,浪费MCU资源,建议用定时器设置标志位的方法;

     降低功耗方面除了降低主频还有几个方法你可以试一下:

1、调整芯片外围电路与配置合理的引脚模式,降低芯片端口的电流消耗;

2、动态调整外设模块的开启与关闭;

 

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

“我是要触摸输出低电平,手离开后保持400ms的延时做其他处理。”

1:你的意思是GPIO输出低电平吗? GPIO会有功耗的,这个功耗的具体计算需要根据你电路的设计。

2:你在第一次描述的时候,表达是启动延时,那你这个启动是指什么意思呢?一般理解上电为启动。我看你的描述好像不太像。

3:手离开后保持400ms的延时,这个延时你是用delay吗?那CPUdelay了,怎么做其它处理。是中断吗?你这个2ma增加的电流是对比什么情况测试得到的。

4:关于功耗的评估,以及将功耗的方法,我们链接的Applicate Note给出了详细的解释,请参考:https://www.infineon.com/dgdl/Infineon-AN86233_PSoC_4_and_PSoC_Analog_Coprocessor_LowPower_Modes_and...

0 点赞
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

在我触摸时的总功耗是2.7ma,当我手松开开始延时这个过程总功耗延时是5ma的功耗,我说的延时启动就是指的是这个延时的过程,这个项目参考了这个低功耗例程

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

触摸的时候,功耗是2.7ma, 松开以后是5ma。
那就看手松开以后,代码执行的是什么逻辑,可以单独拿出来进行测试。根据你描述的片段,我推断你可以重点看一下GPIO为低的时候,GPIO管脚的耗电情况。假设你松开以后的逻辑里面什么都不执行,空循环,那这种情况功耗是多少,判断5ma的耗电出现在哪里。我觉得这个地方的分析,不应该是基于触摸和不触摸增加减少分析,而是分析这两种逻辑下,代码在不同的分支里面都执行了什么任务,硬件都有哪些部件在耗电。

 

0 点赞
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

从您的解答中,我应该可以判断是我错误使用cydelay造成的高频时钟使能。如我使用定时器中断来延时的话会增加功耗吗?

0 点赞
lock attach
Attachments are accessible only for community members.
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你用Timer Counter测试一下。具体的功耗评估,你可以参考附件的excel表格。

0 点赞
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

好的,感谢。我现在根据这个定时器中断进行了延时,但是我这个项目有进行低功耗处理,会进入到深度睡眠模式,进入触摸按键就无法进行正常使用了,触摸触发低电平,无法恢复高电平

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

watchdog是否可以满足你的要求?

用看门狗计时的方式可以sleep 模式下面使用,同时也可以降低功耗。

0 点赞
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

我们的待机要求在90μa左右,sleep模式之前测试好像不能满足

0 点赞
liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

使用deepsleep是不是就无法启用定时器中断?有什么方式可以在deepsleep模式下定时器中断正常使用吗

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你可以不用timer,而是用watchdog,也就是俗称的看门狗,这样就解决了你在deepsleep情况下可以使用的问题。

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1:在我第一次发给你的AN86233里面有一张power mode的截图,我放在这次回复里面。

LinglingG_46_0-1652750050249.png

 

2:1中的截图明确表明了sleep的情况下哪些资源是active的,还是off。你可以对比我之前给你的excel表格初步计算功耗。

3:还有我无法帮你评估的你的硬件电路会耗电的模块,这个需要你自己去分析。

4:你说的待机是什么模式,你可以让你的系统进入deepsleep,这在AN86233中很清晰的描述了功耗情况,以及如何降低功耗。这个问题不是那种一问一答,直接能给出答案的,是需要集合你硬件测试的。

5:要解决功耗的问题,最简单的逻辑是:你先分析出这90ua的功耗是出自哪个地方,然后你就知道怎么降低功耗了。一般想要系统的功耗低,就要是的deepsleep的时间占比比较大,active比较小,如第一个截图,sleep只是停掉了时钟IMO,那你在之前的藐视中称为待机模式的是使用了deepsleep吗?还是只是单纯的用了sleep。

6:这个问题的逻辑在我第一次给你发的AN86233里面分析的算比较详细的。希望你可以仔细的阅读一下,然后分析出你当前的功耗由哪些模块引起,解决问题在知道整体功耗不能满足的情况下,需要再去分析,可以采用增加你代码的逻辑来进行,或者减少你代码的逻辑进行测试。

 

 

liuXQ
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

好的,十分感谢你的解答

0 点赞