推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

BLE广播包结构通信过程与调试要点

资料介绍

BLE广播包结构通信过程与调试要点 一、缘起 项目里要做一款低功耗蓝牙设备,靠广播包对外发布数据。广播包看着简单,就是一串字节往外发,可真调起来才发现坑不少。广播间隔、报文格式、扫描请求响应、还有那 31 字节的容量限制,每一个都能让现场调试头大。 这篇文章就以工程手记的方式,把我在 BLE 广播调试中踩过的坑和总结的要点记下来,给后来者一个参照。写成问答式的,一问一答,遇到什么说什么。 二、第一轮尝试 Q1:广播包到底长什么样,该从哪看起? A:BLE 广播包分两部分,前面是固定的头部,后面是可变长度的广播数据。头部里有报文的类型、发送者的地址类型、还有可选的接收者地址。广播数据那部分,才是我们真正关心的内容载体。 Q2:广播数据又是怎么组织的? A:广播数据是一串"AD Structure"拼起来的,每个结构由三部分组成:一个字节的长度、一个字节的类型(AD Type)、然后是长度对应的数据。解析时就是按这个"长度-类型-数据"的格式一个个读下去,直到 31 字节用尽。这个结构看起来死板,但好处是标准、统一,不同厂商的设备都能按同一套规则来。 三、遇到的坑 Q3:广播数据明明发了不少,为什么对方解析不全? A:十有八九是超出 31 字节上限了。BLE 广播包的数据部分最多 31 字节,加上头部也就 37 字节的总长。一旦数据超限,协议栈会截断,后发的内容就丢了。我在项目里就吃过这个亏,服务 UUID 加厂商数据,拼到快 30 字节,结果最关键的负载被截掉了。 Q4:广播间隔设多少合适? A:这是个体力和功耗的权衡。广播间隔越短,被扫描到的概率越高、发现的时延越低,但功耗也越大。默认通常取 100ms 到 1s 之间。做低功耗设计时,一般会拉长间隔,但也要权衡发现速度,不能一味求省电。 Q5:扫描请求和扫描响应又是怎么回事? A:广播有两种。

部分文件列表

文件名 大小
BLE广播包结构通信过程与调试要点.docx 39K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载