设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2016|回复: 9
打印 上一主题 下一主题

关于蓝牙协议栈下的被动扫描和串口的矛盾问题

[复制链接]

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
跳转到指定楼层
楼主
QINGJIAO_Hi 发表于 2022-4-1 16:17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序架构:
今天测试程序的时候发现,在蓝牙协议栈下用了2个功能,串口和蓝牙被动扫描。我设置了蓝牙扫描的 SCAN_INTERVAL  设置到了10秒,SCAN_WINDOW  设置了2秒。


问题:
发现串口接收在SCAN_WINDOW  扫描窗口期间,能正常接收,但是过了这个2秒的窗口期,则会难以接收,要收两次,才能识别到数据。


猜想:
就很像进入了低功耗模式,或者中断被关了一样。
暂未解决。请青风和各位论坛大神帮我解答下,以及程序上如何更改。
感谢万分!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
沙发
 楼主| QINGJIAO_Hi 发表于 2022-4-1 16:22:19 | 只看该作者
上面描述有点不清晰
是在扫描windos期间,串口可以收到数据。
但是扫描windos过后,串口就要2次才能识别到数据。
回复 支持 反对

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
板凳
 楼主| QINGJIAO_Hi 发表于 2022-4-1 16:33:09 | 只看该作者
我的串口的功能的实现:
在串口中断函数:在触发到了接收中断,则把数据放到  缓冲区中
然后在main里面:while循环里,进行解析缓冲区的数据,读取命令。

但是在扫描过后,则要2次,才能接到命令。但是它不会丢包
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
地板
admin 发表于 2022-4-1 21:17:57 | 只看该作者
QINGJIAO_Hi 发表于 2022-4-1 16:33
我的串口的功能的实现:
在串口中断函数:在触发到了接收中断,则把数据放到  缓冲区中
然后在main里 ...

串口2次才接收到数据是什么意思??
你是边扫描边接收串口数据还是干什么??
回复 支持 反对

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
5#
 楼主| QINGJIAO_Hi 发表于 2022-4-2 09:08:57 | 只看该作者
admin 发表于 2022-4-1 21:17
串口2次才接收到数据是什么意思??
你是边扫描边接收串口数据还是干什么??

边扫描,边接收串口数据。串口数据,我是发送给开发板
回复 支持 反对

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
6#
 楼主| QINGJIAO_Hi 发表于 2022-4-2 09:15:06 | 只看该作者
QINGJIAO_Hi 发表于 2022-4-2 09:08
边扫描,边接收串口数据。串口数据,我是发送给开发板

现在有两种情况,都是在蓝牙协议栈下:
第一种是正常情况:
边扫描边接收串口,串口的数据是能成功收到,成功解析的。
第二种情况是不正常的:
就是蓝牙停止扫描了,串口此时就很像进入了休眠。发送一次串口数据,串口收不到,
紧接着发送第2次串口数据,则串口就好像退出休眠了,就可以收到第一次和第二次 的两次数据。
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
7#
admin 发表于 2022-4-2 10:21:12 | 只看该作者
QINGJIAO_Hi 发表于 2022-4-2 09:15
现在有两种情况,都是在蓝牙协议栈下:
第一种是正常情况:
边扫描边接收串口,串口的数据是能成功收到 ...

不要主函数里的待机功能
回复 支持 反对

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
8#
 楼主| QINGJIAO_Hi 发表于 2022-4-2 11:00:37 | 只看该作者
admin 发表于 2022-4-2 10:21
不要主函数里的待机功能


应该是这个吧。我屏蔽掉了,可以了。谢谢
回复 支持 反对

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
9#
 楼主| QINGJIAO_Hi 发表于 2022-4-2 11:01:32 | 只看该作者
QINGJIAO_Hi 发表于 2022-4-2 11:00
应该是这个吧。我屏蔽掉了,可以了。谢谢

C:\Users\Administrator\Desktop\1648868370(1)
回复 支持 反对

使用道具 举报

3

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
10#
 楼主| QINGJIAO_Hi 发表于 2022-4-2 11:02:23 | 只看该作者
QINGJIAO_Hi 发表于 2022-4-2 11:00
应该是这个吧。我屏蔽掉了,可以了。谢谢

void nrf_pwr_mgmt_run(void)  函数里面的:  
PWR_MGMT_FPU_SLEEP_PREPARE(); //把这个屏蔽掉,好像就可以了。谢谢
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-4-29 03:50 , Processed in 0.158742 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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