admin 管理员组

文章数量: 1086019


2024年3月26日发(作者:reference注解)

蓝牙4.0规范学习总结

【篇一:蓝牙底层之baseband层学习总结】

蓝牙baseband学习笔记

目录:

概述

物理信道

物理连接

逻辑传输

逻辑连接

数据包

比特流加工

链路控制器

音频处理

一、概念描述

蓝牙时钟:bluetooth clock

蓝牙设备地址:bluetooth device addressing

这里需要介绍下蓝牙时钟:

二、物理信道

物理发射功率在2.402ghz到2.480ghz之间,有79个信道。在连接状态、同步扫描状

态和同步队列状态最大调频速率为1600跳/s;在请求和寻呼状态中最大调频速率为3200跳/s。

跳频序列是双方约定的一组伪随机数。

定义的5中信道:

basic piconet physical channel 在连接状态默认使用

adapted piconet physical channel 修改过的piconet连接使用

page scan physical channel

inquiry scan physical channel

synchronization scan physical channel

第一 二种用于基础和改变后的piconet连接

第三种寻呼扫描信道用于扫描连接设备。

第四种请求扫描信道

使用native时钟

第五种同步扫描信道用于设备接收同步队列包

主从设备的定义是在两个建立连接的设备之间有意义。

蓝牙管理中搜索周围设备(device discovery),会进行page scan;page scan其实是不

停的进行多次inquiry scan,知道外部某个条件才中断。page scan中两次inquiry scan间

隔一般是30s。

三、物理连接

一个物理连接代表设备间的基带连接。一个物理连接总是和一个确定的物理信道关联。物

理连接用共同的属性:在物理连接上申请逻辑传输。

power control

link supervision

encryption

channel quality-driven data rate change

multi-slot packet control

四、逻辑传输

主从设备之间 不同的逻辑传输可能被确立,定义了六种逻辑传输

synchronous connection-oriented (sco) logical transport

extended synchronous connection-oriented (esco) logical transport

asynchronous connection-oriented (acl) logical transport

active slave broadcast (asb) logical transport

parked slave broadcast (psb) logical transport

connectionless slave broadcast (csb) logical transport.

sco:用于有时限的信息例如声音或者一般的同步数据。使用保留时隙。 esco:可能有在

保留时隙后一个重传窗口。

acl:总是主从设备之间的一个点到点的逻辑传输。在非保留时隙中。 asb:用于主设备和

活动的从设备通信。

psb:用于主设备和休眠的从设备通信。

cbs:用于主设备发送profile广播。

lt_addr:逻辑传输地址

为一个处于活动状态的从设备都会被分配一个3bit的lt_addr。

全0的lt_addr保留给asb和psb广播消息。有一个非全0的地址留给csb逻辑连接

sco是对称的。一个主设备可以提供3个sco连接和同一个从设备或者和不同的设备。一

个从设备可以提供三个sco连接和同一个主设备或者两个sco连接和不同的主设备。而且sco

绝不重传。

esco窗口由保留时隙和重传窗口构成,是对称或者非对称的。

在一个主设备和一个从设备之间仅仅应该存在一个acl逻辑传输,如果有更多的acl数据包,

用重传确保数据完整。如果acl数据连接没有数据发送,不需要轮询,不需要传输请求。

发送接收过程!!

asb逻辑传输被用于连接在匹克网中的设备的l2cap传输,传输是单向的,没有确认。

asb逻辑传输只用于l2cap群组传输,绝不用于l2cap的面向连接信道、l2cap控制信标和

lmp的控制信标。asb逻辑传输的不可靠的,为了增加可靠性,数据包会有一定数量的

重传,重传的数据包使用相同的序列号以便从设备过滤重传。

五、逻辑连接

蓝牙白皮书定义了6种逻辑连接

link control (lc)

acl control (acl-c)

user asynchronous/isochronous (acl-u)

user synchronous (sco-s)

user extended synchronous (esco-s)

profile broadcast data (pbd)

lc携带底层的控制信息:arq、流控和有效数据描述。除了数据包没有包头,否则每个包都

包含lc信息。

acl-c:携带lm层交换的信息,用dm1或者dv数据包。acl-c的的llid为11b。

acl-u:携带l2cap的用户信息。这些信息可能有一个或者更多的基带数据包。

开始数据包llid是10b,如果是同一个数据包,则后续的数据包llid为01b,否则llid为

10b。

sco-s和esco-s:携带同步用户数据。

