ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

从喊话到私聊:蓝牙低功耗 (BLE) 完整通信原理解析

从喊话到私聊:蓝牙低功耗 (BLE) 完整通信原理解析 CC-BY-SA-4.0 | © 2026 KY (kyshipit)声明本文内容基于蓝牙技术联盟Bluetooth SIG公开发布的《蓝牙核心规范》。文中涉及的“典型设计”、“常见做法”为嵌入式与物联网行业公开的通用工程实践不代表任何特定产品的私有实现不构成产品规格或商业秘密泄露。本文非 SIG 官方文档仅供科普学习按现状AS‑IS提供。目录声明引子先看全景一次完整的蓝牙通信长什么样一、低功耗设计Bluetooth Low Energy / Advertising Interval / Connection Interval1.1 为什么要“睡觉”1.2 休眠与唤醒1.3 广播间隔1.4 连接间隔1.5 功耗管理的本质二、物理信道与协议栈Physical Channel / GAP / GATT / L2CAP / ATT2.1 ISM频段2.2 信道划分2.3 广播信道的工作方式2.4 数据信道与跳频2.5 协议栈分层架构2.6 GAP层2.7 GATT层三、广播与扫描Advertising / Scanning / ADV_IND / ADV_NONCONN_IND3.1 广播态与扫描态3.2 广播PDU类型3.3 广播数据格式3.4 广播间隔的实现机制3.5 地址类型四、连接与加密Connection / LTK / LE‑ACL4.1 连接发起4.2 连接事件与连接间隔4.3 从设备延迟4.4 LE数据连接4.5 LTK生成机制4.6 链路层加密五、认证Authentication / Challenge-Response5.1 为什么需要应用层认证5.2 挑战-响应机制5.3 安全硬件隔离5.4 认证模式六、指令交互Command / Response / TLV / CRC166.1 请求-响应模型6.2 应用层协议框架6.3 TLV格式与CRC校验七、安全机制RPA / Replay Attack / Whitelist / IRK / CSRK7.1 RPA地址更新机制7.2 防重放攻击7.3 白名单过滤八、功耗与容错Dynamic Interval / OTA A/B Partition8.1 广播间隔的动态调整8.2 连接间隔的动态调整8.3 多级功耗管理8.4 连接超时与丢失处理8.5 固件升级与容错结语附录附录A蓝牙广播数据格式参考附录B蓝牙ATT协议参考附录C蓝牙L2CAP与CID参考附录DBLE空口包结构参考引子先看全景一次完整的蓝牙通信长什么样你拿出车钥匙按一下门开了。钥匙怎么知道车在哪车怎么知道是自家钥匙中间发生了什么整个过程是这样的钥匙平时在休眠。你按键它醒了开始喊“有没有车要找我”车一直竖着耳朵听听到后回应“听到了我们单独聊。”于是双方建立一条私聊通道。通道通了再对一下暗号确认对面是正主。暗号对上了你按的那个指令才执行。事情办完断开连接钥匙继续休眠。就这几步唤醒→喊话→听见→私聊→对暗号→执行→断开→休眠。下面拆开讲。一、低功耗设计Bluetooth Low Energy / Advertising Interval / Connection Interval1.1 为什么要“睡觉”钥匙平时在睡觉。“睡觉”的意思是蓝牙全部关掉——不广播、不连接、不收发数据只有一颗超低功耗的传感器还在监听着外部动静。整机电流降到微安级。为什么必须这样纽扣电池容量有限。如果蓝牙射频持续工作电流在毫安级别几天就没电。要让设备能用上数年必须在99%以上的时间里处于休眠状态只在必要的时候醒来干活干完立刻回去睡。这是蓝牙低功耗Bluetooth Low Energy这个名字的根本含义——“低功耗”不是营销词而是从物理层到应用层贯穿始终的设计原则。1.2 休眠与唤醒进入休眠态时蓝牙射频全部关闭。不广播、不扫描、不连接、不处理任何通信事务。只有唤醒检测电路保持工作。仅由按键触发唤醒。为什么不做运动唤醒设备放在口袋里走路、弯腰、坐下都会产生加速度变化。如果用运动传感器唤醒一天内可能误唤醒数百次电池撑不住。只有按键按下才是明确的“用户正在使用”信号。有些设计还做了进一步防误触短按不生效必须持续按住一定时长或两个按键同时按下才能唤醒。1.3 广播间隔设备被唤醒后进入广播态开始发送广播包。广播不是持续发射——设备发送一个广播包后关闭射频进入短暂休眠等待下一个广播时刻到来再发送下一个。两个连续广播事件开始之间的时间称为广播间隔Advertising Interval。广播间隔的本质是功耗与响应速度之间的取舍间隔效果短单位时间内广播次数多扫描方更快发现响应快但平均功耗高长单位时间内广播次数少功耗低但扫描方发现设备需要更长等待时间设备在不同阶段使用不同的广播间隔。需要快速响应时使用短间隔不急于被发现时使用长间隔以降低功耗电池电量低时自动延长间隔以延长剩余续航。1.4 连接间隔连接建立后通信以连接事件Connection Event为单位进行。每个连接事件中双方同时醒来在约定的数据信道上交换数据包交换完成后各自回到休眠状态直到下一个连接事件到来。两个连续连接事件开始之间的时间称为连接间隔Connection Interval。蓝牙规范定义连接间隔的范围为7.5毫秒到4秒。间隔越短数据吞吐量越大、响应越快但平均功耗越高。间隔越长功耗越低但数据延迟增加。典型设计支持动态调整连接间隔有频繁数据交换时使用短间隔长时间无数据交换时拉长间隔空闲超时后主动断开连接。1.5 功耗管理的本质广播间隔和连接间隔的调整本质上是控制射频工作时间占总时间的比例——也就是占空比Duty Cycle。占空比越低平均功耗越低。BLE之所以能实现微安级平均功耗核心机制就是在所有非必要的时间里让设备处于休眠状态只在约定的短暂窗口内开启射频。二、物理信道与协议栈Physical Channel / GAP / GATT / L2CAP / ATT2.1 ISM频段蓝牙低功耗工作在2.4GHz ISM频段。ISMIndustrial, Scientific and Medical工业、科学和医疗频段是国际电信联盟无线电通信部门ITU-R在全球范围内划定的、允许工业、科学研究和医疗设备免费使用的无线电频段。2.4GHz频段覆盖范围为2.400GHz到2.4835GHz总带宽83.5MHz全球通用无需申请许可证。免费使用的代价是拥挤。Wi-Fi、ZigBee、蓝牙、微波炉都在这个频段上工作设备之间必须通过技术手段在共享频段中共存。2.2 信道划分BLE将2.4GHz频段划分为40个物理信道每个信道宽度2MHz按中心频率编号0到39。这40个信道分为两类3个广播信道Advertising Channels信道编号中心频率372402 MHz382426 MHz392480 MHz三个广播信道在频段中呈分散分布——低端、中部、高端各一个。这样设计是为了避免三个广播信道同时被Wi-Fi信号干扰。Wi-Fi信道通常占据频段的中部或特定位置分散布局确保至少有一个广播信道可以避开干扰正常工作。37个数据信道Data Channels编号0到36覆盖2404MHz到2478MHz范围用于连接建立后的数据传输。2.3 广播信道的工作方式设备在广播态时在每个广播事件中依次在三个广播信道上发送相同的广播包。一个广播事件的典型发送序列为在信道37上发送一个广播包然后切换到信道38发送再切换到信道39发送。三个信道发送完毕后该广播事件结束。下一个广播事件重新从信道37开始。需要注意的是如果广播者在广播事件中途收到了连接请求CONNECT_REQ该广播事件会立即终止不再继续发送剩余信道的广播包。为什么在三个信道上都发一遍因为扫描方可能在任何信道上监听。扫描方在三个广播信道之间轮流切换监听广播方在三个信道上轮流发送双方只要在同一个信道、同一个时间点上匹配就能完成一次广播接收。2.4 数据信道与跳频连接建立后通信切换到37个数据信道。数据通信采用自适应跳频Adaptive Frequency HoppingAFH。跳频的基本过程主设备和从设备在连接建立时通过CONNECT_REQ中的参数约定跳频序列的生成算法和初始种子每次连接事件开始时双方独立使用相同算法计算出当前要使用的信道编号双方在同一时间切换到同一信道完成数据交换下一个连接事件双方计算下一个信道继续跳转跳频解决两个问题第一抗干扰。2.4GHz频段拥挤Wi-Fi等设备会产生突发性干扰。跳频让通信在37个信道之间不断切换某个信道被干扰时通信可以迅速跳到其他信道继续。第二安全性。跳频使攻击者无法预测下一包在哪个信道上出现。2.5 协议栈分层架构蓝牙协议栈采用严格的分层架构。每一层有明确的职责边界下层对上层提供标准服务接口。层级名称职责第1层物理层PHY调制/解调将比特流转换为无线信号第2层链路层LL设备地址管理、广播/数据PDU的组装与解析、自动重传、链路层加密第3层HostL2CAP协议复用、数据分包与重组、流控第3层HostATT属性协议定义客户端-服务器模型下的属性读写操作第3层HostGAP广播、扫描、连接、配对流程管理第3层HostGATT基于ATT的服务框架定义特征值和服务的数据组织方式第3层HostSM安全管理配对流程、密钥生成与分发2.6 GAP层GAPGeneric Access Profile通用访问规范是BLE设备发现和连接管理的核心层。GAP定义了四种设备角色角色行为广播者Broadcaster只发送广播不接收连接观察者Observer只接收广播不发起连接外围设备Peripheral可广播且可被连接中心设备Central可扫描、可发起连接在典型的钥匙-车辆场景中钥匙端作为外围设备向外广播车辆端作为中心设备执行扫描并发起连接。2.7 GATT层GATTGeneric Attribute Profile通用属性配置定义了连接建立后的数据交互方式。GATT的核心概念服务Service一组相关特征的集合代表一个完整的逻辑功能模块特征值Characteristic数据交互的最小单元包含一个值和零个或多个描述符描述符Descriptor描述特征值的附加属性在实际产品设计中可以定义一个128位UUID的专有服务包含两个特征值一个用于指令下发一个用于响应上报和通知。GAP管“怎么连上”GATT管“连上后怎么传数据”。两者在协议栈中处于同一层级职责分离。三、广播与扫描Advertising / Scanning / ADV_IND / ADV_NONCONN_IND3.1 广播态与扫描态设备唤醒后进入广播态开始在三个广播信道上按顺序发送广播PDU。广播态的核心行为设备周期性发送广播PDU在两个广播事件之间进入短暂休眠以降低功耗。扫描设备处于扫描态在三个广播信道上按顺序轮流监听。扫描分两种模式被动扫描Passive Scanning只接收广播PDU不发送任何请求主动扫描Active Scanning收到广播PDU后向广播者发送SCAN_REQ扫描请求广播者收到后用SCAN_RSP扫描响应回复额外数据典型设计中扫描方使用主动扫描以获取完整的广播数据。3.2 广播PDU类型蓝牙规范为广播信道定义了多种PDU类型。常用的两种是ADV_IND可连接可扫描非定向广播。ADV_IND是最通用的广播PDU。它表示广播者可以被连接同时也会响应SCAN_REQ。扫描方收到ADV_IND后可以发送SCAN_REQ请求更多数据也可以发送CONNECT_REQ建立连接。ADV_NONCONN_IND不可连接不可扫描非定向广播。ADV_NONCONN_IND表示广播者只发送信号不接受连接请求也不响应SCAN_REQ。这种类型的特征是效率最高——广播者不需要为任何响应预留时间。这两种PDU类型可以根据不同业务场景选用。3.3 广播数据格式广播数据由一个或多个AD Structure组成。每个AD Structure遵循LTVLength-Type-Value格式Length1字节AD Type和AD Data的总字节数AD Type1字节数据类型标识由蓝牙核心规范补充Core Specification Supplement定义AD DataLength-1字节具体数据载荷常见的AD Type值包括AD Type含义0x01Flags设备发现模式、LE能力标志0x03Complete List of 16-bit Service UUIDs0x09Complete Local Name完整设备本地名称0xFFManufacturer Specific Data制造商自定义数据关于AD Type 0xFFManufacturer Specific Data这是蓝牙核心规范中预留的厂商自定义数据类型。当AD Type为0xFF时AD Data的前两个字节为Company ID由蓝牙SIG分配的厂商ID后续字节由厂商自行定义。微信的AirSync协议、iBeacon协议等都利用这个字段承载自定义数据。接收方通过检查AD Type和Company ID来识别广播来源。3.4 广播间隔的实现机制广播间隔是连续两个广播事件开始之间的时间。一个广播事件指在三个广播信道上依次发送所有广播PDU的过程。对于ADV_IND一个广播事件包含三个广播包的发送分别位于信道37、38、39。广播间隔由链路层定时器控制。在每个广播事件结束后链路层启动一个计数器计数器溢出后触发下一个广播事件的开始。3.5 地址类型广播PDU中包含发送方的蓝牙设备地址。蓝牙规范定义了多种地址类型典型设计使用以下两种静态地址Static Address设备初始化时随机生成一个48位地址存储于非易失存储器中。设备生命周期内保持不变。特征长期稳定便于对方设备识别和绑定。缺点是可能被用于位置跟踪。可解析随机私有地址Resolvable Private AddressRPA由设备定时更新——通常每15分钟或每次连接断开后更换。RPA由24位哈希和24位prand组成。其中prand的低22位为随机数最高2位为地址类型标志。只有持有正确IRKIdentity Resolving Key的设备才能将RPA解析为设备真实身份。特征无法被不具备IRK的设备识别无法用于长期位置跟踪。四、连接与加密Connection / LTK / LE‑ACL4.1 连接发起扫描方收到ADV_IND后在同一个广播信道上发送CONNECT_REQ连接请求。收到CONNECT_REQ后广播者立即终止当前广播事件双方同时进入连接态。CONNECT_REQ中包含建立连接所需的关键参数接入地址Access Address一个32位的随机值用于在数据信道中唯一标识该连接跳频算法参数包括跳频序列的初始种子和信道映射表连接间隔连接事件发生的时间间隔从设备延迟从设备可以跳过不响应的最大连接事件数超时时间连接丢失的判定阈值信道映射标记37个数据信道中哪些可用、哪些不可用连接建立后广播者停止广播。4.2 连接事件与连接间隔连接态中的通信以连接事件Connection Event为单位。连接事件的定义主设备和从设备在约定的时间点同时从休眠中醒来切换到约定的数据信道交换数据包。一个连接事件中可以包含多个数据包的往返。每个连接事件开始时主设备发送一个数据包从设备在约定时间后回复。如果主设备没有数据要发送可以发送空包以维持连接。如果从设备没有数据要发送可以跳过该连接事件受从设备延迟参数限制。连接间隔的选择涉及三个方面的权衡连接间隔功耗响应延迟数据吞吐量短高低高长低高低4.3 从设备延迟从设备延迟Slave Latency是BLE另一个关键的省电参数。定义从设备在没有数据需要发送的情况下可以跳过不响应的最大连续连接事件数量。这个机制让从设备在空闲时进一步降低功耗——它不需要在每个连接事件中都醒来可以连续跳过多个连接事件继续保持睡眠。4.4 LE数据连接BLE连接建立后通信使用LE-ACL逻辑传输。所有指令、响应和通知均通过LE-ACL承载。LE-ACL是异步传输支持数据包重传不保证固定时延但保证可靠交付。4.5 LTK生成机制连接建立时双方执行蓝牙安全配对流程。配对流程包含三个阶段阶段1配对能力交换Pairing Feature Exchange双方交换I/O能力、认证需求、密钥分发需求。阶段2密钥生成Key Generation基于阶段1交换的信息使用椭圆曲线密钥协商协议ECDH或标准密钥协商方法生成临时密钥和短期密钥。LE安全连接LE Secure Connections使用ECDH生成单次密钥不依赖临时密钥TK或短期密钥STK。阶段3密钥分发Key Distribution完成认证后双方分发用于后续加密连接的密钥LTKLong Term Key长期密钥128位密钥用于加密连接后的所有数据包IRKIdentity Resolving Key身份解析密钥用于解析RPA地址CSRKConnection Signature Resolving Key连接签名解析密钥用于数据签名和验证配对完成后LTK存储于双方设备的非易失存储器中。4.6 链路层加密LTK由链路层管理对上层完全透明。当上层有数据要发送时数据直接交给链路层。链路层使用当前链路层会话密钥对数据包进行加密然后通过物理层发送。接收端链路层收到后自动解密将明文数据交给上层。加密使用AES-CCM算法这是一个结合了加密和消息完整性校验的组合模式。AES-CCM使用128位密钥在加密数据的同时生成消息完整性检查码MIC确保数据既有机密性也有完整性。五、认证Authentication / Challenge-Response5.1 为什么需要应用层认证LTK保护的是通信通道的机密性和完整性——它确保通道里的数据不被窃听、不被篡改。但LTK不解决身份问题。任何设备都可以与设备建立蓝牙连接并协商LTK因为BLE的链路层加密不验证对方设备的应用层身份。所以在LTK保护的通道之上还需要一层应用层认证Application Layer Authentication确认通信对端的合法身份。5.2 挑战-响应机制应用层认证采用挑战-响应Challenge-Response机制。这是一种标准的身份验证方法在物联网和嵌入式设备认证中被广泛使用——验证方证明自己持有正确的密钥材料而不需要在通道上直接传输密钥。认证流程的基本逻辑如下验证方生成一个随机数挑战值通过加密通道发送给被验证方被验证方收到随机数后用内部存储的密钥材料在安全硬件中进行计算将计算结果连同自己的随机数一起发回验证方用自己存储的密钥材料进行同样的计算比对双方的计算结果一致则认证通过不一致则断开连接关键安全属性真正的密钥材料从未在通道上传输通道上传输的只有随机数和计算结果即使攻击者捕获了完整的认证流程数据包也无法推导出密钥材料每次认证使用新的随机数防止重放攻击5.3 安全硬件隔离密钥存储和加密计算在安全硬件Secure Element / Hardware Security Module中进行。安全硬件的安全属性隔离执行加密计算在安全硬件内部完成主CPU无法读取内部状态或中间结果密钥保护密钥存储在安全硬件的非易失存储器中外部总线不可访问物理防篡改安全硬件具有物理防护层防侧信道攻击安全硬件的加密操作设计为恒定时间执行应用层软件只调用安全硬件接口不接触密钥本身。5.4 认证模式典型的系统设计根据业务场景定义多种认证模式标准认证模式仅验证身份不改变任何存储内容。用于日常使用。建立模式用于首次建立信任关系。认证通过后被验证方写入密钥材料状态从未建立切换为已建立。强制模式用于特殊情况如对端模块更换导致原有密钥信息丢失。强制覆盖写入新密钥。若流程中途失败原有密钥材料必须保留。六、指令交互Command / Response / TLV / CRC166.1 请求-响应模型认证通过后双方进入指令交互阶段。指令交互采用请求-响应Request-Response模型请求方发送指令响应方执行指令并返回结果每个请求必须对应一个响应如果请求方在预设时间内没有收到响应做超时处理。6.2 应用层协议框架在GATT提供的通用数据通道之上应用层可以定义自己的协议框架来组织数据。典型的自定义协议框架包含帧结构包含帧起始标志、长度字段、控制字段、序号字段和载荷控制字段包含分包标识、同步/异步模式标志、加密标志和方向标志载荷格式采用TLVTag-Length-Value格式组织数据帧结构的设计要点分包标识用于支持大消息拆分消息长度超过单帧承载能力时拆分为起始包、中间包和结束包序号字段用于接收方按正确顺序重组分片同步模式下接收方必须立即返回响应异步模式下接收方可以先回复确认后续再单独发送执行结果加密标志控制载荷是否使用应用层会话密钥加密6.3 TLV格式与CRC校验载荷的TLV格式Tag标签标识数据类型Length长度Value的字节数Value值具体数据多个TLV单元可以拼接在同一个载荷中。TLV格式的好处可扩展新增数据类型只需定义新Tag自描述接收方通过Tag即可识别数据含义灵活不同TLV单元的排列顺序不受限制典型设计在帧尾部附加校验字段对帧头载荷进行CRC16校验CCITT标准多项式。接收方收到帧后首先计算帧头载荷的CRC16与帧中的校验字段比对。不匹配则判定为传输错误丢弃该帧。CRC16可以检测单比特错误和大部分突发错误。七、安全机制RPA / Replay Attack / Whitelist / IRK / CSRK7.1 RPA地址更新机制可解析随机私有地址RPA的生成和解析基于IRK。RPA的生成逻辑prand为24位字段低22位为随机数最高2位为地址类型标志使用ah()函数基于AES-CMAC-128算法以IRK为密钥对prand进行计算取计算结果的前24位作为哈希值RPA 24位哈希 24位prand共48位RPA的解析逻辑从RPA中提取prand24位使用同样的ah()函数计算期望哈希值比对期望哈希值与RPA中的哈希值一致则解析成功只有持有正确IRK的设备才能将RPA解析为设备真实身份。7.2 防重放攻击重放攻击Replay Attack的基本原理攻击者录下合法设备发送的指令信号在合法设备离开后将录下的信号重新发射出去。典型设计中每条关键指令携带一个严格递增的序号。接收方维护最后接收序号发送端每次发送指令时序号1接收端收到指令后检查序号如果序号小于或等于最后接收序号判定为重放攻击丢弃该指令序号在每次连接开始时重置7.3 白名单过滤白名单是验证方维护的一个认证设备列表存储所有已建立信任关系的设备身份标识。白名单可以在链路层和应用层同时生效链路层扫描过滤只响应白名单内设备地址的广播应用层认证阶段不在白名单中的设备直接拒绝白名单管理建立模式下将设备加入白名单通过管理端删除设备时将设备从白名单中移除。八、功耗与容错Dynamic Interval / OTA A/B Partition8.1 广播间隔的动态调整广播间隔可以根据设备状态自动调整正常广播态使用当前阶段对应的预设间隔低电量态自动延长至更长间隔以延长续航过渡态使用较短的间隔以确保连接建立成功调整由链路层根据上层指令自动完成。8.2 连接间隔的动态调整连接间隔在连接态期间根据数据活跃度动态调整有频繁数据交换时使用短间隔保证吞吐量和响应速度长时间无数据交换时逐步拉长间隔降低功耗超过空闲阈值后主动断开连接连接间隔更新可以通过链路层或L2CAP层完成具体方式取决于蓝牙版本。8.3 多级功耗管理典型系统设计实现多级功耗管理策略在不同状态下使用不同的功耗参数正常工作使用默认参数短时空闲延长广播间隔或连接间隔长时间空闲主动断开连接低电量强制延长广播间隔禁用非必要功能各级之间通过定时器或外部条件自动切换。8.4 连接超时与丢失处理链路层维护一个连接超时定时器。在超时时间内没有收到任何数据包链路层判定连接已丢失退出连接状态回到待机。连接丢失后设备重新进入广播态。8.5 固件升级与容错固件升级采用A/B双分区设计也称为乒乓升级Ping-pong Update。设备内部有两个独立的存储分区A区当前运行版本B区备用分区升级流程通过无线连接将新固件分包传输至设备接收并写入B区每个分包进行校验完整固件接收完成后进行整体完整性校验校验通过后将启动标志切换至B区设备复位从B区启动运行新固件升级过程中的容错保障如果升级流程在任何阶段失败系统自动切回A区原有版本原有版本完好设备继续正常工作这种设计的核心优势是“升级不中断、失败可回滚”。结语从广播发现到连接建立从链路加密到应用认证从指令交互到功耗管理这套体系围绕两个核心目标设计省电——设备靠电池供电。休眠机制、动态广播间隔、动态连接间隔、多级功耗管理每一层都把功耗压到最低。安全——不能让外人冒充、偷听、重放。LTK链路加密、应用层挑战-响应认证、序号防重放、RPA防跟踪、白名单过滤、安全硬件隔离构成多层防御。这八个部分构成了完整的通信框架休眠 → 唤醒 → 广播 → 扫描 → 连接 → 链路加密 → 应用认证 → 指令交互 → 断开 → 回到低功耗。附录附录A蓝牙广播数据格式参考广播数据由一个或多个AD Structure组成。AD Structure格式字段长度说明Length1字节AD Type AD Data的总长度AD Type1字节数据类型AD DataLength-1字节具体数据常用AD Type值AD Type值名称用途0x01Flags设备发现模式、LE能力标志0x03Complete List of 16-bit Service UUIDs完整16位服务UUID列表0x09Complete Local Name设备完整本地名称0x16Service Data - 16-bit UUID16位UUID对应的服务数据0xFFManufacturer Specific Data厂商自定义数据Manufacturer Specific Data0xFF格式字段长度说明Company ID2字节由蓝牙SIG分配的厂商IDManufacturer Data可变厂商自定义附录B蓝牙ATT协议参考ATTAttribute ProtocolPDU格式字段长度说明Opcode1字节操作方法Attribute Parameters可变由Opcode决定Authentication Signature可选13字节常用ATT Opcode类型Opcode值名称用途0x02Exchange MTU Request交换MTU大小0x03Exchange MTU Response交换MTU响应0x04Find Information Request查找信息请求0x08Read By Type Request按类型读请求0x09Read By Type Response按类型读响应0x0ARead Request读请求0x0BRead Response读响应0x12Write Request写请求0x13Write Response写响应0x1BHandle Value Notification句柄值通知0x1DHandle Value Indication句柄值指示附录C蓝牙L2CAP与CID参考主要固定信道IDCIDCID值用途0x0004ATT协议0x0005L2CAP信令0x0006安全管理SM0x0007安全管理信令LE附录DBLE空口包结构参考广播信道PDU头部PDU TypePDU Type值名称说明0x00ADV_IND可连接可扫描非定向广播0x01ADV_DIRECT_IND可连接定向广播0x02ADV_NONCONN_IND不可连接不可扫描非定向广播0x03SCAN_REQ扫描请求0x04SCAN_RSP扫描响应0x05CONNECT_REQ连接请求完整空口包格式1M PHY字段长度说明Preamble1字节前导码用于接收端时钟同步Access Address4字节广播包固定值数据包由CONNECT_REQ指定PDU2-257字节广播信道PDU或数据信道PDUCRC3字节24位CRC校验值以上格式均为蓝牙核心规范Bluetooth Core Specification公开定义。具体实现中的字段长度、端序等细节请参考蓝牙核心规范和对应芯片的技术手册。------------------------------------------------------------------- 全部笔记托管于 GitHub后续更新优先同步本仓。 如有疏漏欢迎指正。 GitHub仓库kyshipit/tech-notes---------------------------------------------------------------------
返回列表