nRF51822 S110 用户指南

1.SoftDevice结构

nRF51822 S110 用户指南_第1张图片
SoftDevice是nRF公司实现的一个BLE蓝牙协议栈,只提供HEX文件,可以实现从机角色(Peripheral role)或广播者角色(Broadcaster role)

1.1使用前阅读

  • S110 nRF51822 SoftDevice Specification
  • nRF51822 Product Specification
  • nRF51 Series Reference Manual
  • Bluetooth Core Specification Version 4.0 Volume 3, parts C, F and G, and Volume 6 available at
    https://www.bluetooth.org
  • nRF51 SDK帮助文档(包含所有API)

2. API

SoftDevice 的API使用了SVC机制(参考链接),API方法、数据结构、错误码被定义在一堆和蓝牙核心规范相关的头文件里,例如:一个GAP事件(比如BLE_GAP_EVT_CONNECTED)被定义在ble_gap.h。

3. 事件处理

来自SoftDevice的消息作为一个事件通过软件中断的方式向应用分发。开始使用SoftDevice时,应用需要初始化时钟源和设置一个指针指向错误处理。为了接收事件,应用同时需要使能软件中断。通常开中断是为了一个应用的初始化(如建立服务、读取传感器数值),开启中断后再开始广播或者等待事件(例如:等待主机的链接)
nRF51822 S110 用户指南_第2张图片
事件作为一个指向C结构体的指针被传送给应用,这些个结构体定义在通信层的头文件里(如:ble_gatts.h, ble_gap.h)
nRF51 SDK提供了一个叫做ble_stack_handler的模块使初始化和事件处理更简单。在SDK中的例子里,所有事件通过此模块的ble_evt_dispatch传送给应用。然后各个模块在实现自己的处理程序。

4.缓冲管理

正在发送的数据包和部分API会消耗SoftDevice中的数据缓冲区。当缓冲区中的数据包发送出去时,SoftDevice会发送BLE_EVT_TX_COMPLETE事件给应用。
有两种处理管理缓冲区的方法:

  • 利用计数器-利用计数器应用管理一个计数器,当消耗缓冲区是减技术,收到BLE_EVT_TX_COMPLETE时加计数。有专门的API用来初始化计数器。
  • 处理返回码-如果没有缓冲区剩余,那些使用缓冲区的方法会返回BLE_ERROR_NO_TX_BUFFERS,此时,当收到BLE_EVT_TX_COMPLETE事件时此方法必须重新调用。

5.蓝牙服务和配置文件

SoftDevice产生事件,SDK中所有服务的实现都是事件驱动并且都有初始化方法和事件处理方法。每个服务都有一个或多个方法触发特定服务动作,由应用决定何时触发。
所有服务初始化方法都有两个参数:一个实例结构体和一个初始化参数结构体。实例结构体包含服务信息如状态、特性等,此参数是必须的,其作为特定服务的句柄(handle即代表一个服务对象)。第二个结构体包括初始化信息和选择服务功能的一些参数,它尽在建立服务是有效并且当初始化完成时立马被移除。
BLE中的配置文件(profile)是一组服务的用例说明,配置文件本身并不是写在代码中的。(配置文件大概是定义各种应用应使用何种服务的)。

For example, the proximity application in the SDK (for both the evaluation board and nRFGo Motherboard)implements the Reporter role of the proximity profile by including Link Loss Service, Immediate AlertService, and TX Power Service.

6. 助手模块

nRF51 SDK中包含几个助手模块如定时器、按键、UART串口等。对于SoftDevice而言,这些也是事件驱动并且同样需要初始化。当这些发生时也会产生事件。

你可能感兴趣的:(nRF51822学习)