BLE 协议之传输层


在 BLE 协议中,传输层位于 HostController 之间,提供一种无需知道数据内容便可以传输数据的能力。其主要是通过硬件传输介质(如:UART、SDIO、USB 等),传输上层数据。


上图即是 UART 传输层的功能框图。

一、HCI 简介

Core5.4 P1728

该图展示了两个设备之间的数据传输路径。Host 通过 HCI DriverController 硬件上的 HCI Firmware 交换数据和命令,这就是 HCI 的功能。

  • HCI 提供了一种统一接口用来访问,控制 Controller ,传输层是透明的,独立于底层传输技术,并且无需关系 Host 传输给 Controller 的数据是什么内容.
  • HOSTController 之间,以 CommandEvent 命令方式进行传输。 Host 发送 Command 信息到 ControllerControllerCommand StatusParamsEvent 的形式返回给 Host ,最后返回 Command Complete Event 表示连接完成。

二、HCI 数据包

1、HCI 数据包类型

HCI 有五种类型的包格式,见下表:

  • HCI Command Packet :由主机向控制器发送命令,即 Host -> Controller
  • HCI Event Packet :由蓝牙芯片上报给蓝牙协议栈的事件,即 Controller -> Host
  • HCI ACL Data Packet :用于主机和 ACL 之间的数据交换。
  • HCI Synchronous Data Packet :用于在主机和控制器之间交换同步数据。
  • HCI ISO Data packet:用于在主机和控制器之间交换同步数据。

HostController 之间,HCI 的命令和事件类型如下:

详见 Core v5.4 P1731

2、HCI 数据包格式

下面对刚才讲到的五种 HCI 通信包的格式进行分析。

Core v5.4 P1800

2.1 HCI Command packet

HCI Comand 包用于从主机向控制器发送命令。HCI Command 数据包的格式如下图所示,下面将解释每个字段的定义。

控制器应该能够接受 HCI Command 包的数据最多 255 字节,不包括 HCI 命令包头。HCI 命令报文头是报文的前 3 个字节。

2.1.1 Opcode 字段

每个命令都分配了一个 2 字节的操作码(Opcode),用于唯一标识不同类型的命令。Opcode 参数分为两个字段,分别称为操作码组字段(Opcode Group Field,OGF)和操作码命令字段(Opcode Command Field,OCF)。

  • OGF :占据高 6bit,对应不同类别的蓝牙命令
  • OCF :占据低 10bit,对应某一类别下的唯一的蓝牙命令,其中 0X3F 为制造商的调试命令.

比如有一个二维数组,也就是多个一维数组的集合,OGF 则定位到是第几个一维数组,OCF 则是定位到一维数组的的具体的元素上

2.1.2 Parameter_Total_Length 字段

评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值