当前位置: 首页 > news >正文

经典蓝牙中的HCI

0 Preface/Foreword

1 HCI介绍

1.1 HCI的位置

HCI的作用:把蓝牙上层软件(Host)和蓝牙底层无线与链路(Controller)解耦开来,提供一套标准、统一的控制和数据接口。

工程总结

HCI = Host和Controller之间的标准接口协议

1.2 HCI的本质

1.2.1 HCI全称

HCIHostControllerInterface

1.2.2 HCI处于蓝牙协议栈的位置

应用 / Profile / L2CAP / RFCOMM <------------Host

------------------------------------------------------------

HCI (接口层)

------------------------------------------------------------

Link Layer / Baseband / RF <-------------Controller

需要注意

  • ❌️HCI不是无线协议
  • ❌️HCI不经过蓝牙空口
  • ❌️HCI是本地接口,不是空中接口

1.2.3 HCI解决的问题

上层软件如何控制和使用一个蓝牙控制器

1.3 HCI的核心作用

1.3.1 控制蓝牙Controller

通过HCI,Host可以

  • 打开/关闭蓝牙
  • 开始/停止扫描
  • 发起连接/断开连接
  • 切换PHY(BLE: PHY 1M, PHY 2M;BR: 1M; EDR:2M,3M)
  • 设置发射功率(RF PA)
  • 管理链路(ACL、SCO/eSCO)

例如,以下为概念:

HCI Command:LE Create Connection

HCI Command:Disconnection

没有HCI,上层根本动不了蓝牙射频和链路

1.3.2 承载数据(ACL/ SCO)

HCI不仅是控制接口,也能转发数据:

数据类型用途
HCI ACL DataL2CAP/RFCOMM/AVDTP
HCI SCO DataHFP speech audio

NOTE:

L2CAP数据不是直接送到Controller,而是先经过了HCI。

1.3.3 事件通知(Controller -> Host)

Controller通过HCI向Host报告事件:

  • 扫描到设备
  • 连接成功 / 断开
  • 参数更新
  • 错误/状态变化

例如,以下为概念:

HCI Event:LE Connection Complete

HCI Event:Disconnection Complete

1.4 HCI的通讯形式

1.4.1 HCI是逻辑接口协议

HCI是一种逻辑接口协议,可以映射到多种物理通道。

物理接口映射
HCI物理承载常见场景
UART模块化蓝牙
USBPC/手机
SDIO高速控制
SPISoC内部

HCI != UART,但经常跑在UART上

一个典型的工程结构

MCU / CPU (Host)

|

| HCI (UART/USB)

|

Bluetooth Chip(Controller)

2 HCI使用场景

2.1 Host和Controller分离

例如:

  • MCU + 外置蓝牙模块
  • Linux / Android + 蓝牙芯片

结构如下:

Linux Bluetooth Stack (Host)

|

v

HCI

|

v

Bluetooth Controller(芯片)

在该场景下,会接触HCI的内容:

  • HCI Log
  • HCI Command/Event
  • 调UART波特率
  • 抓HCI日志

2.2 系统级蓝牙

例如:

  • Android手机
  • iPhone
  • Windows / macOS

实际结构:

系统蓝牙框架(Host)

|

v

HCI (USB / 内部总线)

|

v

蓝牙控制器

区别

  • HCI被系统封装
  • 应用层感觉不到它

2.3 底层调试或协议分析

例如:

  • 蓝牙连接不上
  • 参数异常
  • PHY切换失败
  • 功耗异常
  • 听歌没有声音/通话无声

抓的HCI LOG一般为:

HCI CMD

HCI EVT

HCI ACL

HCI SCO

HCI是蓝牙调试的第一现场

2.4 HCI在HFP中的位置

2.4.1 HFP控制链路

AT信令

|

RFCOMM

|

L2CAP

|

HCI ACL Data

|

ACL channel

|

Baseband / PHY

|

RF

2.4.2 HFP语音链路

CVSD/mSBC

|

HCI SCO Data

|

SCO/eSCO

|

Baseband

|

RF

HCI是Host->Controller的唯一门口

3 不需要关心HCI场景

3.1 SoC一体化实现

Application、Host、Controller、RF都在一个芯片里面。

此时:

  • HCI逻辑上存在
  • 但只是函数调用/内存队列
  • 看不到UART/USB

HCI被内部化了。

3.2 只做上层应用

比如制作Android App、iOS App,面对的只是Bluetooth API。系统已经处理好了HCI、Controller、RF。

http://www.jsqmd.com/news/759414/

相关文章:

  • SegmentTermsEnum 和 IntersectTermsEnum 的核心区别
  • Spring Boot项目里,ThreadPoolTaskExecutor线程池参数到底怎么配?实战避坑指南
  • MRIcroGL:解锁医学影像三维可视化的开源利器
  • 告别卡顿!VMware虚拟机安装macOS Ventura性能调优全攻略:从beamoff到VMX参数详解
  • 别再只用Vray了!3DMAX里Mental Ray和扫描线也能轻松出AO图(附参数对比)
  • 黑苹果硬件兼容性深度排查:5步解决无线网卡与显卡驱动问题 [特殊字符]
  • AI大模型引用/采信优化,争夺AI答案引用权
  • 观察 Taotoken 在多模型聚合调用下的路由稳定性与响应表现
  • 终极图像分层指南:如何用Layerdivider将单张图片智能拆分为可编辑PSD图层
  • # 009、Agent 的反馈与自我修正:错误检测、重试机制与强化学习
  • XUnity.AutoTranslator架构解析与实战部署指南:Unity游戏本地化深度优化
  • 从AR眼镜到机器人抓取:深入拆解EPnP算法如何成为实时视觉应用的核心引擎
  • [具身智能-576]:Hugging Face lerobot则是专门为具身智能打造的将前言的训练方法,特别是模仿学习方法封装成可复现、可共享、低成本的工具包和全栈解决方案。
  • ShellGPT:终端AI助手,无缝集成大语言模型提升开发效率
  • [具身智能-577]:机器人模型学习的模型训练过程
  • 为nodejs后端服务配置taotoken实现多模型对话能力
  • 保姆级教程:从零到一搞定 RuoYi-Vue-Pro 本地部署(含 npm 依赖、MySQL 连接、演示模式关闭全流程)
  • 从“单打独斗”到“团队协作”:用协同进化算法(CCEA)解决超大规模参数优化难题
  • 2026年4月诚信的拌合站直销厂家如何选,二手混凝土拌和站/拌合站/水稳拌和站/稳定土拌合站,拌合站批发厂家如何选 - 品牌推荐师
  • 2026年4月高大空间冷暖风机生产厂家推荐,翅片管/散热器/新风机组/乏风取热箱,高大空间冷暖风机直销厂家推荐分析 - 品牌推荐师
  • 3分钟快速上手:OpenWrt网易云音乐解锁插件完整使用指南
  • 害羞刺猬社 - 库克的苹果谢幕与‘懂游宝’千万级游戏服务市场
  • DLSS Swapper终极指南:免费游戏性能优化工具完整使用教程
  • 阴阳师自动化脚本终极指南:智能百鬼夜行AI助手完全教程
  • 五一最后一天|手头现成项目整理,今天有需要可以顺带说一声
  • 如何在3分钟内用OpenWrt插件解锁网易云音乐所有限制
  • 智汇笔记后端实战(三):三级目录树的实现与踩坑
  • p16241
  • LVGL V8.3页面切换还能这么玩?一个手表UI项目教你搞定触摸、编码器、按钮三种交互
  • ROS导航调参实战:如何让你的TurtleBot3在复杂办公室环境里不撞墙?