四种数据类型
指令分组,事件分组,数据分组。
其中数据分组又分为acl(异步无连接)数据分组和sco(同步面向连接)数据分组。
指令分组只从从主机发送到主机控制器。
事件分组只从主机控制器发送到主机,用以说明指令分组执行的情况。
数据分组在主机和主机控制器之间相互传输。
-
Command (0x1) 指令分组
协议格式:

-
ACL Data (0x2) 数据分组
协议格式:

-
SCO Data (0x3)
协议格式

- Event (0x4) 事件分组
协议格式:

HCI Command & Events
参考 Core_v5.2 Vol4 - Part E - P1929


HCI command 占用两个bits。小端模式(低位在左,高位在右)。OCF + OGF,其中 OCF 占用10位 + OGF 占用6位。
0x3F 是保留给供应商调试使用。
常用指令操作组 组属性值
| Command | OGF | 说明 |
|---|---|---|
| Link Control | 0x1 | 链路控制 |
| Link Policy | 0x2 | 链路策略 |
| Controller & Baseband | 0x3 | 主机控制器和基带 |
| Infomational Parameters | 0x4 | 属性参数 |
| Status parameters | 0x5 | 状态参数 |
| Testing | 0x6 | 测试 |
蓝牙主机控制器通信流程
- 1 蓝牙模块自身初始化
- 2 流量控制
- 3 查询
- 4 建立连接
- 5 进行数据通讯
- 6 断开连接
蓝牙模块自身初始化
Reset 指令: 属于 Controller & Baseband 操作组 (OGF:0x03)


示例:
- Tx payload: 00000001 00000011 00001100 00000000

- Rx payload: 00000100 00001110 00000100 00000001 00000011 00001100 00000000

代码:
response = AWAIT_COMMAND(packet_factory->make_reset());
流量控制
Read Buffer Size
属于 Infomational params (OGF:0x04)
该指令返回的参数
ACL_Data_Packet_Length & Synchronous_Data_Packet_Length
主机发往主机控制器 ACL & SCO 数据分组最大的长度。
Total_Num_Acl_Data_Packets & Total_Num_Synchronous_Data_Packets 决定了主机控制器能接受ACL & SCO 数据总数组。


- Tx payload : 00000001 00000101 00010000 00000000

- Rx payload: 00000100 00001110 00001011 00000001 00000101 00010000 00000000 00000000 00000100 00111100 00000111 00000000 00001000 00000000

Host Buffer Size command
Controller&Baseband 分组 (OGF : 0x03)
通知主机 控制器发往主机的ACL & SCO 数据指令最大尺寸,同时通知主机控制器在主机数据缓存区中能够存储的ACL & SCO 数据指令的数量。

本文深入解析蓝牙主机控制器接口(HCI)的四种数据类型:指令分组、事件分组、ACL数据分组和SCO数据分组。详细介绍各分组的功能、传输方向及协议格式,包括指令操作组的属性值和蓝牙主机控制器的通信流程。
716

被折叠的 条评论
为什么被折叠?



