JL杰理蓝牙芯片交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1131|回复: 1

蓝牙连接过程

[复制链接]

2

主题

60

回帖

404

积分

版主

Rank: 7Rank: 7Rank: 7

积分
404
发表于 2023-6-18 10:51:12 | 显示全部楼层 |阅读模式

注册登录,了解更多芯片技术。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
   首先,主设备(master,即发起连接的设备)会寻呼(page)从设备(slave,接收连接的设备),master会以跳频的方式去寻呼slave, slave会固定间隔地去扫描(scan)外部寻呼,即page scan,当scan 到外部page时便会响应response该page,这样两个设备之间便会建立link的连接,即ACL链路的连接。当ACL 链路连接建立后,主设备会发起channel的连接请求,即L2CAP的连接。建立L2CAP的连接之后,主设备采用SDP去查询从设备的免提服务,从中得到rfcomm的通道号,然后主设备会发起rfcomm的连接请求建立rfcomm的连接。然后就建立了应用的连接。
1. 蓝牙设备的发现和同步:
        蓝牙设备在建立连接以前,通过在固定的一个频段内选择跳频频率或由被查询的设备地址决定,迅速交换握手信息时间和地址,
        快速取得设备的时间和频率同步。建立连接后,设备双方根据信道跳变序列改变频率,使跳频频率呈现随机特性。
        蓝牙定义了32个频点为一个频段, 划分为79个子频段,工作的频段及跳频顺序取决于所输入的蓝牙主控设备时钟CLK
        和主控设备地址的最低28比特有效位
(1)查询扫描状态(inquiry)
        查询设备每隔一段时间发送一个新的频率来发送查询,被查询设备每隔1.28s选择一次新的监听频率。
        查询和被查询设备使用通用查询接入码(鉴权过程),作为查询地址。产生的32个查询跳变序列均匀分布在79个频率信道上。

(2)寻呼扫描状态(page)(需要知道mac地址,发起连接的设备(主设备)知道要连接设备的地址。)
        蓝牙设备通过寻呼来呼叫其它的设备加入其所在的微微网,寻呼设备每隔312.5微秒选择一个新的频率来发送寻呼,
        在寻呼扫描时,被寻呼设备每隔1.28s选择一个新的监听频率。
        寻呼和被寻呼设备使用被寻呼设备地址(BT_ADDR)的低28个比特位,产生的寻呼跳变序列(paging –hopping  sequence)
        是一个定义明确的周期序列,它的各个频点均匀分布在2.4G的79个频率信道上。

(3)连接状态:
        在当前状态下, 蓝牙通信设备双方每隔625微秒改变一个频率,使用主设备地址的最低28位有效位,
        产生的信道跳变序列(Channel hopping sequence)周期非常长,而且79跳变序列在任何的一小段时间内都是接近均匀分布的。

        Page:这个子状态就是我们通常称为的连接(寻呼),进行连接/激活对应的slave的操作我们就称为page。
        它是指:发起连接的设备(主设备)知道要连接设备的地址。所以可以直接传呼。(想想传呼机,要知道号码才行)。

        Page scan:这个子状态是和page对应的,它就是等待被page的slave所处的状态,
        换句话说,若想被page到,我们就要处于page scan的状态。

        inquiry:这就是我们通常所说的扫描状态,这个状态的设备就是去扫描周围的设备。它是不知道周围有什么设备,要去查询(调查),类似于广播(吆喝)。
        处于Inquiry Scan的设备可以回应这个查询。再经过必要的协商之后,它们就可以进行连接了。
       
        发现过程通常包括大约12秒的查询扫描,然后对每个新设备进行页面扫描,以检索其蓝牙名称。
        The discovery process usually involves an inquiry scan of about 12 seconds,
        followed by a page scan of each new device to retrieve its Bluetooth name.

        1. inquiry
        作用:让蓝牙芯片进入发现周围蓝牙设备的模式,它的返回值是周围蓝牙设备的信号。
        对应的HCI命令:HCI_inquiry:属于连接控制命令,搜索一次时长为12.8s.
       
        2. inquiry scan
        作用:蓝牙设备开启inquiry scan模式,才能够被别的蓝牙设备搜索到。
       
        3. Page
        作用:发起连接的蓝牙设备向被连接的蓝牙设备发起连接请求或者认证,请求即是一次page动作。
        即,手机点击请求连接目标蓝牙耳机的过程中发送的很多命令都会进行page的动作。
        Page的超时时间如下:最大是40.9秒,最小是0.625ms
        当远端设备没有超时时间内没有返回Page Response时,返回Page Timeout事件。

        4. page scan
        作用:蓝牙设备开启page scan模式,才能够相应其他蓝牙设备的连接请求。例如蓝牙耳机只有处于page scan才允许其他设备来连接。
        Page scan是一个状态,只有蓝牙耳机处于page scan状态,手机才有可能连接成功

2、蓝牙状态转换过程
        1) (master)寻呼另外(slave),此时处于寻呼状态。(Page )
        (需要知道mac地址,发起连接的设备(主设备)知道要连接设备的地址。)
        master采用调频的方式寻呼slave;
        2) slave接收到master该寻呼,此时slave处于寻呼扫描状态。(Page Scan )
        3) slave发送对master的回复,此时处于slave响应状态。(Slave Response )
        4) master发送FHS包到slave,此时处于master响应状态。(Master Response )
        5) slave发送第二个回复给master,此时处于slave响应状态(Slave Response )
        6) slave和master切换并采用源信道的参数,此时处于master响应状态和slave响应状态。
       
        inquiry:这就是我们通常所说的蓝牙搜索设备,这个状态的设备就是去扫描周围的设备
        处于inquiry Scan的设备可以回应这个查询。再经过必要的协商之后,它们就可以进行连接了。
        此处需要说明的是:Inquiry之后,不需要进入Page就可以连接上设备。
        inquiry scan:这就是我们通常看到的可被发现的设备。体现在上层就是我们在android系统中点击设备可被周围什么发现,那设备就处于这样的状态。

3、手机和免提设备之间建立连接
        当slave scan到外部page时便会响应response该page,这样两个设备之间便会建立link的连接,即ACL链路的连接。
        当ACL 链路连接建立后,主设备会发起channel的连接请求,即L2CAP的连接,建立L2CAP的连接之后,
        主设备采用SDP去查询从设备的免提服务,从中得到rfcomm的通道号,然后主设备会发起rfcomm的连接请求建立rfcomm的连接。
        然后就建立了应用的连接。
        即link establish(Acl链路连接)->channel establish(L2CAP连接)->rfcomm establish(两个不同设备上的应用程序之间保证一条完整的通信路径)->connection
回复

使用道具 举报

7

主题

16

回帖

255

积分

中级会员

Rank: 4

积分
255
QQ
发表于 2023-12-29 12:05:06 | 显示全部楼层
这个帖子写的太棒了!总是看见代码里面写的page ,inquiry,都不知道是干嘛的,狠狠的解惑了!感谢大佬的知识分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|JL杰理蓝牙芯片交流论坛 ( 粤ICP备18068352号 )

GMT+8, 2024-12-23 02:04 , Processed in 0.087249 second(s), 23 queries .

Powered by yunthinker云信

© 2001-2023 yunthinker Team.

快速回复 返回顶部 返回列表