【问题标题】:Data communication in bluetooth蓝牙数据通讯
【发布时间】:2021-05-31 18:38:20
【问题描述】:

在蓝牙中,我将发送一个分成 3 个数据包(p1、p2、p3)的大文件。每个数据包都有最大的 ATT 负载。

我的问题是,在一个连接间隔内,会有一个主从请求,然后从属将一个接一个地发送文件的所有数据包,每两个数据包之间有帧间空间 (IFS) (M -> S, IFPS, S->M(p1), IFPS, S->M(p2), IFPS, S->M(p3))?

或者就像 (M -> S, IFPS, S->M(p1), IFPS, M -> S, IFPS, S->M(p2), IFPS,M -> S, IFPS, S->M(p3), IFPS)?

【问题讨论】:

    标签: bluetooth bluetooth-lowenergy bluetooth-gatt


    【解决方案1】:

    在低功耗蓝牙中,连接中的每个数据包都会得到确认。这在蓝牙规范 v5.2 第 1 卷 A 部分第 3.1.3.2 节(LE 可靠性)中有所提及:

    与 BR/EDR 一样,在较差的射频环境中,LE 系统应该 被认为本质上不可靠。为了解决这个问题,系统 在每一层提供保护级别。 LL 数据包使用 24 位循环冗余错误校验 (CRC) 覆盖 数据包有效载荷。如果数据包上的 CRC 验证失败 有效载荷,数据包未被接收方确认,数据包 被发送者重传。

    因此,如果在您提供的两个示例之一之间进行选择,则更准确的是:-

    (M -> S, IFPS, S->M(p1), IFPS, M -> S, IFPS, S->M(p2), IFPS,M -> S, IFPS, S->M( p3), IFPS)

    但是,它并没有这么明确,因为大部分情况都发生在基带层的底层,还有其他事情需要考虑(例如每个连接间隔的数据包数)。如果您还没有看过它们,请查看以下链接以更好地了解 BLE 中的吞吐量是如何测量的:-

    【讨论】:

    • 能否请您给我推荐其他您认为表现更好的示例?
    • 我想知道这个例子是如何工作的? (M -> S, IFPS, S->M(p1), IFPS, M -> S, IFPS, S->M(p2), IFPS,M -> S, IFPS, S->M(p3), IFPS)当一个大文件分成3个包(p1,p2,p3),那么它会有序列号,Master(M)收到P1后可以理解它不是所有的数据,它会请求休息吗?
    • 我不确定我是否理解。也许发布一个包含更多细节的新问题?如果您只是想获得最佳吞吐量,请查看上面的链接,尤其是这个链接:- punchthrough.com/maximizing-ble-throughput-on-ios-and-android
    • 归根结底,来自 ACK/IFPS 的延迟几乎可以忽略不计,因此我建议您继续进行设计,而不要将它们计入计算中
    • 另外请注意,ACK/IFPS 不是您必须做的事情,它们发生在芯片的底层。换句话说,在你的设计中你可以有p1、p2、p3的序号,master会明白,如果你在master上写代码这样工作就得等p2和p3了跨度>
    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多