蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系统互联(OSI)模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙协议栈,各层协议定义了所完成的功能和使用数据分组格式,以保证蓝牙产品间的互操作性。

一、首先来看一下蓝牙的架构:

1、无线射频单元(Radio):负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。
2、基带或链路控制单元(LinkController):进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。
3、链路管理单元(LinkManager):负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。
4、蓝牙软件协议实现:如上图紫色部分,这个后面我们做详细说明。

蓝牙协议规范
传输协议、中介协议、应用协议;
1、传输协议
负责蓝牙设备间,互相确认对方的位置,以及建立和管理蓝牙设备间的物理链路;
底层传输协议:
蓝牙射频(Radio)部分、基带链路管理控制器(Baseband&Link Controller)、链路管理协议(Link ManagerProtocol LMP)。负责语言、数据无线传输的物理实现以及蓝牙设备间的联网组网。
高层传输协议:
        逻辑链路控制与适配器(LogicalLink Control and Adaptation Protocol)L2CAP 、主机控制接口(HostControl Interface,HCI)。为高层应用屏蔽了跳频序列选择等底层传输操作,为高层程序提供有效、有利于实现数据分组格式。
2、中介协议
    为高层应用协议或者程序,在蓝牙逻辑链路上工作提供必要的支持,为应用提供不同标准接口。
     串口仿真协议:RFCOMM、服务发现协议:SDP、互操作协议IrDA、网络访问协议:PPP、IP、TCP、UDP、电话控制协议:TCS、AT指令集。

3、应用协议

蓝牙协议栈之上的应用软件和所涉及到的协议,如:拨号上网、语言功能的应用程序。

蓝牙的应用框架如下:
(1)、通用应用类框架:查询、建立连接服务等;
(2)、蓝牙电话应用类框架:电话控制、语言;
(3)、蓝牙连网应用类框架:网络应用相关;
(4)、对象交互服务类框架:IrDA、OBEX;
(5)、蓝牙音视频控制类框架

二、基本概念:

1、蓝牙地址

BD_ADDR:BluetoothDevice Address;

LAP:LowerAddress Part 低地址部分;

UAP: UpperAddress Part 高地址部分;

NAP: Non-significantAddress Part 无效地址部分。

2、蓝牙物理链路:
通信设备间物理层的数据连接通道就是物理链路。
ACL(Asynchronous Connectionless)异步无连接链路;对时间要求不敏感的数据通信,如文件数据、控制信令等。
SCO(Synochronous Connection Oriented)同步面向连接链路;对时间比较敏感的通信,如:语音;最多只支持3条SCO链路,不支持重传。
ACL用于数据传输;

3、蓝牙的收发规则

上图为RX缓存

上图为TX缓存。
新分组到达时,ACL链路的RX缓存器要流量控制,SCO数据不需要流量控制。

4、蓝牙基带信道和网络控制
1)、链路控制器状态:
待机、连接
寻呼page、寻呼扫描pagescan、查询inquiry、查询扫描inquiry scan、主设备相应Master Response、从设备相应Slave Response、查询相应inquiry response
2) 、连接状态
激活模式active、呼吸模式sniff、保持模式hold、休眠模式park。
3)、待机状态
         待机状态是蓝牙设备缺省低功耗状态,此状态下本地时钟以低精度运行。蓝牙从待机转入寻呼扫描状态,对其他寻呼进行响应成为从设备;也可以从待机状态进入查询扫描状态,完成一个完整的寻呼,成为主设备
9、接入过程
注释:
IAC Inquiry AccessCode 查询接入码;
GIAC:通用查询接入码 DIAC:专用查询接入码;
DAC:DeviceAccess Code 设备接入码;
LAP:
         建立连接,必须使用查询、寻呼;查询过程使用IAC,发现覆盖区域内的设备、设备的地址及其时钟;连接过程使用DAC,建立连接的设备处理寻呼过程,成为主设备。

