Firefly开源社区

标题: sleep mode [打印本页]

作者: wyq165    时间: 2015-6-9 12:44
标题: sleep mode
代码中,要进入休眠需要检查几项:
1. ke_timer_empty   休眠定时器队列是否为空,检测能不能进入深度休眠的,因为sleep timer 是针对sleep唤醒的。
2. dev_get_bf()         任何设备在工作,就不能进入休眠。

第二项返回的东西是代表什么设备?外设吗? 是不是需要人工关闭才行?

另外 进入休眠/深度休眠,蓝牙协议栈也停止运作了,此时应该是属于断开状态了?假如我APP连接着的话,模块休眠,APP端的连接是否也断开了?

作者: FireBLE_blue    时间: 2015-6-9 14:28
是的,指的就是外设,比如IIC 正在通信,中途不能进入睡眠

进入睡眠后,协议栈部分会自主唤醒程序继续往下跑,不用人为干预,本来连着的不会断开连接。
作者: wyq165    时间: 2015-6-9 18:08
FireBLE_blue 发表于 2015-6-9 14:28
是的,指的就是外设,比如IIC 正在通信,中途不能进入睡眠

进入睡眠后,协议栈部分会自主唤醒程序继续往 ...

那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEEP sleep 模式时,手册里面说的是,只能由引脚中断唤醒
作者: xiaolong_ba    时间: 2015-6-9 23:19
wyq165 发表于 2015-6-9 18:08
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEE ...

不会的,深度睡眠只能GPIO口才能唤醒,你串口发数据过来是没反应的;
作者: 安安    时间: 2015-6-10 09:37
本帖最后由 安安 于 2015-6-10 09:42 编辑
wyq165 发表于 2015-6-9 18:08
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEE ...

蓝牙此时处于sleep模式。当连接断开,外设不工作,设备不广播的时候,才会进入到Deep sleep模式。
作者: wyq165    时间: 2015-6-12 11:28
安安 发表于 2015-6-10 09:37
蓝牙此时处于sleep模式。当连接断开,外设不工作,设备不广播的时候,才会进入到Deep sleep模式。

我现在是准备在工作的时候,当我工作完毕,主动让其进入深度休眠。
而不用DEMO本身的处理方式

那么也需要先关闭外设,关闭广播,才能调用深度休眠进入深度休眠?
还是直接调用深度休眠函数?
作者: 安安    时间: 2015-6-12 14:27
wyq165 发表于 2015-6-12 11:28
我现在是准备在工作的时候,当我工作完毕,主动让其进入深度休眠。
而不用DEMO本身的处理方式

1.进入深度睡眠模式仅仅是进入睡眠,不附带关闭外设工作,断开蓝牙连接的功能。
2.深度睡眠会断掉16M晶振,外设无法正常工作,蓝牙无法保持连接。你只需要停止外设工作,断开蓝牙连接就可以进入深度睡眠了,强行深睡没有意义。
作者: wyq165    时间: 2015-6-12 15:37
安安 发表于 2015-6-12 14:27
1.进入深度睡眠模式仅仅是进入睡眠,不附带关闭外设工作,断开蓝牙连接的功能。
2.深度睡眠会断掉16M晶 ...

因为不知道到底哪个外设需要关闭。怕把自己打开的外设关闭后,还有一些自己未知的,默认也打开的外设还在活动而使得其不能自动进入睡眠。因为我这边进入睡眠后不用唤醒,设置成了按钮复位。
作者: 安安    时间: 2015-6-12 16:05
wyq165 发表于 2015-6-12 15:37
因为不知道到底哪个外设需要关闭。怕把自己打开的外设关闭后,还有一些自己未知的,默认也打开的外设还在 ...

用此函数可以获取睡眠的允许状态,如果外设工作,就查找出来,并且关闭它
  1.         // Obtain the status of the user program
  2.         usr_sleep_st = usr_sleep();
复制代码

作者: connycommy    时间: 2015-7-1 15:10
安安 发表于 2015-6-12 16:05
用此函数可以获取睡眠的允许状态,如果外设工作,就查找出来,并且关闭它

请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc模块还能正常计数,就像stm32那样。
作者: FireBLE_blue    时间: 2015-7-2 11:37
connycommy 发表于 2015-7-1 15:10
请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc ...

这个问题,比较特殊,稍等,我们和原厂沟通问问芯片内部结构再给你最正确的回复。
我一朋友的设计上也曾用到过rtc,不过他们的处理方式是不睡眠。
rtc 在normal sleep 后应该是能工作的,因为还有32k 的晶振在提供时钟。(只是我想象的,具体看原厂给我们的回复)
作者: FireBLE_blue    时间: 2015-7-3 14:58
connycommy 发表于 2015-7-1 15:10
请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc ...

原厂回复:睡眠以后rtc 也停了。如果要做时间,可以使用 bletimer.c 里面的接口函数




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1