pbd:携带profile 广播数据。数据不应该被分片,应该重视用llid 10b。 acl-l最高的优

先级,pbd优先级最低。

六、数据包

基础速率数据包

3中数据包:只有access code,只有access code与包头以及完整的数据包。

code大小:72/68bits

header:54bits

payload:0~2790bits

增强数据速率数据包

bit 采用小端模式:先发送低位。

access code:

四种类型的access code:

cac channel access code 三部分组成 72bits

access

dac device access code

giac general inquiry access code

diac dedicated inquiry access code

dac用于page、page scan和page response状态

cac用于connection状态,synchrontzation train状态和synchronization scan状

iac用于inquiry状态,包含一个giac和63个diac。

不同的access code类型用不同的laps构造

sync word

短access code用于寻呼、查询和休眠。

如果如果数据包中有包头,access code是72bits。否则为68bits。

preamble用两种1010/0101由sync word的lsb决定:

sync word:

cac由master的lap计算而来

dac是由slave的lap计算而来

iac是由reserved/dedicated计算而来

trailer:

与preamble类似,trailer有两种:1010/0101,有sync word的msb决定:

packet header

包头中包含着link control信息,有6部分组成(18bits):

lt_addr: 3-bit logical transport address

type: 4-bit type code

flow: 1-bit flow control

arqn: 1-bit acknowledge indication

seqn: 1-bit sequence number

hec: 8-bit header error check

流控在esco和acl-c中不使用。

packet types被分为4段

第一段:控制包

第二段:a single time slot

第三段:three time slots

第四段:five time slots

包类型作用:确定是否用enhanced data rate;确定在哪一条logical transport上传输

(sco,esco

acl);确定数据包的类型(sco,esco,acl)。

普通包类型

5中普通包,在第一段中和id包

id包:由dac和iac组成,固定的长度68bits,它是非常健壮的包。

null包:没有payload,仅仅有cac和包头。定长126bits。空包可能用于返回链路信息

到源设备关于前一个传输的状和rx buffer的状态。空数据包没有ack。 poll 包:被master

用于poll the slaves;slaves不发送poll包。没有payload但需要确认

fhs包:payload有11个部分组成,114信息bits和16bit crc,采用2/3fec,总长度

(payload)为240bits。被用于page master response,inquiry response和角色切换

中;在piconet channel确定前的调频同步。

sr:两个连续的page scan窗口的间隔。

dm1包:可以携带用户信息,也可以被当做一个acl包。

sco包

在sco中有两种包,hv和dv包。hv没有crc校验,并且没有重传;dv包含crc在数据

段,但是不在同步数据段,数据段可以重传。dv包是data-voice包,payload被分为80bit

的voice和150bits的data。如果dv包中的数据data部分在sco结束前没有收到ack,则

data将被以一个dm1数据包重传。

esco包

ev包被用在同步esco逻辑传输中。ev包包含crc和重传。3个esco(ev3,ev4,ev5)

被定义在基础速率(br)中,4个其他的esco包(2-ev3,3-ev3,2-ev5,3-ev5)定义在增强

数据速率(edr)模式。

acl包

acl被用于异步逻辑传输,携带的信息是用户或者控制数据。为基础速率(br)定义7中类型

的包,为增强速率(edr)定义了6种包。

异步数据段

【篇二:蓝牙4.0技术细节】

蓝牙4.0技术细节

虽然蓝牙(bluetooth)3.0都还尚未完全普及,bluetooth sig(蓝牙技术联盟,bluetooth

special interestgroup,后文简称bluetoothsig)却又再次推出了蓝牙4.0规范,并表示这又

是蓝牙发展史上一次重大的革新。值蓝牙4.0推出之时,我们特地采访了bluetoothsig的相

关技术工程师,并请他们就蓝牙4.0的技术特性做了较为详细的讲解。

本文中,我们将一面体会低功耗蓝牙带来的全新应用模式,一面再次回顾bluetooth的发

展历程,你会发现蓝牙技术在曾经的一度迷失之后,再次找回了自己的位置和尊严。

当前的家庭客厅系统,点对点架构已经带来纠缠不清的线缆和混乱,如果我们还想把游戏

机、数码相机、dv、耳机、麦克风还有移动电话都连接起来,可能还得考虑增加usb、1394、

spdif以及各种充电器和电源插座线缆。

有没有一种通用的、不需要用户干预的简便方法把各种电子设备连接在一起,而又不至于

