IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 蓝牙 - HCI介绍 -> 正文阅读

[嵌入式]蓝牙 - HCI介绍

蓝牙里面的HCI是啥?

如上图,HCI就是HOST和Controller之间的通道。用来桥接Host和Controller Devices。

HCI是一个标准的蓝牙用的接口,用来Host发给Controller命令,HOST从controller接收events,和HOST发给Controller数据,和从HOST从Controller接收数据。

HOST就是指我们的主控芯片,Microcontroller/ MCU / μCON / MPU等,比如我正在使用的是iMX6ULL芯片。

Controller就是蓝牙芯片了,比如我比较熟悉的TI的CC2564芯片。

那这两个芯片之间用什么方式通信呢?

用的是串行通讯,主要有两种,一种是UART,另一种是USB。

这个是根据厂商实现的蓝牙芯片和所使用的协议栈共同决定的。

我们一般以UART为主要使用方式,更方便我们通过外部UART串口工具来抓取HCI通信数据或发送HCI命令给蓝牙芯片。

蓝牙5.0规范里HCI的介绍

我们网上搜索蓝牙5.0协议,下载bluetooth-Core_v5.0.pdf,以5.0为例,还有比5.0更高版本的蓝牙spec。

蓝牙协议内容很多,打开后发现里面分了8卷,从Volume 0 ~ Volume 7。

有关HCI的主要部分在Vol 2: Core System package [BR/EDR Controller volume],Part E: Host Controller Interface Functional Specificaton。

这里面介绍了HCI Flow Control,HCI Data Formats和HCI Commands and Events。

HCI上的信息交互:

Host Controller Transport Layer实现了透明的信息交换。

包含以下类型的信息:

Host -> BR/EDR Controller: HCI commands? / ACL data? /? synchronous data.

Host -> LE Controller:?HCI commands? / ACL data?

Host -> AMP Controller:?HCI commands? / ACL data?

BR/EDR Controller -> Host :??HCI events, ACL data and synchronous data

LE Controller -> Host :??HCI events, ACL data

AMP Controller -> Host :?HCI events, ACL data

HCI规范上描述了Host和Controller之间传输的数据的格式,包括commands,events和其他数据。

所以HCI上的数据类型分为四种:

HCI Command Packet

HCI ACL Data Packets

HCI Synchronous Data Packets

HCI Event Packet

HCI数据传输控制

HCI提供了一个统一的命令方法来访问控制器的各种功能。

HCI命令的执行可能需要一些时间。因此命令的结果将以事件event的形式报告给主机。

例如,对于大多数HCI命令,控制器将在命令完成时产生命令完成事件。

这个事件包含完成HCI命令的返回参数。

Host Controller Interface driver层,是底层通讯功能的具体实现,在这一层上还有个transport layer,叫做HCI传输层,属于Host driver stack一部分。

这个层的主要作用是数据透传,这样传输层和底层的具体传输技术是UART还是USB就无关了。

为了使主机检测HCI-传输层上的错误,需要设定一个超时,在主机发送命令后和接收到控制器的回应之前,比如等待控制器发出的Command Complete和Command Status事件。

由于最大的响应超时在很大程度上取决于所使用的HCI传输层,建议使用该计时器的默认值为一秒钟。

这个时间量也取决于命令队列中未处理的命令数量。

其他说明:

除非另有说明,所有数值都是二进制和十六进制的小端格式。

除非另有说明,所有的参数值都以小端格式发送和接收,即对于多字节的参数,最右边的(低有效位字节)先被传送。

在指定的位串中,低阶位是右手边的位,例如,0是10b中的低阶位。

不知道如何解释的参数值或操作码应被忽略,尝试执行相应操作并返回正确信号。

主机或控制器收到一些保留值时不应停止操作。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:20:34  更:2021-11-18 11:21:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:50:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码