打印
[数字电源]

BLE 广播数据确实受限于 31 个字节的长度

[复制链接]
240|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2024-7-25 01:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

BLE 广播数据确实受限于 31 个字节的长度,包括标头和负载数据,使得实际可用的数据空间非常有限。对于一些应用而言,这个限制可能显得捉襟见肘。以下是几种解决这个问题的方法:

广播短标识并使用连接发送详细数据:
你可以在广播数据中仅发送一个简短的标识符或 UUID,用于识别设备或服务。一旦扫描器检测到这个标识符,它可以与设备建立连接,并在连接状态下发送更多数据。
使用 Scan Response 数据:
广播数据和扫描响应数据可以合并使用,总共可以扩展到 62 个字节。虽然这样可能还是不够,但可以增加一点数据空间。
定制广告包格式:
你可以将多个 UUID 或其他数据字段紧凑地打包在一起,以尽量减少开销。例如,使用自定义的数据格式或者压缩算法。
周期性广播:
你可以通过周期性广播不断更新数据内容,将需要发送的数据分成多个广告包发送出去。虽然每个广播包的数据量有限,但多个包一起可以传输更多数据。
使用 BLE 5.x 特性:
如果你的设备支持 BLE 5.x,可以利用长广告包特性。BLE 5.0 及以后版本引入了扩展广告包,允许使用更大的广告数据(可达 255 个字节)。
利用网状网络:
如果你的应用场景适用,可以考虑使用 BLE Mesh 网络,它允许设备之间传输更多的数据,并且可以通过网络中的其他设备进行中继。

使用特权

评论回复
沙发
t60yz|  楼主 | 2024-7-25 01:27 | 只看该作者
下面是一个简单的示例,展示如何利用 Scan Response 数据扩展广播内容:

c// 广播数据
uint8_t adv_data[] = {
    0x02, 0x01, 0x06,              // 标头
    0x11, 0x07, 0xAB, 0xCD, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC // UUID
};

// 扫描响应数据
uint8_t scan_rsp_data[] = {
    0x0F, 0x09, 'E', 'x', 'a', 'm', 'p', 'l', 'e', ' ', 'D', 'e', 'v', 'i', 'c', 'e'
};

ble_gap_adv_params_t adv_params = {
    .interval = 100,
    .type     = BLE_GAP_ADV_TYPE_ADV_IND,
};

sd_ble_gap_adv_data_set(adv_data, sizeof(adv_data), scan_rsp_data, sizeof(scan_rsp_data));
sd_ble_gap_adv_start(&adv_params);

使用特权

评论回复
板凳
t60yz|  楼主 | 2024-7-25 01:27 | 只看该作者
在这个示例中,adv_data 包含了一个 128 位的 UUID,而 scan_rsp_data 包含了设备的名称。这样可以有效地扩展广播数据的内容。

希望这些方法可以帮助你解决广播数据量不足的问题。

使用特权

评论回复
地板
IFX-JimLin| | 2024-7-26 11:45 | 只看该作者
传统的BLE广播都是有限制的,只能在CH37/38/39上进行,但是,最新的5.4协议上,通过AUX扩展到其他37个通道,从而实现更多的广播可能。

使用特权

评论回复
5
suncat0504| | 2024-7-29 20:58 | 只看该作者
一次通讯量少,会影响通讯速度吧?可能更适用于传感器这种传输数据少的?

使用特权

评论回复
6
suncat0504| | 2024-7-29 20:59 | 只看该作者
可以使用透传那种模式?

使用特权

评论回复
7
shenxiaolin| | 2024-7-29 21:53 | 只看该作者
感谢分享

使用特权

评论回复
8
shenxiaolin| | 2024-7-29 21:54 | 只看该作者
感谢分享

使用特权

评论回复
9
yangjiaxu| | 2024-7-30 11:13 | 只看该作者
受限就受限呗,官方的FAE不是告诉了么,再多开个就好了

使用特权

评论回复
10
梵蒂冈是神uy| | 2024-7-30 17:28 | 只看该作者
受限再多开个就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

940

帖子

0

粉丝