Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

sleep mode

31

积分

0

威望

0

贡献

游客

积分
31

sleep mode

发表于 2015-6-9 12:44:00      浏览:14687 | 回复:11        打印      只看该作者   [复制链接] 楼主
代码中,要进入休眠需要检查几项:
1. ke_timer_empty   休眠定时器队列是否为空,检测能不能进入深度休眠的,因为sleep timer 是针对sleep唤醒的。
2. dev_get_bf()         任何设备在工作,就不能进入休眠。

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

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

使用道具 举报

151

积分

0

威望

0

贡献

技术小白

积分
151
发表于 2015-6-9 14:28:18        只看该作者  沙发
是的,指的就是外设,比如IIC 正在通信,中途不能进入睡眠

进入睡眠后,协议栈部分会自主唤醒程序继续往下跑,不用人为干预,本来连着的不会断开连接。
回复

使用道具 举报

31

积分

0

威望

0

贡献

游客

积分
31
发表于 2015-6-9 18:08:17        只看该作者  板凳
FireBLE_blue 发表于 2015-6-9 14:28
是的,指的就是外设,比如IIC 正在通信,中途不能进入睡眠

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

那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEEP sleep 模式时,手册里面说的是,只能由引脚中断唤醒
回复

使用道具 举报

46

积分

0

威望

0

贡献

游客

积分
46
发表于 2015-6-9 23:19:14        只看该作者  地板
wyq165 发表于 2015-6-9 18:08
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEE ...

不会的,深度睡眠只能GPIO口才能唤醒,你串口发数据过来是没反应的;
回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2015-6-10 09:37:54        只看该作者  5#
本帖最后由 安安 于 2015-6-10 09:42 编辑
wyq165 发表于 2015-6-9 18:08
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEE ...

蓝牙此时处于sleep模式。当连接断开,外设不工作,设备不广播的时候,才会进入到Deep sleep模式。
没个性,不签名!
回复

使用道具 举报

31

积分

0

威望

0

贡献

游客

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

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

那么也需要先关闭外设,关闭广播,才能调用深度休眠进入深度休眠?
还是直接调用深度休眠函数?
回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2015-6-12 14:27:43        只看该作者  7#
wyq165 发表于 2015-6-12 11:28
我现在是准备在工作的时候,当我工作完毕,主动让其进入深度休眠。
而不用DEMO本身的处理方式

1.进入深度睡眠模式仅仅是进入睡眠,不附带关闭外设工作,断开蓝牙连接的功能。
2.深度睡眠会断掉16M晶振,外设无法正常工作,蓝牙无法保持连接。你只需要停止外设工作,断开蓝牙连接就可以进入深度睡眠了,强行深睡没有意义。
没个性,不签名!
回复

使用道具 举报

31

积分

0

威望

0

贡献

游客

积分
31
发表于 2015-6-12 15:37:57        只看该作者  8#
安安 发表于 2015-6-12 14:27
1.进入深度睡眠模式仅仅是进入睡眠,不附带关闭外设工作,断开蓝牙连接的功能。
2.深度睡眠会断掉16M晶 ...

因为不知道到底哪个外设需要关闭。怕把自己打开的外设关闭后,还有一些自己未知的,默认也打开的外设还在活动而使得其不能自动进入睡眠。因为我这边进入睡眠后不用唤醒,设置成了按钮复位。
回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2015-6-12 16:05:26        只看该作者  9#
wyq165 发表于 2015-6-12 15:37
因为不知道到底哪个外设需要关闭。怕把自己打开的外设关闭后,还有一些自己未知的,默认也打开的外设还在 ...

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

使用道具 举报

17

积分

0

威望

0

贡献

游客

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

请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc模块还能正常计数,就像stm32那样。
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表