(1)、查询过程
蓝牙设备通过查询来发现通信范围内的其他蓝牙设备。查询信息分为GIAC、DIAC两种。查询发起设备收集所有相应设备的地址、时钟信息。
一设备进入查询状态去发现其他设备,查询状态下连续不断的在不同频点发送查询消息。查询的跳频序列有GIAC的LAP导出。
一设备想被其他设备发现,就要周期性进入 查询扫描状态,以便相应查询消息。如:我们选择设备多长时间可见,其实就是  进入查询扫描状态。
A、查询扫描
查询扫描状态下,接收设备扫描接入码的时间长度,足以完成对16个频率的扫描。扫描区间长度Twindow inquiry scan。扫描在同一个频率上进行,查询过程用32跳专用查询跳频序列,此序列有通用查询的地址决定,相位有本地时钟决定,每隔1.28S变化一次。
B、查询
与寻呼类似,TX用查询跳频序列、RX用查询相应跳频序列。
C、查询相应
从设备响应查询操作。每个设备都有自己的时钟,使用查询序列相位相同的几率比较小。为了避免多个设备在同一查询跳频信道同时激活,从设备查询响应规定:从设备收到查询消息,产生0-1023只觉得额一个随机数,锁定当时相位输入值进行跳频选择,从设备此后的RAND时隙中返回到连接或者待机状态。
(2)、寻呼扫描
DAC:DeviceAccess Code 设备接入码
寻呼扫描状态下的设备扫描窗口Twindowpage scan内监听自己的DAC。监听只在一个跳频点进行。Twindow page scan足够覆盖16个寻呼扫描频点。
寻呼扫描状态,扫描在同一个频率上进行,持续1.28S,在选择另一个不同频率。

SR模式

Tpage scan

寻呼次数Npage

R0

连续

>=1

R1

<=1.28S

>=128

R2

<=2.56S

>=256

预留

--

--

(3)、寻呼
主设备使用寻呼发起一个主—从设备连接,通过在不同的跳频点上重复发送从设备DAC来扑捉从设备,从设备在寻呼扫描状态被唤醒,接收寻呼。
(4)、寻呼相应过程

三、传统蓝牙的音视频协议及应用场景

有关A/V的协议包括: AVDTP音视频分发传输协议、AVCTP音视频控制传输协议、GAVDP通用音视频分发框架、A2DP高级音频分发框架、AVCRP音视频遥控框架

1. 基本概念术语
1) 流stream:流是音视频传输的数据形式,单向传输,在AVDTP中被分为媒介分组。流有句柄HS统一标识。

2) 信令
AVDTP信令列表, 这部分信令,实现了蓝牙的A2DP 数据流的控制。

命令

信令标识符

描述

AVDTP_DISCOVER

0x01

发现设备中的流端点

AVDTP_GET_CAPABILITIES

0x02

获得流端点的信息能力

AVDTP_SET_CONFIGURATION

0x03

对SEP进行配置

AVDTP_GET_CONFIGURATION

0x04

获取SEP当前配置

AVDTP_RECONFIGURE

0x05

对SEP重新配置

AVDTP_OPEN

0x06

成功的配置SEP后,打开流

AVDTP_START

0x07

流被打开:用于开始形成流;流暂停时:用于重新形成流。

AVDTP_CLOSE

0x08

对SEP关闭

AVDTP_SUSPEND

0x09

请求SEP暂停

AVDTP_SECURITY_CONTROL

0x0A

设置设备内容保护、或者请求设备状况信息

AVDTP_ABORT

0x0B

中断正在建立或者传输的过程

AVDTP_GET_ALL_CAPABILITIES

AVDTP_DELAYREPORT

(1)流的信令管理流程

(2) get capabilities  获取支持特性

(3) set configuration 配置音频参数

其他指令类似去上面两个的操作。

2. 具体协议

1)ADVANCED AUDIO DISTRIBUTION PROFILE高级音频分发配置文件

