![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
蓝牙开发
随风258741
这个作者很懒,什么都没留下…
展开
-
低功耗蓝牙4.0BLE编程-nrf51822开发(1)
为了省钱,也为了提高手动能力,只买了块核心板,仿真器用的是旧的jinkv7,自己搭扩展板,DIY就这样开始了。 买这块之前做了些调查,最终选定了nrf51822,功耗低,性能强,开发难度小,虽然比TI的贵一点,但cortex-m0毕竟不错,带256K flash,16K Ram,可以做很多应用开发。(1)2.4GHZ多协议无线射频(2)32位ARM Cortex M0转载 2016-01-12 17:53:52 · 976 阅读 · 0 评论 -
BLE-NRF51822教程3-sdk程序框架剖析
51822的官方SDK其实是没有框架依耐性的。什么叫框架,比如TI的BLE SDK中就有一个操作系统抽象层(OSAL)他是一个轮训的调度。你需要按照他的方式去创建任务等等。而51822的SDK本质上只是提供了各种调用接口,比如开启初始化协议栈,初始化一些硬件功能模块,开始广播,发起链接等等。这些接口怎么用完全取决于自己。不过一般固件开发都是一些类似的流程各种资源的初始化,51822也不例外。所转载 2016-02-01 11:29:21 · 1576 阅读 · 0 评论 -
BLE-NRF51822教程4-串口BLE解析
本讲逐行代码解析官方串口BLE例程demoPS: 基于SDK5.1 主要分一下几个部分:1 :Main函数的整体注释2 :函数单独解析。3 :接收串口数据并发送给对端设备4 :接收手机数据并通过串口打印 Ps :第一和第二部分我在教程工程初始化流程中已经详细说明这里直接复制过来,做了一些修改以及添加了关于添加服务和添加特征值的讲解,如果之前看过可以直接看下 2函转载 2016-02-01 11:39:21 · 7493 阅读 · 0 评论 -
BLE-NRF51822教程5-静态密码设置
这一讲介绍配对的一些相关理论知识,并且介绍如何实现”静态密码”的设定程序是基于sdk9.0 下的 uart demo另外 测试使用的手机app是 IOS下的lightblue。这里准确的说法应该是叫配对码,而不是密码。输入这个这个配对码是配对过程中可选的一部分介绍如何设置静态密码前先介绍一下配对的相关知识(后面都直接叫密码,而不是配对码)转载 2016-02-01 11:48:00 · 2582 阅读 · 0 评论 -
BLE-NRF51822教程8-动态广播
本讲接收如何实现动态广播。教程基于 9.0 sdk中的 Uart例子。实现动态广播的方法是 广播->停止广播->修改参数->重启广播所以我们通过一个定时器来周期性的 关闭广播然后再修改广播数据之后再开启广播。Sdk 9.0中的广播搞了好几个模式,做的有点麻烦,所以我对他做了比较大的改动。首先 在main.c中 中的advertising_init函数转载 2016-02-01 12:00:25 · 1659 阅读 · 0 评论 -
BLE-NRF51822教程9—动态密码(配对码)
本讲教程也是在 sdk中的的uart例子 的基础上修改实现动态密码(其实是配对码)的功能。Uart例子在以下目录中XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart 关于配对的一些理论知识在静态密码教程中有介绍。这里就不再赘述。 因为是动态密码,板子上没有转载 2016-02-01 12:01:44 · 2815 阅读 · 0 评论 -
BLE-NRF51822教程10-手机动态修改设备名
该教程讲解如何实现用手机来动态修改设备名,达到手机连接设备后修改设备名称,然后断开连接再扫描能够看到新的设备名。 教程基于sdk9.0 下的uartdemo,如下目录中xxx\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart Nordic的协议栈实现中默认都会有一个转载 2016-02-01 12:02:58 · 3582 阅读 · 2 评论 -
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-02-01 11:57:30 · 3534 阅读 · 0 评论 -
BLE-NRF51822教程2-工程初始化流程
代码讲解基于资料包里配套的 sdk5.1版本中的串口demo。高版本的sdk基本都是差不多的。代码在路径xxxxx\keil\ARM\Device\Nordic\nrf51822\Board\pca10001\s110\experimental中一:main函数整体注释:int main(void){ //初始化LED指示灯,用来指示广播和连接状态转载 2016-02-01 11:16:09 · 3371 阅读 · 0 评论 -
BLE-NRF51822教程6-创建一个自己的服务
首先打开 sdk 下的工程模板 在以下路径中XXXX \Keil_v5 \ARM \Pack \NordicSemiconductor \nRF_Examples \9.0.0 \ble_peri pheral \ble_app_template \pca10028 \s110 \arm5打开工程后,可以发现该模板的框架和 一般工程例子基本是一样的。区别 就是有一些函数内部并未实现,比如转载 2016-02-01 11:50:59 · 7068 阅读 · 4 评论 -
BLE-NRF51822教程1-常用概念
1:主机如何知道外围设备的存在: a: 外围设备广播信息。b: 主机主动扫描,外围设备回复扫描响应以告知主机。2:可发现模式:由广播中的flag标志设置。 a: 有限可发现模式:广播间隔快,但最大只能持续最多30s b: 通用可发现模式:广播间隔相对较慢,广播没有最大还需时间限制。3:广播通道:BLE中有3个广播信道和37个数据信道。每转载 2016-02-01 11:10:00 · 1860 阅读 · 1 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析
代码实例:Board/pca100001/06 s110/experimental/ble_app_uart。 实现的功能是从uart口发送数据至另一个蓝牙串口,或是从蓝牙读取数据通过uart打印出数据。[cpp] view plaincopyint main(void) { // Initialize转载 2016-01-12 18:11:03 · 1185 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(2)
首先看的示例是心率计一个示例程序: \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_hrs\arm。 打开工程前需要下载蓝牙协议栈S110 nRF51822 SoftDevice(s110_nrf51822_6.0.0_softdevice.hex)到板子中,这个手册上有说明。 首先看的是main.c中的m转载 2016-01-12 17:56:52 · 1206 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(3)
蓝牙协议栈nrf51822开发中,蓝牙协议栈和应用开发是分开的。(1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支持(包含MITM和OOB配对);(2)应用部分和协议栈部分内存空间隔离;(3)采用异步事件驱动程序架构;(4)没用使用RTOS,可以方便移植转载 2016-01-12 18:04:27 · 833 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(4)
蓝牙是一种短距离的通讯方式,它设计的意图是取代电子便携设备之间的有线电缆连接。蓝牙的主要特性是健壮性、低功耗、成本低,它工作于免费的2.4无线传输频段。 蓝牙有两种技术系统:基本速率Basic Rate (BR)和低功耗 Low Energy (LE)。这两种系统都包括了设备发现、建立连接和连接机制。BR系统包括了Enhanced Data Rate (EDR) Alternate转载 2016-01-12 18:05:10 · 804 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(5)-链路层
链路层定义设备处于状态机中五种状态的一种:(1)旁路状态; 处于此状态下的设备不发送或接收数据,处于其它状态下都可以转到此状态。(2)广告状态; 处于此状态的设备发送广播包或者监听、响应广播包。可由旁路状态进入广告状态。(3)扫描状态; 扫描状态监听广播信道上的处于广播状态发送的广播包。扫描状态也由旁路状态进入。(4)发起转载 2016-01-12 18:06:02 · 794 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(6)-Battery Service
Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈。 如果通过ble_bas_battery_level_update(),电池电量将会通知,Battery Service将发送事件到应用程序。(1)Battery Service事件类型[cpp] view plaincopy转载 2016-01-12 18:07:06 · 1255 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(7)-SDP服务发现协议
SDP的全称是Service Discovery Protocol,中文是服务发现协议。SDP(服务发现协议)是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。在蓝牙系统中.客户只有通过服务发现协议才能获得设备信息、服务信息及服务特征,才能在此基础上建立相互间的连接。通过这个协议,应用程序可以发现哪些服务可用以及服务的特性是什么。 SDP服务器-客户端模型:转载 2016-01-12 18:07:55 · 924 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(8)-GATT
The Generic Attribute Profile (GATT)使用属性定义一个服务框架,定义了服务和特性的过程和数据格式,包含发现、读取、写入、通知指示特性和配置特性广播。GATT配置文件设计用于应用程序和其它配置文件,客户端与服务器通讯时使用它。服务器包含了一系列的特性,GATT配置文件定义了怎么使用属性协议去发现、读取、写入、获得指示和配置特性广播。转载 2016-01-12 18:08:52 · 1024 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(9)
Android 4.3以后的系统自动支持蓝牙4.0规范的低功耗蓝牙(BLE)。在android4.3之前,蓝牙4.0支持是由手机厂家加入支持的,接口各异,导致开发一个支持蓝牙4.0程序支持市面上的手机很困难。从android 4.3以后,系统将统一接口,使得支持大部分手机成为可能。所以与手机或平板联机之前要确认是android 4.3及以上的系统。有些旧手机,由于蓝牙硬件是支持BLE4.0,更新厂转载 2016-01-12 18:09:34 · 675 阅读 · 0 评论 -
低功耗蓝牙4.0BLE编程-nrf51822开发(10)-描述符
特性中的属性有两种:属性值或描述符。 支持通知或指示的特性中默认有一个描述符:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD)。它的UUID是0x2902。 添加描述符的函数是:[cpp] view plaincopyuint32_t转载 2016-01-12 18:10:15 · 1144 阅读 · 0 评论 -
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-02-01 11:51:51 · 5830 阅读 · 0 评论