ble低功耗蓝牙
本文介绍下数据信道数据报文结构,及数据报文的传输机制
首先看看数据报文结构
数据信道中会传输两种结构的数据,控制帧和数据帧,报文结构也存在略微差异
先看公共部分
LLID:此包是LL Date PDU(数据帧),LL Control PDU(控制帧),占用2个字节
00b: Reserved
01b: LL Date PDU: Continuation fragment of L2CAP message, or an Empty PDU.
10b: LL Date PDU: Start of an L2CAP message or a complete L2CAP message with
no fragmentation.
11b: LL Control PDU
NESN:该设备期望的数据包序列
SN:该设备的数据包序列
二者可以控制发送的包是否是新包,还是重发包
MD:该设备数据有没有发送完成,还有剩余数据,值为1,否则为0
MIC:与数据加密有关,可省略
1.控制帧结构
关于控制帧类型做简单说明
蓝牙设备建立连接,首先通过LL_CONNECTION_UPDATE_REQ参数更新
LL_ENC_REQ 和LL_ENC_RSP 数据加密
LL_FEATURE_REQ PDU和LL_FEATURE_RSP 蓝牙设备连接后用于数据
LL_VERSION_IND 交换蓝牙协议版本
LL_TERMINATE_IND 终止通信
2.数据帧格式
3.数据报文的传输
现在,主从这边需要传输数据,并且一个数据包无法完成全部数据的传输,主从设备如何进行数据分包,数据传输,以及数据传输失败后的冲传呢?如下图
注意:数据传输比特流,传输顺序由地位到高位进行传输,数据传输还使用了白话器。
白化器:将有序的数据按一定的规则打乱(让数据更加随机化),接收按照打乱的规则从新排序。