被线缆淹没呢?在wi-fi之外,大家现在已经比较熟悉的“蓝牙”正是这样一种连接技术,它被

设计为面向个人和家庭的无线式自动连接,其三大核心特点便是无线、低成本和自动化。你是

通过什么途径来了解并熟悉蓝牙技术的?我想对于绝大部分用户而言,无非是两个途径—蓝牙

耳机或者手机的蓝牙功能。也许你知道如何用蓝牙功能,但是你了解蓝牙技术吗?未必!尤其

是在洗尽浮华而转重视实用层面的蓝牙4.0技术发布之后,蓝牙的应用面又得到了极大的扩展。

从1.0的失败到4.0的革新变迁,蓝牙技术经历了哪些改变和进化?蓝牙技术的基本原理是什

么?当然还有大家最关心的蓝牙4.0到底能给我们带来什么?我们即将为您一一解答。

bluetooth 4.0,协议组成和当前主流的b l u e t o o t h2.x+edr、还未普及的blue

toot h3.0+hs不同,bl u e t o o t h 4.0是bluetooth从诞生至今唯一的一个综合协议规范,

还提出了低功耗蓝牙、经典蓝牙和高速蓝牙三种模式。其中高速蓝牙主攻数据交换与传输,经

典蓝牙则以信息沟通、设备连接为重点,蓝牙低功耗顾名思义,以不需占用太多带宽的设备连

接为主。这三种协议规范还能够互相组合搭配、从而实现更广泛的应用模式,此外,

bluetooth 4.0还把蓝牙的传输距离提升到100米以上(低功耗模式条件下)。

bluetooth sig表示,正式推出bluetooth 4.0的用意就是希望能够通过单一的接口,让

应用系统自己挑选技术使用,而不是让消费者进行设备互连时,还要手动选择各项设备的连接

模式,这一人性化的功能取向显然沿袭了蓝牙关注可用性和实际体验的设计思路,三种应用模

式中,因为经典蓝牙和高速蓝牙都只是对旧有蓝牙版本的延续和强化,下面我们将重点阐述将

全新的低功耗蓝牙技术。

bluetooth 4.04.0,低耗电模式在应用模式上的改变和提升低功耗蓝牙的前身其实是

nokia开发的wibree技术,本是作为一项专为移动设备开发的极低功耗的移动无线通信技术,

在被sig接纳并规范化之后重新命名为bluetooth low energy(后简称低功耗蓝牙)。由于该技

术专为极低电池量的装置而设计,仅通过普通纽扣电池供电便可确保长达一年的正常使用,因

此在包括医疗、工业控制、无线键盘、鼠标、甚至单音耳机、无线遥控器等设备领域都可得到

广泛应用。譬如装有记步器的运动鞋、装有脉搏量测的运动手环等,就可以通

过低功耗蓝牙低功耗技术将监控信息传送到记录器(能是手表或是pda)上,而不需像标准

蓝牙设备一般需要常常充电。它易于与其它蓝牙技术整合,既可补足蓝牙技术在无线个人区域

网络(pan)的应用,也能加强该技术为小型设备提供无线连接的能力。

如果说wibree的超低功耗奠定了一个技术上的基础,那么该协议被更名为bluetooth

low energy并纳入bluetooth 4.0之后,便拓展成为一种全新的应用模式,如图6。因为低

功耗蓝牙提供了持久的无线连接且有效扩大相关应用产品的射程,在各种传感器和终端设备上

采集到的信息被通过低功耗蓝牙采集到电脑、手表、移动电话等具备计算和处理能力的主机设

备中,再通过gprs、3g、经典/高速模式蓝牙或wlan等传统无线网络应用与相应的web服务

关联,从而从根本上解决当前传统网络应用在模式上的局限性和交互手段匮乏、数据来源少、

实时性差等问题,真正让网络步入生活。

必须指出,因为低功耗蓝牙在应用模式上的革命性提升,将催生的应用模式完全无法进行

预估,因此它将拓展出的应用市场绝不会是一个成熟的利基市场,而将是一片真正意义上的新

领域,只要有对应用的准确把握和合理的理念,谁都可能在这个领域里掘得第一桶金。

bluetooth 4.0,双模式组合应用

根据bluetooth sig发布的bluetooth 4.0核心规范白皮书,bluetooth 4.0低耗电模式

有双模式和单模式两种应用。低功耗蓝牙的单模式蓝牙的技术特点技术综述蓝牙(bluetooth)通

