微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 请教下cc2541 central扫描广播包时无法收全的原因

请教下cc2541 central扫描广播包时无法收全的原因

时间:10-02 整理:3721RD 点击:

两个CC2541, 一个作为外设2S发送一次广播包,一个作为central接收广播,扫描间隔500ms,每收到一个广播包通过串口发送出去,每次扫描结束立即启动扫描,按理说应该能收到所有广播包的,但实际在1M的距离,最多只能收到80%的包,比如外设发了100个广播包,central只收到了80个。是什么原因造成这个现象的?

central扫描时在3个广播信道各监听多长时间?能改吗?

每次扫描结束立即启动扫描, 这里就可能丢包,启动时需要一个过程,如果广播2s一到,启动还没完全好,就丢了。

解决方法,扫描改为,持续扫描

怎么改为持续扫描,只看到DEFAULT_SCAN_DURATION设置,

gap.c里面有扫描窗口的参数,你找一下,类似这个

/**
* @brief Scan window used during connection establishment (n * 0.625 mSec)
*
* default: 240
*
* range: 4-16384
*/
#define TGAP_CONN_SCAN_WIND 13

当扫描窗口等于扫描间距DEFAULT_SCAN_DURATION,就会持续扫描

    主机扫描结束后,应用层任务会收到响应的事件通知。

    你可以在这个事件通知的处理中重新开启扫描,这样就实现了循环扫描了。

应该说,扫描确实存在一定概率扫描不到,但可以尽量改善。可以参考下这边的网友分享: http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/109771.aspx

测试条件:一个外设一个central,外设每2S发送一次广播包,central循环扫描。周围没有其他BLE设备。

我不需要保存扫描结果,我只要把扫描到的广播包通过串口发送出去就行了。我在收到GAP_DEVICE_INFO_EVENT事件时将串口发送,收到GAP_DEVICE_DISCOVERY_EVENT时启动扫描。应用层没有多余的操作。现在是实现了循环扫描,但是外设发送了100个广播包,central实际只收到了80个。领导现在不相信能丢了20%这么多,能解释下丢这么多的原因吗?

1、启停的过程中丢失的,

2、更改为持续扫描即可

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top