510
个编辑
更改
→主机连接
!通信
|-
|扫描参数扫描参数①|连接参数连接参数③|服务句柄服务句柄⑦|Write属性Write⑨|广播数据广播数据②|服务服务⑥|连接参数连接参数③|Notify属性Notify⑨
|-
|
|连接句柄连接句柄④|使能通知使能通知⑧
|
|
|
|连接句柄连接句柄④
|
|-
|
|MTU大小MTU大小⑤
|
|
|
|
|MTU大小MTU大小⑤
|
|}
=== 主机扫描 扫描参数① ===
==== 主机扫描核心参数 ====
channel_mask:扫描的信道(暂时不清楚此参数如何使用)
=== 主机连接 广播数据② === ==== BLE4.x广播数据 ====BLE4.x的蓝牙广播数据包,最大是31byte,遵循的方式如下,首先是数据的长度、紧接着是数据类型,最后才是数据内容。 数据长度:某一个类型的数据长度,注意长度包含数据类型及数据内容。 数据类型:BLE协议规定的数据类型,例如可发现标志flag是0x01,local name是0x09。 数据内容:用户自定义数据。{{Note|text=包含广播数据和扫描回调数据:所有的广播数据内容,用户都是可以自定义,但一定要符合上面所说的数据结构,不然BLE设备无法正确识别。|type=tips}}{| class="wikitable"|+广播包的数据格式!数据长度!数据类型!数据内容|-|0x02|0x01(flag 可发现标志)|0x06|-|0x06|0x09(name 本地名称)|0x4759303031(“GY001”)|-|...|...|...|} ==== BLE5.x新增大广播包数据 ==== === 连接参数③ ===参数如下: '''Connection Interval连接间隔''':在BLE连接中,使用跳频方案。两个设备在特定时间仅在特定频道上彼此发送和接收数据。这些设备稍后在新的通道(协议栈的链路层处理通道切换)上通过这个约定的时间相遇。这次用于收发数据的相遇称为连接事件。如果没有要发送或接收的应用数据,则两台设备交换链路层数据来维护连接。两个连接事件之间的时间跨度,是以1.25 ms为单位,连接间隔的范围从最小值6(7.5 ms)到最大值3200(4.0 s)。 不同的应用可能需要不同的连接间隔。[[文件:连接参数1.jpg|边框|居中|无框|603x603像素]] '''Slave Latency从机延迟''',此参数为从机(外设设备)提供跳过多个连接事件的能力。这种能力给外设设备更多的灵活性。如果外设没有要发送的数据,则可以跳过连接事件,保持睡眠并节省电量。外设设备选择是否在每个连接事件时间点上唤醒。虽然外设可以跳过连接事件,但不能超出从延迟参数允许的最大值。[[文件:连接参数2.jpg|边框|居中|无框|525x525像素]] '''Supervision Time-out监控超时''',是两次成功连接事件之间的最长时间。如果在此时间内没有成功的连接事件,设备将终止连接并返回到未连接状态。该参数值以10 ms为单位,监控超时值可以从最小值10(100 ms)到3200(32.0 s)。超时必须大于有效的连接间隔。 === Effective Connection Interval有效连接间隔 ===有效连接间隔等于两个连接事件之间的时间跨度,假设从机跳过最大数量的连接事件,且允许从机延迟(如果从机延迟设置为0,则有效连接间隔等于实际连接间隔,)。 从机延迟表示可以跳过的最大事件数。该数字的范围可以从最小值0(意味着不能跳过连接事件)到最大值499。最大值不能使有效连接间隔(见下列公式)大于16秒。间隔可以使用以下公式计算: Effective Connection Interval '''=''' '''('''Connection Interval''')''' × '''('''1 '''+''' '''['''Slave Latency'''])''' Consider the following example''':''' • Connection Interval''':''' 80 '''('''100 ms''')''' • Slave Latency''':''' 4 • Effective Connection Interval''':''' '''('''100 ms''')''' × '''('''1 '''+''' 4''')''' '''=''' 500 ms 当没有数据从从机发送到主机时,从机每500ms一个连接事件交互一次。 === 连接参数的注意事项 ===在许多应用中,从机跳过最大连接事件数。选择正确的连接参数组在低功耗蓝牙设备的功率优化中起重要作用。以下列表给出了连接参数设置中权衡的总体概述。 减少连接间隔如下: l 增加两个设备的功耗 l 增加双向吞吐量 l 减少任一方向发送数据的时间 增加连接间隔如下: l 降低两个设备的功耗 l 降低双向吞吐量 l 增加任一方向发送数据的时间 减少从机延迟(或将其设置为零)如下: l 增加外围设备的功耗 l 减少外围设备接收从中央设备发送的数据的时间 增加从机延迟如下: l 在周边没有数据发送期间,可以降低外设的功耗到主机设备 l 增加外设设备接收从主机设备发送的数据的时间 === 连接句柄④ ===设备的连接句柄范围是从0x0000-0xFFFD,当然我们实际使用,也连接不了这么多的设备。 连接的句柄是按照连接的先后顺序分配,开发者无法自己指定,也就是说第一个与之连接的设备将会被分配连接句柄(connHandle)0x0000,第二个是0x0001,以此类推。 为什么句柄的最终范围是0xFFFD,因为后面的0xFFFE与0xFFFF是有特殊用于含义的。 0xFFFE:代表的是正在连接的设备的句柄。当我们发起对一个设备的连接,但是迟迟没有连接上,我们可以调用断开连接的函数,利用这个0xFFFE句柄断开这个连接。 0xFFFF:断开的句柄。当设备与之断开连接之后,句柄就会返回为0xFFFF。 === MTU大小⑤ ===MTU的大小,在BLE4.0的是时候,最大是只有27byte,当更新到BLE4.1向后,我们支持的MTU最大是251字节。 低功耗蓝牙协议栈支持链路层L2CAP PDU的分片和重组。这种分段支持允许构建在L2CAP之上的L2CAP和更高级协议(如属性协议(ATT))使用较大的有效负载大小,并减少与较大数据事务相关的开销。当使用分片时,较大的分组被分割成多个链路层分组,并由对等体设备的链路层重新组合。[[文件:MTU1.jpg|边框|居中|无框|745x745像素]]L2CAP PDU的大小还定义了属性协议最大传输单元(ATT_MTU)的大小。默认情况下,LE设备假设L2CAP PDU的大小为27字节,这对应于可以在单个连接事件数据包中传输的LE数据包的最大大小。在这种情况下,L2CAP协议头为4字节,导致ATT_MTU的默认大小为23。 注意: 使用LE数据长度分机功能时,LE包的长度最多可达251字节。 === 服务⑥ === === 服务句柄⑦ === === 使能通知⑧ === === 属性⑨ ===
== 蓝牙协议实验 ==