1. BLE蓝牙MAC地址基础解析
在BLE蓝牙技术体系中,MAC地址(Media Access Control Address)是设备通信的核心标识符。这个48位的硬件地址通常以六组十六进制数表示(如:00:1A:7D:DA:71:13),由IEEE统一分配前24位(OUI),后24位由厂商自定义。不同于传统蓝牙,BLE设备在广播和连接过程中会涉及多种MAC地址类型:
- 公共地址(Public Address):全球唯一的固定地址,烧录在设备芯片中
- 随机地址(Random Address):又分为静态随机地址(重启不变)和私有地址(含可解析和不可解析两类)
- 周期性变更地址:iOS/Android等现代系统为保护隐私采用的动态地址方案
实际开发中发现:Android 6.0+和iOS设备默认使用可解析私有地址,导致传统基于MAC的设备追踪方法失效,这是很多BLE应用需要特别注意的兼容性问题。
2. MAC地址在BLE通信中的关键作用
2.1 设备发现与广播机制
当BLE设备广播时,报文头部必然包含MAC地址信息。以常见的ADV_IND广播包为例:
cpp复制struct adv_pdu {
uint8_t type; // 广播类型
uint8_t addr[6]; // 广播者MAC地址
uint8_t data[31]; // 广播数据
};
广播间隔(20ms-10.24s)直接影响设备被发现的速度,而MAC地址决定了设备标识的唯一性。
2.2 连接建立过程
主设备(Master)通过扫描获取从设备(Slave)的MAC地址后,使用CONNECT_REQ发起连接。连接参数中:
- ConnInterval(7.5ms-4s)
- Slave Latency(0-499)
- Supervision Timeout(100ms-32s)
这些参数与MAC地址共同决定了连接稳定性和功耗表现。
3. 实际开发中的MAC地址处理技巧
3.1 各平台获取MAC地址的方法对比
| 平台 | API示例 | 注意事项
