蓝牙是用来替换有线电缆构造短距离无线链接的通信技术。
蓝牙可以提供点对点的连接或点对多点的连接,在点对多点的连接中,几个蓝牙单元共享信道。
两个或多个共享同一信道的单元间构成一个微微网(piconet)。其中一个是主单元,其他是从单元。
多个交叠覆盖的微微网构成散射网(分散网)。
物理链路:通信设备间物理层的数据连接通道。SCO链路(同步面向连接),ACL链路(异步无连接)。
SCO链路:
主单元与指定的从单元之间实现点对点且对称的同步数据交换链路。
利用主单元保留的时隙传输分组,用于实时性较强的数据传输。
主单元:可以支持最多3个指向相同或不同从单元的SCO链路。
从单元:对于同一主单元可以支持3个SCO链路,如果链接来自不同的主单元,从单元只能支持2个SCO链路。每条SCO传码率:64k/s。
SCO链路有发送SCO设置消息的主单元建立,该消息含定时参数,用于定义保留时隙。
ACL链路:
在非SCO链路保留时隙,主单元可以以时隙为单位同任何从单元交换分组。
ACL链路提供主单元与从单元的分组交换链路,主要针对时间要求不敏感的数据。
一个主从单元间只能存在一个ACL链路。
逻辑信道
一共定义了5中逻辑信道:
链路控制器(LC)控制信道:用于链路控制层
链路管理器(LM)控制信道:用于链路管理层
UA用户信道:传输异步用户信息
UI用户信道:传输传输等时用户信息
US用户信道:传输同步用户信息
LC信道位于分组头中,其他信道位于有效载荷中,US只能用于SCO链路。UA,UI通常用于ACL链路。LM在SCO,ACL链路中都可以。
蓝牙时钟
微微网的信道完全由主单元控制。
主单元的蓝牙设备地址(BD_ADDR)决定跳频序列和信道介入码,主单元的系统时钟决定跳频序列中的相位和设置定时。
微微网建立时,主单元时钟通过通信链路传给从单元。从单元在本地时钟上加一个补偿值来与主时钟同步,该补偿值有规律的更新。
链路控制器状态
从一个状态转换到另外的状态可以使用链路控制命令或链路控制器的内部信号。
1:查询过程
用于接收端设备地址不为发送端所知,或者用于发现其他蓝牙设备是否在范围内。
查询消息不含查询设备的任何信息,可以指定GIAC和DIAC两种查询方式。
GIAC:查询所有设备,DIAC:查询特定类型的设备。
发起查询的设备收集所有响应设备的地址和时钟。
查询过程包括:查询扫描,查询,查询响应。
1.1查询扫描
一个设备需要周期性的进入查询扫描状态,响应查询消息,才能使其他设备发现自己。
1.2 查询
用来发现其他设备。
1.3 查询响应
处于查询响应状态的设备收到查询消息时必须返回一个包含自身地址的响应消息。此响应分组使用包含设备参数的FHS分组。
2:寻呼过程
查询过程使设备发现通信范围内的其他设备。
寻呼过程是用来建立实际链接。
建立连接的单元可以执行寻呼过程并并自动成为连接的主单元,寻呼过程和查询过程分别使用设备识别码(DAC)和查询识别码(IAC)。
2.1寻呼扫描
处于寻呼扫描的设备在扫描窗口内侦听自身设备识别码。
2.2 寻呼
主单元使用寻呼状态建立一个到从单元的链接,主单元通过不同跳频信道重复发送设备识别码(DAC),同时监听从设备的响应。
主单元寻呼过程:先用从单元的地址确定跳频序列,使用该序列发送到从单元的信息。
主单元使用一个估计值,该值是从查询或与从单元最后一次相遇中取得。
2.3寻呼响应
当从单元收到寻呼信息,主,从单元有一个粗略的FH同步过程,他们进入一个响应过程,交换关键信息。
3:连接状态
连接已经建立,数据分组可以双向传送的状态。连接的两端都是使用的主单元的时钟和接入码。
包括activity,sniff,hold,park4中模式
activity:处于正常通信的模式。
sniff:减少从设备监听信道的时间,解约能量。
hold:节省资源,以方便其他操作(扫描,寻呼)。主从设备协商后进入hold模式,从设备将启动定时器,到达时间后从设备被唤醒并进行同步。
park:休眠模式仅保持与信道同步,放弃活动成员地址,使用一个8位的休眠成员地址(PM_ADDR)和8位的接入请求地址(AR_ADDR),助于休眠的从设备周期性的监听信道,调整时钟,监听广播消息。
低功耗模式:sniff,hlod,park功耗依次增加。
蓝牙地址:
48位全球唯一。
LAP和UAP形成BD_ADDR。
蓝牙中定义了3中介入码:
设备介入吗(DAC),信道接入码(CAC),查询接入码(IAC)
在一个微微网中每个活动成员都分配了一个3位的活动成员地址(AM_ADDR),主单元没有AM_ADDR,通过定时关系与从单元区分。
从单元只接受地址与自己匹配的信息。AM_ADDR在分组头中携带,只有从单元在信道上激活时AM_ADDR才有效。
从单元被激活时,主单元给从单元分配一个AM_ADDR,可以在连接建立阶段或unpark阶段。
PM_ADDR只在休眠状态有效,从单元被激活并分配AM_ADDR后PM_ADDR放弃。