打开主菜单

谷雨文档中心 β

更改

NRF52832DK协议栈实验

添加4,501字节2019年7月26日 (五) 17:27
蓝牙协议简介
== 蓝牙协议简介 ==
 
=== 简介 ===
我们的蓝牙协议实验部分,将会给大家带来最直观的蓝牙协议部分的学习,我们通过拆分的方式,带领大家深入了解蓝牙协议的主要功能部分。
 
在进行蓝牙协议实验学习之前,我们有一些基础但十分重要的蓝牙协议介绍分享给大家,这个部分的蓝牙协议不像蓝牙协议手册那样,对每个参数进行说明,洋洋洒洒会有好几千页的说明文档,这样大家也很难去看完并记忆。
 
我们针对的仅仅是大家在利用协议栈开发个人需求的时候,绕不开的蓝牙协议部分的内容进行介绍。首先我们先分析一下蓝牙主从机通信,都有哪些重要点。
 
主机部分:扫描、发起连接、发现服务、通信。
 
从机部分:广播、注册服务、被连接、通信。
 
{| class="wikitable"
|+蓝牙主从机通信协议要点
! colspan="4" |主机
! colspan="4" |从机
|-
!扫描
!连接
!服务
!通信
!广播
!服务
!连接
!通信
|-
|扫描参数
|连接参数
|服务句柄
|Write
|广播数据
|服务
|连接参数
|Notify
|-
|
|连接句柄
|使能通知
|
|
|
|连接句柄
|
|-
|
|MTU大小
|
|
|
|
|MTU大小
|
|}
 
=== 主机扫描 ===
 
==== 主机扫描核心参数 ====
主机扫描核心参数主要是4个,也就是说这4个参数是不可获取的,必须要配置的。分别是扫描间隔interval、扫描窗口window、扫描持续时长duration、扫描模式active。
 
扫描间隔interval:两个连续的扫描窗口的起始时间的时间差,这个很好理解,就是第一次扫描起始时间和第二次扫描起始时间的时间差。
 
扫描窗口window:就是指的单次扫描的时间。
 
扫描持续时长duration:我们发起一次扫描持续的时间,发起一次扫描包含了N个扫描窗口。
 
所以我们的扫描参数需要满足如下条件:
 
1、duration ≥ interval ≥ window
 
2、协议规定window和interval不能超过10.24s
 
协议栈中一些特殊参数情况的处理:
 
1、duration设置为0,持续扫描。也就是说设置为0代表无穷大
 
2、duration小于interval,则至少广播一次
 
扫描模式:
 
1、active配置1,主动扫描模式,可获取从设备的广播数据以及扫描回调数据
 
2、active配置0,被动扫描模式,只可以获取从设备的广播数据[[文件:扫描窗口和扫描间隔.jpg|边框|居中|无框|800x800像素]]
 
==== 主机扫描特殊应用参数 ====
extended:这个是用于BLE5.0协议中新增的大广播包数据,定义为1,才可以获取到外部大广播包
 
filter_policy:过滤扫描的参数,这个是用于我们扫描的时候,过滤出我们想要的设备
 
scan_phys:扫描的PHYs,这个同样是BLE5.0协议中新增的物理层协议,分别BLE_GAP_PHY_1MBPS、BLE_GAP_PHY_2MBPS等
 
channel_mask:扫描的信道(暂时不清楚此参数如何使用)
 
=== 主机连接 ===
== 蓝牙协议实验 ==
蓝牙协议实验部分,我们借由串口透传实验,一步一步拆分,给大家介绍蓝牙的协议方面。
 
下面是我们的实验列表,里面的实验是循序渐进的进行深入讲解蓝牙协议的,建议大家不要跳跃学习。
{| class="wikitable"
|+实验列表
!主机实验编号
!主机实验内容
!从机实验编号
!从机实验内容
|-
|1.0_ble_central_pm
|主机低功耗实验
|2.0_ble_peripheral_pm
|从机低功耗实验
|-
|1.1_ble_central_log
|主机LOG打印实验
|2.1_ble_peripheral_log
|从机LOG打印实验
|-
|1.2_ble_central_scan_all
|主机通用扫描实验
|2.2_ble_peripheral_adv_all
|从机通用广播实验
|-
|1.3_ble_central_scan_filter
|主机过滤扫描实验
|2.3_ble_peripheral_adv_filter
|从机过滤广播实验
|-
|1.4_ble_central_scan_whitelist
|主机白名单扫描实验
|2.4_ble_peripheral_adv_whitelist
|从机白名单广播实验
|-
|1.5_ble_central_conn_all
|主机通用连接实验
|2.5_ble_peripheral_conn_all
|从机通用连接实验
|-
|1.6_ble_central_conn_filter
|主机过滤连接实验
|2.6_ble_peripheral_conn_filter
|从机过滤连接实验
|-
|1.7_ble_central_update_connParam
|主机连接参数更新实验
|2.7_ble_peripheral_update_connParam
|从机连接参数请求更新实验
|-
|1.8_ble_central_update_mtu
|主机MTU大小配置实验
|2.8_ble_peripheral_update_mtu
|从机MTU大小配置实验
|-
|1.9_ble_central_profile_nus
|主机获取NUS服务实验
|2.9_ble_peripheral_profile_nus
|从机注册NUS服务实验
|-
|1.10_ble_central_nus_communication
|主机利用NUS服务收发通信实验
|2.10_ble_peripheral_nus_communication
|从机利用NUS服务收发通信实验
|}
=== 低功耗实验 ===
510
个编辑