老兵

老兵

0个粉丝

34

问答

2

专栏

98

资料

老兵  发布于  2020-12-04 14:38:29
采纳率 3%
34个问答
2773

nrf52832蓝牙主机(接收蓝牙数据 串口输出)怎么优化

nrf52832蓝牙主机(接收蓝牙数据 串口输出)怎么优化

我来回答
回答2个
时间排序
认可量排序

1

0个粉丝

1

问答

16

专栏

6

资料

1 2020-12-10 16:11:59
认可0

在调试公司项目中的蓝牙生理传感器(该传感器为Peripheral,连接上Central后等待pc机端指令,指令到达将Peripheral中采集到的生理数据经由Central传输到PC端)过程中,遇到一个问题,主从机连接上后,Server接收到指令向Client发送数据,这是突然将Server重启,重新与Client连接上后,接收到PC端指令,Server开始发送数据,出现Server每发送一组数据,Client都会接收到两组相同的数据,连续进入到ble_nus_c_evt_handler函数两次。

   分析:

 (1)经过几次咨询与讨论,了解到,有之前的同事在做从机不做主机的情况下直接与手机app端对接,将从机重新启动,然后从机每发送一组数据,手机app端就会接收到两组。经过安卓app工程师,修改bug了解到,从机重新启动断开连接后,手机app需要关闭一个相关的通知,下一次重启之后才不会接收到两组数据。

 (2)若是这类问题无法解决,可以强制屏蔽此类问题。

   解决过程:

 (1)参考分析(1)中的问题,由于自己是蓝牙方面的小白,身边也没有什么技术上真正的懂这方面的,所以只能在艾克姆用户讨论群中,分享自己的问题,并向大佬请教,可是群里的管理员说自己并没有遇到此类的问题;所以我向管理员要了他说过的没有出现过这类问题的例程,一个一对多主机程序和一个从机程序,两个从机串口助手端  都以2hz的速度自动发送数据, 主机的串口助手端也是可以以4hz接收到两个从机的数据,这个时候我将从机A断开, 主机串口端  一开始 会以2hz的速度接收从机B的数据,过了大概3秒左右,主机的串口助手又以4hz的速度接收数据 ,而且是主机是接收到从机一次的数据,它串口连续发送两次 连续进入

这个函数也是两次。说明这不单单是我自己存在这个问题。

 (2)针对于分析(2),我是用的方法是利用cortm系列内核专用复位函数NVIC_SystemReset(); 在主从机连接完好的情况下,只要有一个断开连接,那么我就将主机重新启动,重新连接。首先我将复位函数添加到ble_nus_c_evt_handler函数中的BLE_NUS_C_EVT_DISCONNECTED位置中,当我将其中一个从机断开连接后,主机死机;然后,我又将函数添加到ble_event_handler函数的BLE_GAP_EVT_DISCONNECTED位置中,发现还是主机死机;(经过我的思考,添加到的这两个位置是ble协议栈中的从机断开连接的处理事件的位置,此时在协议栈中可能设置与内核相关的内容,既然如此我就不在你协议栈运行的时候去软件复位,我在主循环中进行处理,当然这只是我的猜测。)  然后我就在ble_nus_c_evt_handler函数中的BLE_NUS_C_EVT_DISCONNECTED位置中,放置一个标志位,当运行从机断开连接,运行到此位置时,标志位置一,然后在主循环中(此时与ble协议栈无关)运行NVIC_SystemReset(),成功复位(看来我的猜测也是比较符合的)。这也是一种解决问题的方式。

   办法:

 (1)关于此类问题,我自己还是无法解决的(我承认我是个ble的小白),最后艾克姆解决了他自己的例程的问题,他把例程发给了我,发现这货居然把协议栈里的东西给改了好多。主要修改的思路是,连接断开后清空客户端的全部参数。如下几幅图这是ble_nus_c.c文件修改位置之前的配置。

海斌

0个粉丝

0

问答

0

专栏

0

资料

海斌 2020-12-18 13:57:29
认可0

我们代理NORDIC的产品,有问题我可以找我们技术帮忙支持一下。可以加我VX:13601945754

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区