社区导航

 

搜索
查看: 216|回复: 5

[BLE(低功耗蓝牙)] BLUENRG-1休眠唤醒后串口打印问题

[复制链接]

15

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-1-14 14:24 | 显示全部楼层 |阅读模式

BLUENRG-1广播间隔设置为1S,每次休眠唤醒后打印唤醒原因,但是每次唤醒原因都打印了2次,不知道为什么?

 

1.png 2.png



回复

使用道具 举报

6832

TA的帖子

19

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-1-15 10:21 | 显示全部楼层

发一下测试程序,我给你试试

虾扯蛋


回复

使用道具 举报

15

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-1-15 13:12 | 显示全部楼层
littleshrimp 发表于 2020-1-15 10:21 发一下测试程序,我给你试试

Test9_BLE_Chat.rar (2.38 MB, 下载次数: 1)

点评

我测试了一下 应该是执行休眠指令后需要一段时间才能进入休眠状态  详情 回复 发表于 2020-1-16 09:05


回复

使用道具 举报

6832

TA的帖子

19

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-1-16 09:05 来自手机 | 显示全部楼层
sunzhilei888 发表于 2020-1-15 13:12
多谢!


我测试了一下 应该是执行休眠指令后需要一段时间才能进入休眠状态 你在休眠函数后加一段延时



回复

使用道具 举报

15

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-1-16 10:31 | 显示全部楼层
littleshrimp 发表于 2020-1-16 09:05 sunzhilei888 发表于 2020-1-15 13:12 多谢! 我测试了一下 应该是执行休眠指令后需要一段时间才 ...

加了延时是没有问题的,需要2ms以上时间,但是实际应用时不能每次休眠唤醒后都要等待2ms吧。



回复

使用道具 举报

6832

TA的帖子

19

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-1-16 19:33 | 显示全部楼层
sunzhilei888 发表于 2020-1-16 10:31 加了延时是没有问题的,需要2ms以上时间,但是实际应用时不能每次休眠唤醒后都要等待2ms吧。

做了很多测试,造成这种情况的原因更像是唤醒后一段时间里不能进入睡眠导致的,而不是以前说的执行休眠指令后需要等待一段时间才能进入休眠状态

比如射频正处于发送状态,Blue_Handler会不断不调用,这时不能进入睡眠

延时会增加CPU工作的时间,造成功耗的增加,我试了很多方法都没有有效的解决办法

image.png

后来我想到也许可以通过虚拟定时器的两次差值来判断当前调用是否是在系统休眠以后

因为如射频的唤醒时间为1S,那么当2次差值小于1S时则认为它没有进入休眠前的重复执行

修改为下边代码

    while(1) 
    {
        BTLE_StackTick();
        APP_Tick();
        BlueNRG_Sleep(SLEEPMODE_NOTIMER,0,0);//SLEEPMODE_WAKETIMER
		uint32_t time = HAL_VTimerGetCurrentTime_sysT32();
		int32_t ms = HAL_VTimerDiff_ms_sysT32(time,last_time);
		last_time = time;
		printf("%d\r\n",ms);
    }

对应的串口输出,一个接近1000ms另一个为2ms image.png

改回你的代码后每一次唤醒只打印一次

    while(1) 
    {
        BTLE_StackTick();
        APP_Tick();
        BlueNRG_Sleep(SLEEPMODE_NOTIMER,0,0);//SLEEPMODE_WAKETIMER
		uint32_t time = HAL_VTimerGetCurrentTime_sysT32();
		int32_t ms = HAL_VTimerDiff_ms_sysT32(time,last_time);
		last_time = time;
		if(ms > 100)printWakeupSource1();
    }

可以看到功耗比使用延时方法减少很多

image.png

image.png
虾扯蛋


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-1-30 04:45 , Processed in 0.183523 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表