低功耗蓝牙BLE学习记录
本文档记录了低功耗蓝牙BLE的学习记录,涵盖了BLE的传输信道、物理信道、数据帧结构、Access Address、Channel MAP、PDU类型等知识点。
一、BLE的传输信道
BLE的传输信道位于2.4GHz频段,共有40个channel。其中包括两种物理信道:广播信道和数据信道。
二、数据帧结构
数据帧中设置Access Address用于标识该信道,防止信道碰撞。Channel MAP如下:
数据帧通信蓝牙帧结构如下:
* Preamble:根据Access Address而定,假如AA的LSB(最右bit)bit为1,则前导便是10101010b,反之则为01010101b。
* Access Address:广播帧的AA为:0x8E89BED6。其他情况可以是一个32bit的随机数。AA需满足以下条件:
+ 不超过连续6个1或者0。
+ 与广播帧的AA不同bit超过1个。
+ 不能4byte相同。
+ 0 1 跳变不能超过24次。
+ MSB 6bit 0 1 跳变超过2次。
三、PDU类型
PDU(Protocol Data Unit)是BLE中的数据单元。BLE中有多种PDU类型,每种PDU类型都有其特定的帧结构和功能。
* Advertising Channel PDU:蓝牙广播帧帧结构如下:
+ Header:帧头格式如下:
- PDU Type:广播帧类型(ADV_IND、ADV_DIRECT_IND、ADV_NONCONN_IND、ADV_SCAN_IND)
- Length:3~37bytes
+ Payload:广播数据
*Advertising PDU:蓝牙广播帧的payload格式如下:
+ TxAdd:广播地址的标示位
+ AdvData:广播HOST的广播数据
四、扫描PDU
扫描PDU用于扫描蓝牙设备。
* SCAN_REQ:扫描请求帧,处于广播状态的接收设备接收这种帧。
+ ScanA:扫描者的地址
+ AdvA:该扫描帧的目的地址
* SCAN_RSP:扫描确认帧,处于广播状态的设备在收到扫描请求后,需要回复扫描确认帧。
+ AdvA:地址意义由TxAdd确定
+ ScanRspData:广播端的附带数据
五、Initiating PDU
Initiating PDU用于连接发起协议。
* CONNECT_REQ:连接请求帧,发起方发送该帧,广播方接收该帧。
+ TxAdd:确认InitA地址为公共地址还是随机地址
+ RxAdd:确认AdvA地址为公共地址还是随机地址
+ LLData:数据格式如下:
- AA:Access Address
- CRCInit:CRC校验的初始值
- WinSize:发送窗长度参数
- WinOffset:发送窗起始偏移量
- Interval:确定connect interval的时间长度
- Latency:connSlaveLatency
- TimeOut:connSupervisionTimeout
本文档记录了BLE的学习记录,涵盖了BLE的传输信道、物理信道、数据帧结构、Access Address、Channel MAP、PDU类型等知识点,为开发者和学习者提供了有价值的参考资料。