过低功率无线电波传输数据,其本质是一种支持设备短距离通信(一般是10m之内)的无线电技

术。其标准是ieee 802.15,工作在2.402~2.480ghz频率带之间,基础带宽为1mb/s。和

wi-fi、wimax等用于局域、城域的无线网络规范不同的是,bluetooth所定义的应用范围更

小一些,它将应用锁定在一个以个人为单位的人域网(pan)领域,也就是个人起居活动范围的方

圆10米之内,却容纳了包括音频、互联网、移动通信、文件传输等在内的非常多样化的应用取

向,加上强调自动化和易操作性,因此在这一领域里很快就得到了普及,虽然在蓝牙的发展过

程中一度曾偏离了这一主旨,但bluetooth 4.0的出现无疑揭示了bluetooth对自身核心价值

的反思和回归。

调节性跳频与微微网(piconet)的原理

因为蓝牙所用的频带仍处于应用繁多的2.4g无线电频率范围附近,为达到最大限度地避免

设备间的相互干扰的目的,蓝牙从实际的应用出发,将信号功率设计得非常微弱,仅为手机信

号的数千分之一,这样设备间的距离就只能保持在约10米范围内,从而避免了和移动电话、电

视机等设备间的相互干扰。

蓝牙协议被设计为同时允许最多八个蓝牙设备互连,因此协议需要解决的另一个问题就是

如何处理同在有效传输范围内的这些蓝牙设备之间的相互干扰,这一问题的解决催生了蓝牙协

议最具独创性的通信方式—调节性跳频技术。它定义了79个独立且可随机选择的有效通信频率,

每个蓝牙设备都能使用其中任何一个频率,且能有规律地随时跳往另一个频率,按协议规范,

这样的频率跳转每秒钟会发生1600次,因此不太可能出现两个发射器使用相同频率的情况,

即使在特定频率下有任何干扰,其持续时间也仅不到千分之一秒,因此该技术同时还将外界干

扰对蓝牙设备间通讯的影响降低到最小。

让我们设想一下两个蓝牙设备间通讯的过程,当两个蓝牙设备互相靠近时,它们之间会发

生电子会话以交流需求,这一会话过程无需用户参与,而一旦需求确认,设备间便会自动确认

地址并组成一个被称为微微网(piconet)的微型网络,此网络一旦形成,组成网络的设备便可协

商好和谐地随机跳频,以确保彼此间的联系,但又不会对其它信号构成干扰,于是蓝牙—杂技

演员手里的一个钢球就这样形成了。

蓝牙的协议组成

蓝牙标准从制定之初便定义成为个人区域内的无线通信制定的协议,它包括两部分:第一

部分为协议核心(core)部分,用来规定诸如射频、基带、链路管理、服务发现、传输层以及与

其他通信协议间的互用、互操作性等基本组件及方法;第二部分为协议子集(profile)部分,用

来以规定不同蓝牙应用(也称使用模式)所需的协议和过程。

如图11,蓝牙标准的设计仍采用从下至上的分层式结构,以人机接口(host controller

interface,hci)为界分为低层和高层协议,其中底层的基带(baseband)、射频

(bluetoothradio)和链路管理层(lmp)协议定义了完成数据流的过滤和功能组件是一个高度集

成的装置,具备轻量的链路层(link layer),能在最低成本的前提下,支持低功耗的待机模式、

简易的设备发现、可靠的点对多点的数据传输、安全的加密链接等;位于上述控制器中的链路

层,适用于网络连接传感器,并确保在无线传输中,都能通过低功耗蓝牙传输。

在双模式应用中,蓝牙低功耗的功能会整合至现有的传统蓝牙控制器中,共享传统蓝牙技

术已有的射频和功能,相较于传统的蓝牙技术,增加的成本更小;除此之外,制造商可利用升

级版蓝牙低功耗技术的功能模块,集成目前的蓝牙3.0高速版本、或2.1+edr等传统蓝牙功能

组件,从而改善传统蓝牙设备的数据传输效能。图8即为蓝牙低功耗技术的双模式应用功能逻

辑拓扑图,图8右边所示即为通过整合原有蓝牙技术的射频降低了升级成本。

bluetooth 4.0,低功耗的秘密

低功耗蓝牙为何如此省电?根据sig官方发布会的资料,它和经典蓝牙技术相比,主要的

改变集中体现在待机功耗的减少、高速连接的实现和峰值功率的降低三个方面。

待机功耗的下降

