0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发之【蓝牙HCI与蓝牙hld】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-01-30 17:37 次阅读

1. 简介

蓝牙的命名来源于一个丹麦国王的名字。

蓝牙的核心是短距离无线电通讯,它的基础来自于跳频扩频(FHSS)技术。

频率:[2.4GHz, 2.4GHz + 83.5MHz]

物联网领域需要研究Bluetooth + Mesh。

分类

两种:

  • 经典/传统蓝牙(< 4.0版本);
  • BLE低功耗蓝牙。

IoT中,ble更常见一些;经典蓝牙常用于手机和耳机的通信

芯片模式有两种:

  • 双模,就是支持以上两种,应用有降噪耳机、电视语音遥控及按键;
  • 单模则是只支持一种,通常是支持BLE。

发展

开始于爱立信在 1994 年提出的无线通信方案,以解决用户间互不兼容的移动电子设备的通信问题,用于替代 RS-232 串口通讯标准。

第一代蓝牙(传输率0.7Mbps):

  1. 1999 年,蓝牙 1.0A 版,确定使用 2.4GHz 频段, 蓝牙硬件地址叫做BD_ADDR
  2. 2001 年:蓝牙 1.1,蓝牙 1.1 版正式列入 IEEE 802.15.1 标准,定义了物理层和MAC层;

第二代蓝牙:

  1. 2004 年,蓝牙 2.0,新增的 EDR (Enhanced Data Rate)使得蓝牙设备的传输率可达 3Mbps;支持双工,可以边电话边传输数据;
  2. 2007 年,蓝牙 2.1,支持 NFC ,新增SSP(Secure Simple Pairing)安全配对,新增SniffSubrating省电功能;

2009 年, 3.0 (比较稳定了),可调用 802.11 WiFi,传输速率高达 24Mbps。蓝牙 3.0 的核心是 AMP(Generic Alternate MAC/PHY)。代表作是蓝牙适配器。

第四代

  1. 2010 年,4.0,支持BLE(Bluetooth Low Energy,基于 NOKIA 开发的 Wibree 技术)低功耗功能,传输距离提升到100米以上。代表作,iphone 4s;
  2. 2013 年,4.1支持云功能(可以用于iot了),支持IPv6,支持区中心(例如智能手表和计步器可以绕过智能手机,直接连接);
  3. 2014年,4.2,可以抛弃wifi,iot设备完全用蓝牙;

4.0之前的都是经典蓝牙,>=4.0的才支持BLE。

2016 年, 蓝牙 5.0 ,iot入场,速度上限为 2Mbps,传输距离理论上可达 300 米,结合 WiFi 可以实现精度小于 1 米的室内定位;针对 IoT 物联网进行底层优化;引入Mesh网络


说下 Mesh

Mesh 网状网络能够将蓝牙设备作为信号中继站,数据覆盖广,兼容蓝牙 4 和 5 系列的协议。

传统的蓝牙连接是通过 配对 实现的,即 [一对一] 或 [一对多] 的微型网络关系。

Mesh 网络能够使设备实现「多对多」的关系。

产品架构

3种:

  1. 蓝牙芯片(含蓝牙协议栈host)直接与外设通信,这类芯片可作MCU,如蓝牙耳机、蓝牙音响、蓝牙手环;
  2. 蓝牙芯片(含蓝牙协议栈host)—MCU—外设,一般用于外设功能复杂的场景,
  3. 蓝牙芯片(controller)—MCU(含host)—外设,是蓝牙最复杂的方案,客户需要使用很多蓝牙协议,比如车载蓝牙、手机蓝牙。

组成

蓝牙设备:

  • 硬件层,即Controller蓝牙模块(由低到高排序):
  • 无线射频单元Radio,一种微带天线
  • 基带BaseBand或链路控制单元LinkController,进行射频信号与数字或语音信号的相互转化;
  • 链路管理单元LinkManager,管理蓝牙设备之间的通信;
  • 主机控制器Host Controller
  • TRANSPORT层,实现HOST跟CONTROLLER的交互,有H2(USB使用), H4/H5/BCSP(UART使用)协议。5种数据:
  • HCI COMMAND:由蓝牙协议栈发送给芯片的命令
  • HCI EVENT:由蓝牙芯片上报给蓝牙协议栈的事件
  • HCI ACL:蓝牙协议栈跟蓝牙芯片双向交互的普通数据
  • HCI SCO:蓝牙芯片跟蓝牙协议栈双向交互的通话/语音识别音频数据
  • HCI ISO(这部分是在core5.2才添加):LE audio用的数据包格式
  • HOST层,即蓝牙协议栈,或者说蓝牙主机,:
  • 主机控制接口(HCI),透过transport把协议栈的数据发送给蓝牙芯片;
  • 高层协议Higher Layer Protocol;
  • Application

