NRF51822
文章平均质量分 86
qutiezhu
这个作者很懒,什么都没留下…
展开
-
BLE-NRF51822教程18-overview
转自:http://blog.csdn.net/xgbing蓝牙协议栈nrf51822开发中,蓝牙协议栈和应用开发是分开的。(1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支持(包含MITM和OOB配对);(2)应用部分和协议栈部分内存空间隔离;(3)采用异转载 2016-08-29 23:55:35 · 820 阅读 · 0 评论 -
BLE-NRF51822教程8-软件定时器的使用
本讲教程还是会基于 9.0 sdk中的uart例子。 在该例子上使用 sdk中自带的软件定时器来实现一些功能Uart例子在sdk 中如下目录XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart 首先 了解一下相关API转载 2016-08-25 20:48:59 · 1984 阅读 · 0 评论 -
BLE-NRF51822教程9-动态广播
本讲接收如何实现动态广播。教程基于 9.0 sdk中的 Uart例子。实现动态广播的方法是 广播->停止广播->修改参数->重启广播所以我们通过一个定时器来周期性的 关闭广播然后再修改广播数据之后再开启广播。Sdk 9.0中的广播搞了好几个模式,做的有点麻烦,所以我对他做了比较大的改动。首先 在main.c中 中的advertising_init函数转载 2016-08-25 20:50:23 · 1181 阅读 · 0 评论 -
BLE-NRF51822教程10—动态密码(配对码)
本讲教程也是在 sdk中的的uart例子 的基础上修改实现动态密码(其实是配对码)的功能。Uart例子在以下目录中XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart 关于配对的一些理论知识在静态密码教程中有介绍。这里就不再赘述。 因为是动态密码,板子上没有转载 2016-08-25 20:51:25 · 1022 阅读 · 0 评论 -
BLE-NRF51822教程11-手机动态修改设备名
该教程讲解如何实现用手机来动态修改设备名,达到手机连接设备后修改设备名称,然后断开连接再扫描能够看到新的设备名。 教程基于sdk9.0 下的uartdemo,如下目录中xxx\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart Nordic的协议栈实现中默认都会有一个转载 2016-08-25 20:53:31 · 538 阅读 · 0 评论 -
BLE-NRF51822教程12-使用app_scheduler
该讲介绍sdk中 app_scheduler的使用。 看名字容易理解成是一个调度模块。不过这个模块的作用并不是用来调度程序的。其内部实现就是一个简单的队列,你将 一些数据和其对应的处理函数 放入队列。然后在另一个地方会 取出这些数据并调用对应的处理函数 。 这个模块的核心作用就是用来将 中断上下文中的 处理过程转移的main上下文中。 以避免中断处理过程太长导致可能丢失转载 2016-08-25 20:54:30 · 3305 阅读 · 0 评论 -
BLE-NRF51822教程13-sdk中按键功能的使用
这一讲介绍一下sdk9.0中如何使用按键模块来实现自定义的按键功能。 关于sdk5.1中如何使用按键。在教程 剖析心率demo 教程中有关于按键的注册和按键事件发生后会如何回调自己注册的回调函数详细说明。 本讲教程也是在 sdk中的的uart例子 的基础上修改实现按键功能。Uart例子在以下目录中XXX\Keil_v5\ARM\Pack\NordicSemi转载 2016-08-25 20:56:00 · 2495 阅读 · 0 评论 -
BLE-NRF51822教程14-连接时触发配对
最近答疑碰到几次都提到 需要实现手机每次连接上设备后,立刻出发配对并要求输入密钥的功能。 这里就单独写一个教程供大家参考下。配对的目的是为了对链路进行加密。以提高蓝牙的传输安全。关于配对的一些相关知识在 静态密码/动态随机密码教程中有一些介绍。对于使用来说,理解一下配对相关流程就行了。这里额外说个问道比较多的配对和绑定区别的问题:关于配对和绑转载 2016-08-25 20:57:02 · 3839 阅读 · 0 评论 -
BLE-NRF51822教程15-adc和电池电量服务
51822的adc 模块图如下所示:51822ADC有8个通道。AIN0-AIN7.这几个通道对应的引脚是固定的。可以在 51822的产品说明书中找到。通过CONFIG寄存器 选择哪一个通道作为ADC的输入。如上图,ADC不仅可以测量8个通道的输入进过比例转换后的模拟电压(比如选择1/3,则实际adc转换的数据为外部输入电压的1/3),还可以测量 VDD/3和VDD*2/3的电压值转载 2016-08-25 20:57:55 · 3974 阅读 · 2 评论 -
BLE-NRF51822教程16-BLE地址
本教程基于 sdk9+sd8.051822的 BLE的设备地址 可以通过如下函数函数来获得地址的设置可以调用如下函数设置。官方的demo工程中,都是没有主动调用过 sd_ble_gap_address_set函数来设置设备地址的。所以 demo工程中使用的都是默认地址。这个默认地址就是 芯片出厂是设置的,出厂时烧写在FICR寄存器中的。所以蓝牙芯转载 2016-08-25 20:58:41 · 2413 阅读 · 0 评论 -
BLE-NRF51822教程17-DFU使用手机升级
演示的工程是[application] nRF51_SDK_10.0.0_dc26b5e\examples\ble_peripheral\ble_app_hrs\pca10028\s110_with_dfu[bootload] nRF51_SDK_10.0.0_dc26b5e\examples\dfu\bootloader\pca10028\dual_bank_bl转载 2016-08-25 21:25:49 · 2443 阅读 · 1 评论 -
BLE-NRF51822教程7-带协议栈工程中使用flash
本教程说明 如何在带协议栈的BLE工程中使用flash操作。教程基于sdk9.0的 uart工程xxx\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uartNordic的SDK将flash操作封装成了一个pstorage模块。 模块提供了很好用的flash操作接口。使用flash前需要调用 ps转载 2016-08-25 20:47:59 · 843 阅读 · 0 评论 -
BLE-NRF51822教程6-创建一个自己的服务
该教程基于 sdk9.0首先打开 sdk 下的工程模板 在以下路径中XXXX \Keil_v5 \ARM \Pack \NordicSemiconductor \nRF_Examples \9.0.0 \ble_peri pheral \ble_app_template \pca10028 \s110 \arm5打开工程后,可以发现该模板的框架和 一般工程例子基本是一样的。区别 就是有转载 2016-08-25 20:46:47 · 1051 阅读 · 0 评论 -
BLE-NRF51822教程19-Battery Service
转自:http://blog.csdn.net/xgbing Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈。 如果通过ble_bas_battery_level_update(),电池电量将会通知,Battery Service将发送事件到应用程序。(1)Battery Service事件类型转载 2016-08-29 23:59:14 · 1816 阅读 · 0 评论 -
服务发现过程分析
本讲主要针对 主从连接后主机如何在从机上找到自己需要的服务的过程。需要和 主从通信过程分析教程一起看。 服务查找过程就是主从连接后,主机需要在从机上查找所有的服务以及服务下面的特征值和描述符等信息。 不过Sdk中的主从通信例子因为是个 简单的主从点灯demo,所以服务查找过程中并不是搜寻从机上的所有服务,而是根据初始化时注册的要查找的服务来定向搜寻从机上的服务,已经其下面的特征值和描述符信转载 2016-08-25 20:32:02 · 1690 阅读 · 0 评论 -
BLE-NRF51822-实现简单扫描器
在sdk目录XXX:\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_central 下有官方提供的主从连接的demo.官方的demo中实现的是主机通过名字来判断 周围的设备是否是自己要寻找的设备,如果是就发起来接。 并且连接建立后可以继续保持侦听,一共可以连接8个设备。 连接上后,从机可以通过按键b转载 2016-08-25 20:32:58 · 2915 阅读 · 4 评论 -
nrf51822-主从通信分析1
建议看该教程前,先看一下 简单扫描器实现 教程讲解基于sdk目录下central中的两个例子。关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架。 Main函数中完成初始化, 从机的话就启动广播,主机就启动扫描。 之后都是基于事件驱动的方式将ble相关事件返回给上层app,并且再通过ble_evt_dispatch函数将事件分发给各个处理函数。如下图所示:转载 2016-08-25 20:33:46 · 3312 阅读 · 0 评论 -
nrf51822-主从通信分析2
解决第三个问题:如何使能从机上的特征值的 notify功能,使其能通过notify方式发送数据 使能从机的notify功能是通过写0x0001到从机的那个具有notify功能的特征值的CCCD描述符中来实现的。 既然要写那就需要先有服务发现过程,服务发现就是找到从机里我们需要的服务以及服务下面的 特征值,描述符等。 关于服务发现过程的具体讲解 参见 服务发现过程解析 教程。 因为转载 2016-08-25 20:34:54 · 2547 阅读 · 0 评论 -
BLE广播数据的抓包解析
前言:报文由数据字节组成同时是按比特传输的,这就免不了牵涉到字节序的问题。对于各个字节的传输,总是从最低位开始传输。如0x80是按00000001发送的,0x01是按10000000发送的。同时大多数字节域又是从低字节开始发送的。如0x010203发送序列为110000000100000010000000 之所以说大多数,是因为并不是所有的数据都会从低字节发转载 2016-08-25 20:38:38 · 2569 阅读 · 0 评论 -
BLE-NRF51822教程1-常用概念
1:主机如何知道外围设备的存在: 外围设备广播信息。主机主动扫描,外围设备回复扫描响应以告知主机。2:可发现模式:由广播中的flag标志设置。 有限可发现模式:广播间隔快,但最大只能持续最多30s 通用可发现模式:广播间隔相对较慢,广播没有最大还需时间限制。3:广播通道:BLE中有3个广播信道和转载 2016-08-25 20:39:37 · 819 阅读 · 0 评论 -
BLE-NRF51822教程2-工程初始化流程
代码讲解基于资料包里配套的 sdk5.1版本中的串口demo。高版本的sdk基本都是差不多的。代码在路径xxxxx\keil\ARM\Device\Nordic\nrf51822\Board\pca10001\s110\experimental中一:main函数整体注释:int main(void){//初始化LED指示灯,用来指示广播和连接状态leds转载 2016-08-25 20:40:42 · 1895 阅读 · 0 评论 -
BLE-NRF51822教程3-sdk程序框架剖析
本讲为框架介绍,不会牵涉到太多代码细节。 51822的官方SDK其实是没有框架依耐性的。什么叫框架,比如TI的BLE SDK中就有一个操作系统抽象层(OSAL)他是一个轮训的调度。你需要按照他的方式去创建任务等等。而51822的SDK本质上只是提供了各种调用接口,比如开启初始化协议栈,初始化一些硬件功能模块,开始广播,发起链接等等。这些接口怎么用完全取决于自己。不过一般固件开发都是一些转载 2016-08-25 20:44:21 · 1413 阅读 · 0 评论 -
BLE-NRF51822教程4-串口BLE解析
本讲逐行代码解析官方串口BLE例程demoPS: 基于SDK5.1 主要分一下几个部分:1 :Main函数的整体注释2 :函数单独解析。3 :接收串口数据并发送给对端设备4 :接收手机数据并通过串口打印 Ps :第一和第二部分我在教程工程初始化流程中已经详细说明这里直接复制过来,做了一些修改以及添加了关于添加服务和添加特征值的讲解,如果之前看过可以直接看下 2函转载 2016-08-25 20:45:19 · 853 阅读 · 0 评论 -
BLE-NRF51822教程5-静态密码设置
这一讲介绍配对的一些相关理论知识,并且介绍如何实现”静态密码”的设定程序是基于sdk9.0 下的 uart demo另外 测试使用的手机app是 IOS下的lightblue。这里准确的说法应该是叫配对码,而不是密码。输入这个这个配对码是配对过程中可选的一部分介绍如何设置静态密码前先介绍一下配对的相关知识(后面都直接叫密码,而不是配对码)转载 2016-08-25 20:46:10 · 538 阅读 · 0 评论