关闭

BLE-NRF51822教程18-overview

355人阅读 评论(0) 收藏 举报
分类:

蓝牙协议栈

nrf51822开发中,蓝牙协议栈和应用开发是分开的。

(1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支持(包含MITM和OOB配对);

(2)应用部分和协议栈部分内存空间隔离;

(3)采用异步事件驱动程序架构;

(4)没用使用RTOS,可以方便移植到任何RTOS;

(5)SoftDevice是使用标准的C语言编写的,它是已经被编译好的二进制文件,需要使用者将它烧写到芯片中。

(6)API包含了Generic Attribute Protocol (GATT), Generic Access Profile (GAP), Logical Link Control and Adaptation Protocol(L2CAP).



Radio Notification

Radio Notification功能用于SoftDevice向应用层通知ACTIVE和INACTIVE(nACTIVE)消息,这两个消息通过中断发出。

(1)ACTIVE信号在RADIO事件发生前发出;

(2)INACTIVE(nACTIVE)在RADIO事件结束前发出。


上图描述了时间的消耗,在tndist-tprep时间内数据发送到协议栈。

配置的各个时间应满足:tndist+tevent < tinterval.

下表描述了tndist和tinterval组合后可发送最大包个数的关系:



Bootloader

要使用bootloader,它的起始地址设置在UICR.BOOTADDR寄存器中。芯片复位后,SoftDevice检查UICR.BOOTADDR的值是否为0xffffffff,如果它不是,说明使用了bootloader,它使用bootloader起始地址处的中断向量表并启动程序。如果它是,则没有使用bootloader,程序跳转到应用程序中执行。



SoftDevice和应用层资源使用



可以看到,s110使用了80KB的ROM和8KB的RAM空间。


0
0
查看评论

BLE-NRF51822教程12-sdk中按键功能的使用

原文地址:BLE-NRF51822教程12-sdk中按键功能的使用 作者:ifndef 这一讲介绍一下sdk9.0中如何使用按键模块来实现自定义的按键功能。   关于sdk5.1中如何使用按键。在教程 剖析心率demo 教程中有关于按键...
  • qq_17270067
  • qq_17270067
  • 2017-10-12 09:24
  • 126

BLE-NRF51822教程19-Battery Service

转自:http://blog.csdn.net/xgbing     Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈。     如果通过ble_bas_battery_level...
  • qutiezhu
  • qutiezhu
  • 2016-08-29 23:59
  • 505

BLE-NRF51822教程16-BLE地址

本教程基于 sdk9+sd8.0 51822的 BLE的设备地址 可以通过如下函数函数来获得 地址的设置可以调用如下函数设置。 官方的demo工程中,都是没有主动调用过 sd_ble_gap_address_set函数来设置设备地址的。所以...
  • qutiezhu
  • qutiezhu
  • 2016-08-25 20:58
  • 1153

BLE-NRF51822教程-RSSI获取

当手机和设备连接上后,设备端可以通过获取RSSI来 在一定程度上判断手机离设备的相对距离的远近。   获取函数很简单直接调用sd_ble_gap_rssi_get 接口函数就行了,传入连接句柄和buff就能获取到 最近一次连接事件中的 接收信号强度。   调用该...
  • qutiezhu
  • qutiezhu
  • 2016-08-25 20:35
  • 653

BLE-NRF51822教程1-常用概念

1:主机如何知道外围设备的存在:   a: 外围设备广播信息。 b: 主机主动扫描,外围设备回复扫描响应以告知主机。 2:可发现模式:由广播中的flag标志设置。   a: 有限可发现模式:广播间隔快,但最大只能持续最多30s  ...
  • u011034150
  • u011034150
  • 2016-02-01 11:10
  • 1179

BLE-NRF51822教程8-动态广播

本讲接收如何实现动态广播。 教程基于 9.0 sdk中的 Uart例子。 实现动态广播的方法是  广播->停止广播->修改参数->重启广播 所以我们通过一个定时器来周期性的  关闭广播然后再修改广播数...
  • u011034150
  • u011034150
  • 2016-02-01 12:00
  • 778

BLE-NRF51822教程12-使用app_scheduler

该讲介绍sdk中 app_scheduler的使用。   看名字容易理解成是一个调度模块。不过这个模块的作用并不是用来调度程序的。其内部实现就是一个简单的队列,你将 一些数据和其对应的处理函数 放入队列。 然后在另一个地方会 取出这些数据并调用对应的处理函数 。   &...
  • qutiezhu
  • qutiezhu
  • 2016-08-25 20:54
  • 852

BLE-NRF51822教程5-静态密码设置

这一讲介绍配对的一些相关理论知识,并且介绍如何实现”静态密码”的设定 程序是基于sdk9.0 下的 uart demo 另外 测试使用的手机app是 IOS下的lightblue。 这里准确的说法应该是叫配对码,而不是密码。输入这个这个配对...
  • u011034150
  • u011034150
  • 2016-02-01 11:48
  • 1382

BLE-NRF51822教程9-动态广播

本讲接收如何实现动态广播。 教程基于 9.0 sdk中的 Uart例子。 实现动态广播的方法是  广播->停止广播->修改参数->重启广播 所以我们通过一个定时器来周期性的  关闭广播然后再修改广播数据之...
  • haveabank
  • haveabank
  • 2016-03-04 14:31
  • 1804

BLE-NRF51822教程15-adc和电池电量服务

51822的adc 模块图如下所示: 51822ADC有8个通道。AIN0-AIN7.这几个通道对应的引脚是固定的。可以在 51822的产品说明书中找到。 通过CONFIG寄存器 选择哪一个通道作为ADC的输入。 如上图,ADC不仅可以测量8个通道的输入进过比例转换后的模拟电压(...
  • qutiezhu
  • qutiezhu
  • 2016-08-25 20:57
  • 1512
    最新评论
    个人资料
    • 访问:71338次
    • 积分:213
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:111篇
    • 译文:1篇
    • 评论:3条