一些蓝牙模块:

JDY-10M模块,含底板+蓝牙模块,十几块钱,供电建议5V。两种接法:

  • 连接UART-TTL转换器,再连接PC;
  • 直接连MCU。

M是Mesh的意思,JDY-10就是不支持组网的版本.

2. 协议

初学者先学蓝牙host(蓝牙协议栈),再学controller(蓝牙芯片)里面的协议。

蓝牙协议有很多,蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP),BLE,HID…

蓝牙协议分为传输协议、中介协议和应用协议:

  • 传输协议:互相确认对方的位置,建立和管理物理链路;
  • 底层传输协议,包括Radio, Baseband&Link Controller, Link Manager Protocol等;
  • 高层传输协议,包括L2CAP, HCI;
  • 中介协议:为应用提供不同标准接口;
  • 应用协议:协议栈之上的应用软件所涉及到的协议。

2.1 传输协议

L2CAP

Logical Link Control and Adaptation Protocol,逻辑链路控制与适配协议。

位于基带之上

2.2 中介协议

SDP

Service Discover Protocol,服务发现协议,发现哪些服务可用,并确定这些可用服务的特征

RFCOMM

Serial Port Emulation,串口仿真协议,为建立在串口之上的传统应用提供环境接口,用于蓝牙电话,蓝牙透传SPP等。

AT指令

AT指令是区分大小写的ascii码,以r结束。

像mesh那样,要在组网中实现通信,就不能用at那样的ascii指令了,而要用特定的二进制协议格式。

只能在透传模式下工作(设备连接手机后进入透传模式,手机是服务端)。

2.3 其它(分类不太确定)

HFP

Hands-Free,蓝牙免提协议,用于蓝牙耳机。还有一个已经基本废弃的HSP,蓝牙耳机协议。

OBEX,对象交换协议,用于蓝牙电话本,蓝牙短信,文件传输等。

SPP(SERIAL PORT PROFILE):蓝牙串口协议。

IAP:苹果的特有协议,用于Carplay。

PBAP(Phone Book Access):蓝牙电话本访问协议。

MAP(Message Access Profile):蓝牙短信访问协议。

OPP(Object Push Profile):对象推送协议.

A2DP(Advanced Audio Distribution): 蓝牙音乐协议.

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 蓝牙
    +关注

    关注

    114

    文章

    5765

    浏览量

    169786
  • HCI
    HCI
    +关注

    关注

    0

    文章

    29

    浏览量

    12935
  • 鸿蒙
    +关注

    关注

    57

    文章

    2306

    浏览量

    42734
