代码中,要进入休眠需要检查几项:
- ke_timer_empty 休眠定时器队列是否为空,检测能不能进入深度休眠的,因为sleep timer 是针对sleep唤醒的。
- dev_get_bf() 任何设备在工作,就不能进入休眠。
第二项返回的东西是代表什么设备?外设吗? 是不是需要人工关闭才行?
另外 进入休眠/深度休眠,蓝牙协议栈也停止运作了,此时应该是属于断开状态了?假如我APP连接着的话,模块休眠,APP端的连接是否也断开了?
代码中,要进入休眠需要检查几项:
第二项返回的东西是代表什么设备?外设吗? 是不是需要人工关闭才行?
另外 进入休眠/深度休眠,蓝牙协议栈也停止运作了,此时应该是属于断开状态了?假如我APP连接着的话,模块休眠,APP端的连接是否也断开了?
是的,指的就是外设,比如IIC 正在通信,中途不能进入睡眠
进入睡眠后,协议栈部分会自主唤醒程序继续往下跑,不用人为干预,本来连着的不会断开连接。
FireBLE_blue 发表于 2015-6-9 14:28
是的,指的就是外设,比如IIC 正在通信,中途不能进入睡眠进入睡眠后,协议栈部分会自主唤醒程序继续往 …
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEEP sleep 模式时,手册里面说的是,只能由引脚中断唤醒
wyq165 发表于 2015-6-9 18:08
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEE …
不会的,深度睡眠只能GPIO口才能唤醒,你串口发数据过来是没反应的;
本帖最后由 安安 于 2015-6-10 09:42 编辑
wyq165 发表于 2015-6-9 18:08
那不会断开连接的话,如果APP端如果在其休眠时,发送一串数据,那么蓝牙模块是不是就会被唤醒?
因为DEE …
蓝牙此时处于sleep模式。当连接断开,外设不工作,设备不广播的时候,才会进入到Deep sleep模式。
安安 发表于 2015-6-10 09:37
蓝牙此时处于sleep模式。当连接断开,外设不工作,设备不广播的时候,才会进入到Deep sleep模式。
我现在是准备在工作的时候,当我工作完毕,主动让其进入深度休眠。
而不用DEMO本身的处理方式
那么也需要先关闭外设,关闭广播,才能调用深度休眠进入深度休眠?
还是直接调用深度休眠函数?
wyq165 发表于 2015-6-12 11:28
我现在是准备在工作的时候,当我工作完毕,主动让其进入深度休眠。
而不用DEMO本身的处理方式
1.进入深度睡眠模式仅仅是进入睡眠,不附带关闭外设工作,断开蓝牙连接的功能。
2.深度睡眠会断掉16M晶振,外设无法正常工作,蓝牙无法保持连接。你只需要停止外设工作,断开蓝牙连接就可以进入深度睡眠了,强行深睡没有意义。
安安 发表于 2015-6-12 14:27
1.进入深度睡眠模式仅仅是进入睡眠,不附带关闭外设工作,断开蓝牙连接的功能。
2.深度睡眠会断掉16M晶 …
因为不知道到底哪个外设需要关闭。怕把自己打开的外设关闭后,还有一些自己未知的,默认也打开的外设还在活动而使得其不能自动进入睡眠。因为我这边进入睡眠后不用唤醒,设置成了按钮复位。
wyq165 发表于 2015-6-12 15:37
因为不知道到底哪个外设需要关闭。怕把自己打开的外设关闭后,还有一些自己未知的,默认也打开的外设还在 …
用此函数可以获取睡眠的允许状态,如果外设工作,就查找出来,并且关闭它
// Obtain the status of the user program
usr_sleep_st = usr_sleep();
安安 发表于 2015-6-12 16:05
用此函数可以获取睡眠的允许状态,如果外设工作,就查找出来,并且关闭它
请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc模块还能正常计数,就像stm32那样。
connycommy 发表于 2015-7-1 15:10
请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc …
这个问题,比较特殊,稍等,我们和原厂沟通问问芯片内部结构再给你最正确的回复。
我一朋友的设计上也曾用到过rtc,不过他们的处理方式是不睡眠。
rtc 在normal sleep 后应该是能工作的,因为还有32k 的晶振在提供时钟。(只是我想象的,具体看原厂给我们的回复)
connycommy 发表于 2015-7-1 15:10
请问qn9020在进入normal sleep之后,rtc还在计数吗?我调试下来发现不计数了。我希望在normal sleep时rtc …
原厂回复:睡眠以后rtc 也停了。如果要做时间,可以使用 bletimer.c 里面的接口函数