根据你的测试结果和环境分析,在 EZ-Serial 的 BLE "无响应写入" 中,一次通信中接收的最大数据包大小上限约为 250~253 字节。
以下是详细分析和解释:
BLE ATT_MTU (属性协议最大传输单元):
ATT_MTU。ATT_MTU 是 23 字节。其中,ATT 头部占用 3 字节,留给数据的只有 20 字节。ATT_MTU。常见协商值包括 158, 247, 256, 512, 517 等。协商后,有效载荷容量为 ATT_MTU - 3 (减去头部)。ATT_MTU(至少为 250 + 3 = 253)。L2CAP CoC (面向连接的 L2CAP 通道):
MTU (L2CAP_MTU),通常远大于 ATT_MTU(理论上可达 64KB+)。MTU 通常限制在 517 字节左右(内部缓冲区大小限制)。这意味着一个 L2CAP PDU (协议数据单元) 能携带的最大有效载荷约为 517 - 4 = 513 字节(减去 L2CAP 头部)。固件/应用层实现限制:
ezserial_app 固件在处理接收到的无响应写入数据时,需要将其缓冲并最终通过 UART 输出。ezserial_app 固件版本 1.2.29 内部用于接收 BLE 数据的缓冲区大小 通常限制在 250~253 字节左右 (对应协商后 ATT_MTU=253~256,或者适应其内部 L2CAP CoC 片段处理逻辑)。在所述环境(CYBT-343026-EVAL, ezserial 固件 v1.2.29)下,针对 "无响应写入" 特征 (UUID: 65333333-A115-11E2-9E9A-0800200CA102):
ezserial_app 固件的文档或应用笔记,查找是否有明确说明接收 buffer 大小。ezserial_app 固件版本可用。新版本可能增大接收缓冲区或优化处理逻辑,从而支持更大的数据包(但这需要官方更新说明)。总之,在实践中,不要超过 250 字节发送以确保可靠性。 这是 ezserial_app v1.2.29 固件在该场景下的实际最大有效载荷限制。
举报
更多回帖