收藏 人收藏

    评论

    相关推荐

    什么是蓝牙芯片?蓝牙芯片和蓝牙模块的区别

    蓝牙芯片是集成蓝牙技术的微型元件,用于设备间无线连接。蓝牙模块基于芯片,简化蓝牙系统设计。芯片成本低但开发难,模块无需认证且使用简单,提供更
    的头像 发表于 07-18 16:48 1986次阅读
    什么是<b class='flag-5'>蓝牙</b>芯片?<b class='flag-5'>蓝牙</b>芯片和<b class='flag-5'>蓝牙</b>模块的区别

    百问网全志D1h开发板BLE低功耗蓝牙测试

    蓝牙控制器和主机通过H2(USB)、H4(UART)、H5(UART)、BCSP(BlueCore Serial Port)、SDIO来构建HCI来进行数据传递。D1-H的tina-linux内核
    发表于 07-08 10:14

    鸿蒙开发通信与连接:ohos.bluetooth蓝牙

    蓝牙模块提供了基础的传统蓝牙能力以及BLE的扫描、广播等功能。
    的头像 发表于 06-20 09:31 570次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>通信与连接:ohos.bluetooth<b class='flag-5'>蓝牙</b>

    国产蓝牙模组 | 低功耗蓝牙应用

    蓝牙技术联盟于2010年推出了蓝牙4.0规范,其中低功耗蓝牙的出现满足了小型电池供电设备进行低功耗无线连接的需求,因此得到广泛应用。本文章将带你深入了解低功耗蓝牙的应用。低功耗
    的头像 发表于 06-14 08:25 433次阅读
    国产<b class='flag-5'>蓝牙</b>模组 | 低功耗<b class='flag-5'>蓝牙</b>应用

    如何使用支持标准蓝牙HCI命令的定制BLE模块(如 DA14531)来代替ModusToolbox支持的蓝牙模块?

    如何使用支持标准蓝牙 HCI 命令的定制 BLE 模块(如 DA14531)来代替 Modus Toolbox 支持的蓝牙模块? 我正在使用 Modus Toolbox 3.2 和 CY8C62x5 MCU 进行
    发表于 06-03 07:05

    蓝牙模块选型蓝牙版本

           蓝牙模块作为一种小范围无线连接技术,具有低功耗、低成本、方便快捷的特点,被广泛应用于无线耳机、智能手表、无线遥控等场景,是实现无线通信的主流技术之一。        蓝牙模块由于集成
    的头像 发表于 05-30 10:00 569次阅读
    <b class='flag-5'>蓝牙</b>模块选型<b class='flag-5'>之</b><b class='flag-5'>蓝牙</b>版本

    蓝牙模块选型蓝牙功能

    蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,蓝牙模块将芯片和外围硬件电路集成到一个PCB上,开发出所需的内置程序实现蓝牙
    的头像 发表于 05-28 17:48 635次阅读
    <b class='flag-5'>蓝牙</b>模块选型<b class='flag-5'>之</b><b class='flag-5'>蓝牙</b>功能

    蓝牙模块选经典蓝牙还是低功耗蓝牙

      经典蓝牙(classic Bluetooth)和低功耗蓝牙(Bluetooth low energy,简称BLE或者LE),两者有什么区别?为什么他们都叫“蓝牙”?Bluetooth low
    的头像 发表于 05-23 17:57 1088次阅读
    <b class='flag-5'>蓝牙</b>模块选经典<b class='flag-5'>蓝牙</b>还是低功耗<b class='flag-5'>蓝牙</b>?

    鸿蒙NEXT南向开发案例:【智能台灯】

    鸿蒙南向开发智能台灯案例
    的头像 发表于 04-03 18:00 933次阅读
    <b class='flag-5'>鸿蒙</b>NEXT南向<b class='flag-5'>开发</b>案例:【智能台灯】

    鸿蒙开发实战:【蓝牙组件】

    蓝牙服务组件为设备提供接入与使用Bluetooth的相关接口,包括BLE设备gatt相关的操作,以及BLE广播、扫描等功能。
    的头像 发表于 03-13 17:27 652次阅读

    蓝牙模块CYW20706上下载应用程序到串行闪存失败了的原因?

    我尝试在蓝牙模块CYBT-343026-01(CYW20706)上下载应用程序到串行闪存,但失败了。 第一步是按照 AIROC™ HCI UART 控制协议文档(见下文)的指示向模块发送
    发表于 03-01 11:59

    在Modustoolbox下开发cyw20719B2的蓝牙应用, BTSDK是否可剪裁?

    请问,在Modustoolbox 下开发cyw20719B2的蓝牙应用,很多功能并不需要,比如:ADC, I2S, HCI UART... ... BTSDK是否可剪裁掉这些功能,以节省RAM空间,降低功耗?
    发表于 03-01 09:09

    芯科科技发布新版蓝牙开发流程

    查看Silicon Labs(亦称“芯科科技”)近日发布新版的蓝牙开发流程(Bluetooth Developer Journey),了解更多关于低功耗蓝牙蓝牙Mesh、
    的头像 发表于 01-25 10:09 720次阅读
    芯科科技发布新版<b class='flag-5'>蓝牙</b><b class='flag-5'>开发</b>流程

    【应用笔记】STM32WB 低功耗蓝牙无线接口

    ,同时保持了相似的通信范围。标准 HCI 指令在“蓝牙核心规范 V5.3”(蓝牙®低功耗规范是其中一部分)中定义。此应用笔记描述了专有指令。
    发表于 12-12 16:30 1次下载

    STM32WB55开发(3)----断开蓝牙连接

    了解如何通过aci_hal_get_link_status函数获取当前的蓝牙连接状态,然后,我们将使用hci_disconnect函数来断开这些连接。
    的头像 发表于 12-01 15:43 1060次阅读
    STM32WB55<b class='flag-5'>开发</b>(3)----断开<b class='flag-5'>蓝牙</b>连接