文档章节

蓝牙HCI控制器

xiaocui911
 xiaocui911
发布于 2017/02/25 11:45
字数 726
阅读 62
收藏 0

 HCI协议剖析
在蓝牙协议模型中,HCI软件驱动程序与HCI固件统一归为HCI(主机控制接口),所以要基于HCI进行开发,首先必须了解HCI涉及的具体内容。主机 控制接口为蓝牙硬件中基带控制器和链路管理器提供了命令接口,从而实现对硬件状态寄存器和控制寄存器的访问,特别是该接口提供了对蓝牙基带的统一访问模 式。HCI分为主机、传输层、主控制器三部分,并在每一层为HCI系统提供不同的功能。本文把HCI协议层划为HCI软件和HCI硬件两部分来加以讨论。

HCI软件
HCI软件部分可分为HCI固件和HCI驱动两个部分。
HCI固件位于主控制器。HCI固件通过对基带命令、链路管理器命令、硬件状态寄存器、控制寄存器和事件寄存器的访问,实现蓝牙硬件HCI指令。主控制器(Host Controller)意味着具有主控制接口功能的蓝牙器件。
与HCI固件不同,HCI驱动位于主机,即协议模型中的HCI软件驱动部分。若某事件发生,用HCI事件通知主机,而主机将收到HCI事件的异步通知。当 主机发现有事件发生时,它将分析收到的事件包并决定何种事件发生。主机端的HCI驱动程序,一方面通过接口被蓝牙应用程序调用(本文所提到的蓝牙应用程序 是相对于HCI层而言的,指的是构建于通用外接模块上的扩展应用程序),实现对上层应用的承载;另一方面实现了协议中的HCI功能集,使主机可以向蓝牙子 系统发送HCI指令,或接收子系统返回的HCI事件。

HCI的硬件
  HCI驱动和HCI固件是通过主控制器传输层(位于主控制器与主机之间的中间层)进行通信的,这些中间层和主控制传输层提供了在没有数据描述信息情况下传 输数据的能力。在蓝牙规范的描述中,蓝牙子系统与主机之间共有3类数据转移的方式、每一种数据在硬件接口均具有一定的封装格式,分别是由3种传输层支持, 分别为UART/RS232和USB。采用不同的主控制器传输层对主机所接收的HCI事件异步通知不会产生影响。
主机控制接口层(HCI)是蓝牙协议中软硬件之间的接口,它提供了一个调用基带、链路管理、状态和控制寄存器
等硬件的统一命令接口.

本文转载自:

共有 人打赏支持
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
介绍Bluetooth的系统构成

Bluetooth的系统构成 1、无线射频单元(Radio):负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。 2、基带或链路控制单元(LinkController):进...

昇润科技
05/28
0
0
蓝牙规范要求

1简介 蓝牙资格程序参考文档是主要的参考文档,它定义了蓝牙的要求,方法和政策。它可以从蓝牙网站获得。 通过蓝牙资格审核显示某些符合程序和具备互操作性的度量标准,但是产品并没有使用蓝...

JlongTian
02/06
0
0
Android Bluetooth HCI log 详解

0. 引子 对于蓝牙开发者来说,通过HCI log可以帮助我们更好地分析问题,理解蓝牙协议,就好像网络开发一定要会使用Wireshark分析网络协议一样。 本篇主要介绍HCI log的作用、如何抓取一份HCI...

伤口不该结疤
2017/04/18
0
0
蓝牙协议栈

蓝牙协议框架体系基本上就是这个图了,有点乱。 然后,我们先从底层开始分析,主要是由基带层和链路管理层组成。 无线连接(RF)通过2.4GHZ无需申请的ISM频段,实现数据的过滤与传输。 基带层...

xiaocui911
2016/07/25
58
0
Apache Mynewt 1.3.0 发布,模块化操作系统

Apache Mynewt 1.3.0 发布了,Apache Mynewt 是一个社区驱动的模块化操作系统,用于资源受限嵌入式环境的操作系统应用。Mynewt 提供基础的实时操作系统和嵌入式中间件、闪存文件系统、网络堆...

周其
2017/12/15
439
0

没有更多内容

加载失败,请刷新页面

加载更多

Thinkphp5 优雅配置两个数据库

工作需要需要配置两个数据库,框架5.0的,步骤如下: 1、在database.php同级创建一个database2.php文件 在里面配置第二个数据库信息, 2、在config中配置这个数据库信息: 3、创建第二个表的...

wqzbxh
7分钟前
0
0
Socket网络编程进阶与实战

Socket网络编程进阶与实战 Socket对于每个工程师的重要性不言而喻。本课程将理论结合实践,带你从零开始,系统学习Socket编程技术,让Socket的学习不再那么零散与难以掌握,同时会提炼出Soc...

qq__2304636824
13分钟前
0
0
Android studio常用快捷键

Ctrl +Alt +Space //显示可用参数 Ctrl + Alt +M //抽取方法 Ctrl +Alt + F //提取全局变量 Ctrl +Shift + "+或-" //折叠/展开代码块 Shift + F6 //批量更改变量 Ctrl + Tab //切换器 Ctrl +...

lanyu96
25分钟前
0
0
@ControllerAdvice 拦截异常并统一处理

在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。 一、介绍 创建 MyControllerAdvice,并添...

狼王黄师傅
29分钟前
0
0
ajax传递参数给springmvc总结[转]

https://www.cnblogs.com/franson-2016/p/6770028.html https://www.cnblogs.com/xiaoxi/p/5708084.html 总结: 1.springmvc与Ajax交互,可以传入三种类型的数据: (1)文本:"uname=alice&......

废柴
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部