一、简介
兼容蓝牙4.0协议低功耗单模协议栈。数据链路层;L2CAP、AT、SM;GATT、GAP;补充nrf51的SDK包括蓝牙规范和应用实例。
为了增强鲁棒性和安全性,内存中协议栈和应用程序独立存储。异步的事件驱动,可以应用任何的RTOS。
S110 是BLE的外设协议栈,它集成了低功耗的控制器和主机,提供完整灵活的API。S110是一个预编译和链接成二进制的BLE协议栈,API是标准的C语言。

主机和控制器嵌入在S110 SoftDevice 支持设备和广播,API建立在GATT、GAP、L2CAP之上,S110实现了标准的蓝牙规范。
NRF51的SDK实现了蓝牙协议栈的服务和配置。L2CAP 最大27个数据,广播模式下最大37个字节。
1.1射频通知(Radio Notification)
射频通知是可配置的(ACTIVE,INACTIVE),当射频要使用的时候来自S110的信号通知应用程序。通知信号发送到中断。如果使能了ACTIVE信号在射频事件开始之前被发送,INACTIVE信号在射频事件(Radio Event)之后被发送,这些信号用来同步应用逻辑和发送数据包。比如当射频打开的时候ACTIVE信号用来关闭外设来降低尖端电流或者射频事件触发传感器数据。
ACTIVE,INACTIVE使用了同一个软件中断,需要应用程序管理,如果ACTIVE INACTIVE都使能了,在INACTIVE 信号之前总有一个ACTIVE信号。
1.2 Bootloader
S110 支持bootloader,bootloader用使用整个协议栈API的权限。SotfDevice 架构支持bootloader,通过把应用代码区(R1)分割成两个部分,上边的是bootloader下边的是应用程序。上半区的起始地址是bootloader的基地址,通过UICR.BOOTLOADER寄存器设置。
复位后,SoftDevice 检查UICR.BOOTLOADER寄存器,如果寄存器是空的(0xFFFFFFFF),SotfDevice认为没有bootloader。然后中断进入应用程序。如果BOOTLOADER寄存器设定了一个地址(不是0xFFFFFFF),SotfDevice认为bootloader向量表在这个地址定位,中断把向量表拷贝到这个位置,bootloader复位后应用程序开始。
从bootloader执行然后到应用程序执行,bootloader首先调用sd_softdevice_foward_to_application() SOC函数,触发中断跳转到应用程序。bootloader从Application Vector Talbe 得到应用程序复位中断函数的地址。
二、S110 需要的配置
S110用到的片上资源包括系统时钟、外设时钟、存储器,使能或禁止S110,系统配置可能不一样。
2.1 存储器映射和使用
2.2、应用信号—软件中断
S110使用软件中断用来通知应用程序事件的发生。
2.3、可编程的外设交互(PPI)
S110被使能,有些PPI信道和组是受限制的,下表列出了S110和应用程序对信道和组的分配。S110使能,所有的PPI信道和组都可以被应用程序使用。
2.4 SVC分配
2.5、中断延迟
中断从S110传到应用程序有个延迟,延迟大小如下表。
2.6、带宽
2.7、广播事件