目录
本系列文章由江山(csdn名:补不补布)(github:jianggogogo)自己写成,当中用到引用时都已经标记出来,如果出现版权问题,请直接联系我修改。当然,技术在于分享,欢迎大家转载,不过请注明出处。最后,如果出现有错误的地方欢迎大家指正。
前言:
基于谷雨cc2640教程
一、蓝牙协议栈简介:
对蓝牙有基础的朋友可能知道蓝牙的一些概念,这就是一个典型蓝牙协议栈。那么对于蓝牙新手来说,我们就可以降蓝牙协议栈看作是一个飞机,我们只需要学习如何开飞机就行,至于飞机怎么做,那不是我们现阶段需要考虑的事情。
二、GAP层,通用访问配置文件:
- BLE协议栈的GAP负责连接功能,处理的是设备的接入过程
- 包括:设备发现,链路建立,链路终止,安全特性的启动和设备配置。
2.1、连接参数:
- connection interval连接间隔:在ble方案中,为使用跳频方案,就是两个设备旨在特定的频道上面交流数据,随后会在新的频道上面同行,而这个新的频道在上次的交流中约定。连接间隔的范围从6(7.5ms)到最大值3200(4.0s)
- slave latency从机延迟:这个参数是从机跳过多个连接事件的能力:如果外设没有要发送的数据就继续睡眠。当然,这个功能可以选择开启或者不开启。
- supervison time-out:监控超时,连词成功连接事件之间的最长时间,如果在这个时间内没有成功,那么设备将终止连接并且返回到未连接状态。以10ms为单位,可以从10(100ms)到3200(32.0s)之间。
2.2、有效连接间隔:
有效连接间隔等于两个连接事件之间的时间跨度。当没有数据从从机发送到主机时,从机每500ms 一个 连接事件 交互一次 。
2.3、连接参数注意事项:
2.4、多连接下的连接参数限制:
为了有时间能够扫描新设备,可以使用的最小连接间隔为12.5+5*n。n为当前连接的数量。
2.5、连接参数更新
外设可以发送连接参数更新请求来请求主机更改连接设置。
-该请求包含四个参数:最小连接间隔,最大连接间隔,从延迟和
监管 超时。这些值表外围设备对连接所需的参数(连接间隔作为范围给出)。当 主机 设备接收到该请求时,它可以接受或拒绝新的参数。
- 根据
GAPRole ,连接参数更新可以 调用 GAPRole_SendUpdateParam 或GAPCentralRole_UpdateLink 命令异步发送。
2.6、连接终止:
主机和从机可以由于任何原因终止连接,一方终止,另一方必须在两台设备退出连接状态之前进行相应。
2.7、GAP概述:
应用层可以直接调用GAP APi来执行BLE相关功能,大多数GAP由GAProle task处理。
2.8、配置GAP:
GAP层功能主要在库代码中定义,这些功能大多由GAPRole调用,不需要应用直接调用。
- 开始GAPRole 之前可能需要修改的几个参数。这些参数可以通过 GAP_SetParamValue 和GAP_GetParamValue 函数进行设置或获取,包括 广播和扫描间隔、 窗口等(有关更多信息,请参阅 API )。以下是 simple_peripheral_init 中 GAP 层的配置:
三、GAPRole任务
- 这是一个单独的任务,处理大多数GAP层的功能,并且释放应用层的空间。这个任务由应用程序启用和配置,许多蓝牙低功耗协议栈实际那由GAPRole任务直接处理而不传送到应用程序中。
- 应用程序可以向GAPRole注册回调函数,用于在应用程序中处理某些事件。
3.1、外设角色 peripheral:
操作流程:
1、 初始化GAPRole参数:
2、初始化GAPROle任务,并且将应用程序回调函数传回GAPRole。