A2DP描述了立体声音频如何从媒体输出(source)传输至输入(sink)。
使用情景:
     简单说来,这是一个蓝牙音乐播放器(如MP3播放器、随身听、立体声等)音频输出是音乐播放器,而音频输入是无线耳机或无线立体声音响。 
产品范例:
以下是使用A2DP配置文件的部分设备类型:
立体声耳机、立体声音、MP3播放器、音乐手机、立体声音频适配器
技术知识:
此配置文件定义了音频设备的两个角色:输出和输入。
•       输出(SRC)-设备在将数字化音频流传输至微微网的输出时则作为输出设备。 
•       输入(SNK)-设备在输入来自同一微微网中SRC的数字化音频流时则作为输入设备。 
    A2DP定义了在ACL信道实现高品质音频内容的单声道或立体声分发协议和程序。因此,“高级音频”与“蓝牙音频”应该区别开来,后者是指根据基带规格定义的SCO信道中分发窄幅波段的语音。
    此配置文件建立在GAVDP基础上。它包括对复杂程度低的次频宽编解码技术(SBC)的必备支持和对MPEG-1,2音频、 MPEG-2,4 AAC和自适应声学转换编码技术(ATRAC)的可选支持。音频数据按适当的格式进行压缩后能在有限频宽中正常使用。环绕声的分发不在此配置文件的范围。

基带、LMP、L2CAP和SDP是蓝牙核心规格中定义的蓝牙协议。AVDTP包括一个用于沟通串流参数的信令实体以及一个处理串流的传输实体(请参阅“配置文件协议栈:配置文件模式”)。应用层是设备定义应用服务和传输服务参数的实体。它可以将音频流数据改编成指定的数据包格式,反之亦可。

A2DP侧重于:Streaming parameters and encode/decode features

2) GENERIC AUDIO/VIDEO DISTRIBUTION PROFILE通用A/V分发配置文件 (GAVDP)
GAVDP提供了A2DP和VDP的基础,该系统基础旨在在ACL信道上使用蓝牙技术分发视频和音频流。

GAVDP侧重于:signaling transaction procedures between two devices to set up, terminate, and reconfigure streaming channels
使用情景:
典型的使用情景是一副无线立体声耳机和一个音乐播放器,例如MP3播放器或者随身听。音乐播放器向耳机传送信息建立连接或调整音频流,反之亦然。
产品范例:
以下例子说明了可能会使用GAVDP的若干设备类型:音乐播放器、立体声耳机、立体声音响、手提电脑、个人电脑、手机、PDA
技术知识:
GAVDP定义了启动设备和接收设备两个角色:
•     启动设备(INT) – 这是启动信号发送过程的设备。
•     接收设备(ACP) – 这是回应INT输入请求的设备。
o     注:设备的角色并不固定。角色会于信号传输过程启动时确定,当过程结束时设备角色也将解除。当启动新一轮过程时,设备的角色可以互换。
      基带、LMP、L2CAP和SDP是蓝牙核心规格中定义的蓝牙协议。AVDTP包括一个用于沟通串流参数的信令实体以及一个处理串流的传输实体。

注:INT/ACP和SRC/SNK角色是独立的。即SNK和SRC可以是ACP或INT。

3)AVDTP Audio/Video Distribution Transport Protocol音视频分发传输协议(待续)

4)AVRCP(待续)