传统蓝牙设备的待机耗电量大一直是为人所诟病的缺陷之一,这与传统蓝牙技术动辄采用

16~32个频道进行广播不无关系,而低功耗蓝牙仅使用了3个广播通道,且每次广播时射频

的开启时间也由传统的22.5ms减少到0.6~1.2ms,这两个协议规范上的改变显然大大降低

了因为广播数据导致的待机功耗;此外低功耗蓝牙设计了用深度睡眠状态来替换传统蓝牙的空

闲状态,在深度睡眠状态下,主机长时间处于超低的负载循环(dutycycle)状态,只在需要运作

时由控制器来启动,因主机较控制器消耗更多的能源,因此这样的设计也节省了最多的能源;

在深度睡眠状态下,协议也针对此通讯模式进行了优化,数据发送间隔时间也增加到0.5~4s,

传感器类应用程序发送的数据量较平常要少很多,而且所有连接均采用先进的嗅探性次额定(sn

i f f-subrating)功能模式,因此此时的射频能耗几乎可以忽略不计,综合以上因素,低功耗蓝

牙的待机功耗较传统蓝牙大大减少。

高速连接的实现

要明白这一过程,我们必须先介绍一下蓝牙设备和主机设备的连接步骤。

第一步:通过扫描,试图发现新设备

第二步:确认发现的设备没有而已软件,也没有处于锁定状况

第三步:发送ip地址

第四步:收到并解读待配对设备发送过来的数据

第五步:建立并保存连接

按照传统的蓝牙协议的规范,若某一蓝牙设备正在进行广播,则它不会响应当前正在进行

的设备扫描,而低功耗蓝牙协议规范允许正在进行广播的设备连接到正在扫描的设备上,这就

有效避免了重复扫描,而通过对连接机制的改善,低功耗蓝牙下的设备连接建立过程已可控制

在3ms内完成,同时能以应用程序迅速启动链接器,并以数毫秒的传输速度完成经认可的数据

传递后并立即关闭连结,而传统蓝牙协议下即使只是建立链路层连接都需要花费100ms,建立

l2cap(逻辑链路控制与适应协议)层的连接建立时间则更长。

蓝牙低功耗协议还对拓扑结构进行了优化,通过在每个从设备及每个数据包上使用32位的

存取地址,能够让数十亿个设备能被同时连接。此技术不但将传统蓝牙一对一的连结优化,同

时也利用星状拓扑来完成一对多点的连结。在连接和断线切换迅速的应用场景下,数据能够在

网状拓扑之间移动,但不至于为了维持此网络而显得过于复杂,这也有效减轻了连接复杂性,

减少了连接建立时间。

降低峰值功率

总结与展望

笔者认为bluetooth的灵魂在于应用而非速度,如何让应用的门槛更低,让上手更容易,

让设备自动化程度更高,需要用户介入的过程越少,使用者的感受越好,数据的可靠程度越高,

移动的便利性越强,那么它就是bluetooth该努力的方向,让我们一起祝福bluetooth有一

个更好的将来吧。

【篇三:蓝牙4.0 开发笔记】

宝通动感科技

其实蓝牙4.0的开发跟之前的开发版本的差不多,就是有些地方不太一样,只要认识一下

便可以在原来的基础上进行开发|手机软件开发外包.宝通动感科技网:

1、首先两边要有同样的协议。 也就是说,设备首先要定义一个 profile。 ( profile由

services构成,services由characteristic构成。 ) 手机要扫描discover这个profile,

(可以全部扫描profile的所有services--- discoverallservices, 或者选择自己支持的某一

个或者几个services---discoverservicebyuuid. )

2、扫描到相应profile之后,如果services是标准services 那么就按照蓝牙联盟规定的

操作方法进行读写。 如果不是标准的,那就根据设备方(比如你公司的蓝牙工程师)定义好得

操作方法进行读写。

characteristic 包含三个部

分, declaration, value, descriptor.

declaration 是申明,对characteristic的特征进行描述,比如 properity,value的

handlevalue的uuid.

value是characteristic的核心部分,一般是一组已经定义好得数值或者字符串

descriptor是characteristic的控制或者额外特性描述。 最典型的是0x2902(控制

notification 或者

indication 的字).

writedescriptor 就是写descriptor 这个很显然。writecharacteristic就是写value.

3、通过服务的uuid找到服务,然后通过特征的uuid找到特征 然后就可以读写了


本文标签: 蓝牙 设备 连接 技术 低功耗