CN / EN
CN / EN

提问

设计支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

app_timer_create 和低功耗模式 GR551x

134***910

2023-09-15 16:25

请问 app_timer_create 设置10s的间隔会影响低功耗模式吗?或者要设置多久才不会影响,或者说芯片多久会进低功耗模式?

有低功耗定时器的使用说明吗?多谢!

0收藏

0赞成

{-}{-}

汇顶员工
2023-09-18 12:12

您好!

1. 不会影响功耗模式的设置,app_timer_create 是基于sleep timer实现的,在睡眠下也是工作的,时间到了就会自动唤醒。处理app_timer 对应的任务,会继续进入到之前设置的模式。

2. 多久会进入低功耗模式,这个地方取决于唤醒之后,做的事情多少。

一般sleep模式下,唤醒启动,以及进入睡眠的整个时长,ms级别的水平,参考如下波形(如下波形是一个广播连接的功耗波形时序图,其有)。

图1 sleep 启动开启广播启动时序截图

图2 广播结束,准备进入sleep时序

3. 关于使用说明

可以参考:

https://docs.goodix.com/zh/online/detail/app_driver_bl/V1.1/72e5debb0b06d966cca267561a8b3aef

https://docs.goodix.com/zh/online/detail/gr551x_datasheet/Rev.2.6/7a4a6478dd148bb23325b1b84a3c1a22

4. 关于低功耗模式的理解,如何工作的,可以参考这一篇文章,对整体内部的工作机理有一些介绍,有一个附件PDF。

https://developers.goodix.com/zh/bbs/blog_detail/af67a13d6fa544f4a30d0374b518bf31

谢谢!


0条评论

0赞成

0收藏

您的评论

134***910

2023-09-19 09:33

系统默认大约多久会进低功耗?(已经设置低功耗模式)现在情况是2台不同机器出的升级包功耗测量差距明显,一个进了低功耗,一个没进,这个可能是哪方面的原因?谢谢

0条评论

0赞成

0收藏

您的评论

{-}{-}

汇顶员工
2023-09-19 09:54

您好!

1. 多久进入低功耗模式是取决于您的任务运行情况,包括对driver是否在继续读取数据等,

进入低功耗的条件:

比如对于freeRTOS 而言

a.你的其他任务已经处理完了,就会跑ilde任务

b. idle 任务里面会检测是否适合进入sleep

c. 检测是否适合进入sleep,为了达到更好的低功耗水平,这里并不是只要idle,没有任何任务就直接进入sleep,因为系统中还有BLE 周期性的sleep->wakeup,系统会判断睡眠的时间是否小于再次启动的时间,如果小于,那么就没有必要睡了,睡下去又需要起来,时间长,功耗也是问题。

d. 会检查driver,比如ADC正在搬运数据,是否处于忙的状态,在搬运数据,那么就不会进入sleep,继续等。


参考: https://developers.goodix.com/zh/bbs/blog_detail/af67a13d6fa544f4a30d0374b518bf31

2. 这里您提到了,两台不同的机器,一个进低功耗,一个没进,如果进入低功耗,那么一般是uA级别的,如果没有进是mA级别的。

3. 具体哪方面的原因,可以看一下这个是有有哪些任务还在继续运行,那些驱动还在使用,只要有任务,驱动处于忙的状态,那么就不会进入sleep。

4. 具体如何判断driver处于忙?

详细请参考: https://developers.goodix.com/zh/bbs/download/blog/af67a13d6fa544f4a30d0374b518bf31/upload_883bafab73f7fec0ff09b37094791ae2

谢谢!

0条评论

0赞成

0收藏

您的评论

134***910

2023-09-19 10:29

谢谢,现在的情况是,蓝牙未连接,app_timer_create开了一个10s的定时任务,正常情况下,基本不怎么耗时间,只做时间统计,时间到了才进行心率测量。测量到的就是不同的功耗。没有搞清楚是什么原因,这个会和keil的编译设置有关吗?

0条评论

0赞成

0收藏

您的评论

{-}{-}

汇顶员工
2023-09-19 10:50

您好!

有2个疑问:

1. 所谓的两台不同机器,是同一个产品,还是两个不同的产品类别,外围的差异也是会带来不一样的结果。

2. 是否有具体的量测电流波形,这种情况,如果您的设置是10s起来记录一下时间,或者做一段事情,其它都是sleep,那么正常从功耗波形上就能够看到10s就会有一个起来的波形持续一段时间,不知道您有没有这方面的工具,正常情况下,就是上电起来一下处理完任务,如果设置为sleep模式,那么就会进入sleep,等时间到了再起来,按照您的沟通,一个可能合理的电流波形,正常情况下应该是像下面这样。

如果有量测波形,比如精确到us级别的更细的波形,会更好定位这个问题,这个部分如果您是主要负责软件的领域,可以和硬件的同事一起量测对齐,详细量测对比波形,然后与代码对齐,目前没有看到证据,与keil的设置有关系。


谢谢!



0条评论

0赞成

0收藏

您的评论

134***910

2023-09-19 14:17

同一个产品,2台上位机同一个工程出升级文件,一台功耗正常微安,一台毫安

0条评论

0赞成

0收藏

您的评论

{-}{-}

汇顶员工
2023-09-19 14:33

您好!

从波形上来看,

1. 看起来没有进入sleep模式。

2. 两台上位机只的是不同的电脑,通过IDE编译下载的文件不一样吗?

这个地方的上位机指的是什么?是电脑不一样,IDE(Keil)不一样?如果仅仅是上位机不一样,对同一个产品升级,在产品上的功耗不一样。

可以确认一下:

1. 对比2个上位机的编译输出的binary固件的差异,如果没有差异,那么理论上是一致的,出现的问题,应该在下载环节,如果编译本来就没有问题。

2. 对比2个上位机下载到产品的Flash区域的固件是否一致,可以读取出来对比一下,这个过程中可以考虑完全擦除Flash区域,避免因遗留数据产生相互影响。

之前没有理解到上位机的差异带来功耗的差异,另外请确认Keil, GProgrammer, SDK等版本信息,同一个工程,理论上编译出来的是一样的,可以对比一下编译出来的文件差异,另外一个可能是GProgrammer等下载方式的差异,请确认。

谢谢!


0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注