Bluetooth以及音频协议 基础知识学习相关推荐

  1. torchaudio音频基础知识学习

    torchaudio音频基础知识学习 文章目录 torchaudio音频基础知识学习 前置知识 音频的表示形式 总结 贴出本文学习的主要来源: pytorch官网torchaudio的学习文档 需要使 ...

  2. 视音频格式基础知识视频压缩

    视音频格式基础知识&视频压缩 2018.7.10 一.视频基础知识 1.什么是视频:连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面:看上去是 ...

  3. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

  4. 2021-7-19-OpenStack基础知识学习

    OpenStack基础知识学习 参考文献:Wolf_Coder,百度百科 1,云计算 1.1,出现原因 由亚马逊公司提出.1.随着业务增加公司内部的服务器不够使用,进行虚拟化技术->2.随着公司 ...

  5. JQuery 基础知识学习(详尽版)

    JQuery 详尽的基础知识学习 jQuery 语法 jQuery 选择器 jQuery 选择器(大全) jQuery 事件 ready() holdReady() on() off() one() ...

  6. 网络基础知识学习笔记

    网络基础知识学习笔记 参考菜鸟教程.个人学习整理,仅供参考.三年前学过,三年没用忘了,重新学习整理一下. 文章目录 网络基础知识学习笔记 OSI七层网络模型 IP地址 子网掩码及网络划分 网络协议 A ...

  7. 5G基础知识学习(十五)—NSA手机的5G信号是怎么显示的?

    5G基础知识学习(十五)-NSA手机的5G信号是怎么显示的? 参考网址:http://www.txrjy.com/thread-1106049-1-1.html 看完了前面的连载,相信大家对NSA也就 ...

  8. 标定协议之CCP协议基础知识介绍

    上一篇<标定协议基础知识介绍>中对标定协议进行了初步的介绍,从这一篇文章开始对CCP标定协议进行相关介绍,本篇将对CCP标定协议相关指令进行介绍. CCP通讯报文定义 CCP标定协议标准中 ...

  9. 网络安全基础知识学习之Web安全百问百答

    网络安全基础知识学习之Web安全百问百答 1.什么叫Web应用系统? 答:Web应用系统就是利用各种动态Web技术开发的,基于B/S(浏览器/服务器)模式的事务处理系统.用户直接面对的是客户端浏览器, ...

  10. 1.HTML基础知识学习

    HTML基础知识学习 HTML的注释 <!--1.这是HTML的注释2.HTML不区分大小写,语法松散不严格 --> <!DOCTYPE html> <html lang ...

最新文章

  1. 美翻朋友圈:用Python生成蒙太奇马赛克图片
  2. 在.NET客户端程序中使用多线程
  3. js数组去重解决方案
  4. Matlab计算速度优化(矩阵,bsxfun,repmat)
  5. 从CNN视角看在自然语言处理上的应用
  6. P2278-[HNOI2003]操作系统【堆】
  7. Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...
  8. pycharm+python3.7+pyqt配置_Python3+Pycharm+PyQt5环境搭建步骤图文详解
  9. 打开一个页面,并监听该页面的关闭事件
  10. Socket 与 WebSocket
  11. 【good】在CentOS 6.x上安装GlusterFS
  12. Java学习笔记之设计模式(1)设计模式简介
  13. 表情包网站项目(学习自程序员鱼皮)
  14. 利用Python和OpenCV进行面部表情识别
  15. php 判断客户端类型,基于php实现判断客户端类型
  16. 继续魔改TCP BBR
  17. 【小甲鱼】python零基础入门学习笔记 03讲~43讲
  18. Ubuntu 16.04 源码编译安装 uhd gnuradio
  19. 三国论(11-15章)
  20. c语言long double转换,c – 从unsigned long long到double转换,反之亦然更改值

热门文章

  1. 计算机测试代码怎么写,常见的电脑检测卡代码对照表大全
  2. linux添加变色龙引导,变色龙Chameleon Install 2281引导工具 windows电脑安装黑苹果
  3. 机器狗变种、磁碟机查杀方法及注意事项
  4. 用图片来搜索 教你玩转Google按图搜索
  5. oracle如何查看剩余表空间,oracle 查看各表空间剩余量
  6. 小米wifi设置access_小米帐号的开放API
  7. IPC-610E(电子组件的可接受性)
  8. 计算机pc610台湾研华,研华科技工业电脑各尺寸上架式机箱型号介绍
  9. oracle 创建包 def,cognos创建oracle 数据源报错QE-DEF-0285
  10. html吃豆豆小游戏源码,HTML5 Canvas吃豆豆动画