logo资料库

nRF52832开发指南-下册(主机).pdf

第1页 / 共111页
第2页 / 共111页
第3页 / 共111页
第4页 / 共111页
第5页 / 共111页
第6页 / 共111页
第7页 / 共111页
第8页 / 共111页
资料共111页,剩余部分请下载后查看
第一章:新建BLE主机工程模板
1. 学习目的
2. 新建BLE工程模板
2.1. 规划工程目录
2.2. 建立工程存储目录、拷贝库文件
2.3. 新建工程
2.4. 添加需要的库文件
2.5. 新建main.c文件并添加到工程
2.6. 添加“sdk_config.h”文件
3. 配置工程
3.1. 配置“Target”选项卡
3.2. 配置“Output”选项卡
3.3. 配置“C/C++”选项卡
3.4. 配置“Linker”选项卡
3.5. 配置“Debug”选项卡
4. 协议栈“Target”
4.1. 新建协议栈“Target”
4.2. 配置“Output”选项卡
4.3. 配置“Debug”选项卡
4.4. 防止协议栈丢失
第二章:扫描
1. 学习目的
2. 扫描的基本概念
2.1. 主动扫描和被动扫描
2.1.1. 主动扫描和被动扫描区别
2.1.2. 被动扫描流程
2.1.3. 主动扫描流程
2.2. 扫描的参数
3. 程序编写
3.1. 定义扫描器实例
3.2. 扫描初始化
3.2.1. 定义扫描初始化结构体变量
3.2.2. 扫描参数的配置
3.2.3. 事件处理
3.2.4. 初始化
3.3. 启动和停止扫描
3.4. 扫描数据的处理
3.4.1. 获取从机设备地址和RSSI实验
3.4.2. 获取从机设备名称实验
3.4.3. 获取UUID实验
3.4.4. 其他数据
第三章:扫描信息过滤
1. 学习目的
2. 过滤原理
3. 程序编写
3.1. 添加过滤器
3.2. 使能过滤器
3.3. 过滤设备地址实验
3.3.1. 实验内容
3.3.2. 程序编写
3.3.3. 硬件连接
3.3.4. 测试步骤
3.4. 过滤设备名称实验
3.4.1. 实验内容
3.4.2. 程序编写
3.4.3. 硬件连接
3.4.4. 测试步骤
3.5. 过滤UUID实验
3.5.1. 实验内容
3.5.2. 程序编写
3.5.3. 硬件连接
3.5.4. 测试步骤
3.6. 过滤外观实验
3.6.1. 实验内容
3.6.2. 程序编写
3.6.3. 硬件连接
3.6.4. 测试步骤
第四章:发起连接
1. 学习目的
2. 建立连接流程
3. 程序编写
4. 硬件连接
5. 测试步骤
第五章:MTU交换
1. 学习目的
2. MTU交换原理
3. MTU交换执行流程
4. 程序编写
5. 硬件连接
6. 测试步骤
第六章:PHY更新
1. 学习目的
2. PHY概述
3. PHY更新流程
4. 程序编写
5. 硬件连接
6. 测试步骤
第七章:连接参数更新
1. 学习目的
2. 连接参数更新流程
3. 程序编写
4. 硬件连接
5. 测试步骤
第八章:实现串口透传主机
1. 学习目的
2. 发现服务
2.1. 发现所有首要服务
2.2. 按服务UUID发现服务
3. 发现特征
4. 发现描述符
5. 程序编写
5.1. 程序编写流程
5.2. 初始化DB发现模块
5.2.1. 定义DB发现模块实例
5.2.2. 初始化DB发现模块
5.2.3. 启动服务发现
5.3. 初始化串口透传客户端
5.3.1. 定义串口透传客户端实例
5.3.2. 初始化串口透传客户端
5.4. 发送数据
5.5. 使能Notify和接收数据
6. 硬件连接
7. 测试步骤
参考文献
艾克姆科技 nRF52832 开发指南-下册(主机) [基于 Nordic 蓝牙低功耗/2.4G Soc-nRF52832] 艾克姆科技飞宇团队 [2019.8.29] 官方店铺:https://acmemcu.taobao.com 官方论坛:http://930ebbs.com 版权所有:艾克姆科技,引用请注明出处 本文档技术支持负责人:强光手电 [本文档以艾克姆科技 IK-52832DK 开发板为硬件平台,基于 SDK15.3 的库,针对 BLE 主 机开发,从基本概念和新建 BLE 主机工程模板开始,一步步讲解蓝牙 BLE 主机程序框架 和流程:扫描、建立连接、MTU 交换、连接参数管理、PHY 更新、服务发现、使能通知、 接收通知以及读写从机特征值等]
修订历史记录 Revision Records 日期 版本 编制 审核 说明 Date Version Written By Checked By Explanation 2018.11.17 A 强光手电 彭震 以 SDK15.2 为基础编写。针对 BLE 开发。 2020.1.2 B 强光手电 彭震 修改为 SDK16.0 版本
第一章:新建 BLE 主机工程模板 1. 学习目的 1. 了解 BLE 主机工程的建立过程和配置项目。 2. 了解 BLE 主机工程需要加入哪些文件以及这些文件在工程中的分组。 3. 掌握利用 MDK 新建协议栈“Target”的方法,建立协议栈“Target”后,即可使用 MDK 下载协议栈 HEX 文件。(该方式不仅可以下载协议栈 HEX 文件,如需要使用 MDK 下 载其他 HEX 文件均可参考此方法)。  注:本章对应源码是“实验 1-1:BLE 主机工程模板”。 2. 新建 BLE 工程模板 2.1. 规划工程目录 和 BLE 从机新建工程一样,在建立工程之前,我们需要先考虑一下工程文件的组织, 也就是工程文件在计算机中的存放目录。清晰的工程目录既方便我们管理工程中的各个文件, 也方便日后的维护和移植,我们可以根据自己的习惯和喜好来建立自己的工程目录,但是也 不要太随意,文件目录应该一目了然,目录中各个文件夹的名字要能准确地指示里面的内容。 下面是我们建立工程时使用的工程目录,供大家参考,其中:  app 文件夹:用于存放 main.c 文件和我们自己编写的应用程序文件。  project 文件夹:  config 文件夹:用于存放工程配置向导(sdk_config.h)。  mdk5 文件夹:用于存放工程文件。  doc 文件夹:用于存放说明之类的文档。  components、integration、external、modules:从 SDK 中拷贝的库文件。 图 1-1:工程存放目录
2.2. 建立工程存储目录、拷贝库文件 按照上文中描述的工程目录新建用于存放工程各个模块的文件夹。先在 D 盘新建一个 名字为 ble_app_templete_c 的文件夹,然后在这个文件夹下面新建 3 个名字分别为 project、 doc 和 app 的文件夹,之后在 project 文件夹里面再新建 config 和 mdk5 两个文件夹,其中 config 文件夹用于存放工程配置向导(sdk_config.h),mdk5 文件夹用于存放工程文件。 之后,解压 SDK16.0,并将需要的库文件(包含 components、integration、modules 和 external 文件)拷贝到 BLE 工程模板目录下,如下图所示。 图 1-2:拷贝库文件 2.3. 新建工程 建立工程存放文件夹和拷贝库文件之后,我们就可以开始建立工程了。 工程名取为:ble_app_templete_c(这样取名是为了符合 Nordic 的 SDK 命名规则,其中 ble 表示这是一个 ble 的工程,app 表示应用程序,templete 表示模板,c 表示主机(Central: 中心设备),工程存放到 D 盘 ble_app_templete_c 文件夹。 1. 启动 MDK,点击【Project】,在弹出的下拉菜单中选择【New uVision Project】。 图 1-3:新建工程窗口 2. 设置工程名和工程保存路径,设置完成后点击【保存】。
 工程路径和工程名设置注意事项:工程路径和工程名不能包含汉字字符(虽然有些计算 机使用汉字字符没有问题,但是还是建议不要使用汉字字符,因为 MDK 对汉字字符的 支持比较差),同时路径不要过深,否则打开工程或仿真时可能会出现问题。 保存后,工程名称是:ble_app_templete_c,工程保存路径是:“„\ble_app_templete\pro 图 1-4:设置工程路径和工程名 ject\mdk5\ble_app_templete_c”。 3. 保存工程后,会弹出器件选择窗口,选择好器件后点击【确定】。 开发板上使用的 nRF52832 型号是:nRF52832-QFAA,所以,在下图的器件列表中需要 选择这个型号。选中器件后,右边的文本框中会显示该器件的描述信息。 4. 配置 RTE(Run-Time Environment),选择完成后点击【OK】。 图 1-5:选择器件
勾选两个必选项:CMSIS 中的 CORE 和 DEVICE 中的 StartUp。注意他们的版本号,SDK 版本不一样,对应的 CMSIS 和 StartUp 版本号可能会不一样,本文使用的 SDK 版本是 SDK16.0,SDK16.0 对应的 CORE 版本是 4.5.0,StartUp 版本是 8.27.1。 下图中,我们可以看到 CORE 的版本只能选择 5.2.0,StartUp 版本只能选择 8.27.1,这 是因为安装 MDK5.27 时会自动安装 5.2.0 的 CORE,而 MDK 新建工程时只会显示已安装的 最新的 CORE 和 StartUp 版本,所以,这里只能选择这两个版本。工程建立好了之后,我们 可以在工程配置中修改,以保持和 SDK16.0 一致,后面在工程配置章节会说明修改方法。 图 1-6:配置 RTE  注意事项:再次说明一下,新建工程配置 RTE 时,对于 CORE 和 StartUp,MDK 会自动选 择最新的版本,在这个步骤我们直接选择最新版本,后面配置工程时再根据需要修改为 自己需求的版本即可。 5. 管理 MDK 工程目录。 主要是添加组(也就是在 MDK 中添加文件夹)、修改组名称和软件包(pack),目的是为 了目录清晰,方便添加文件和管理文件。这里我们使用的工程目录是参考 SDK 里面的 BLE 工程的,这么做的好处是和 SDK 保持一致,以方便我们阅读 SDK 里面的参考代码。
图 1-7:整理工程目录 6. 管理软件包 点击下图中的图标,打开软件包管理窗口。 图 1-8:打开软件包管理窗口 打开的软件包管理窗口如下图所示,我们可以在这修改 StartUp 的版本和选择是否自动 使用安装的最新的软件包。  设置是否自动使用安装的最新的软件包: 勾选“Use latest versions of all installed Software Packs”即可打开自动使用安装的最新的 软件包,不勾选即可以使用指定的版本。  修改 StartUp 和 CORE 的版本: 如我们的计算机中安装了 Nordic nRF5x 几个版本的器件包,就会显示多个版本的器件 包,因为 SDK16.0 使用的 CMSISI 版本是 4.5,器件包版本是 8.27.1,所以我们要选择 CMSIS 的版本是 4.5,器件包的版本是 8.27.1,同时去掉自动选择最新版本的勾选,如下图所示。
图 1-9:修改 StartUp 和 CORE 的版本 这里设置下面 3 项,这么设置是为了让我们建立的工程使用确定的软件版本,这样就可 以避免因为自动引用最新版本引起问题的风险。  关闭自动使用最新的软件包功能。   CMSIS 版本设置为 4.5.0,并设置版本 fixed。 pack 版本设置为 8.27.1,并设置版本 fixed。 2.4. 添加需要的库文件 1. Board Definition 组 “Board Definition”组中需要加入板卡定义文件“boards.c”,该文件针对于具体板卡, 主要用来定义板卡的指示灯、按键、IO 输出电压(仅 nRF52832 具有此功能)以及常用的操 作函数。对于 IK-52832DK 开发板(兼容 Nordic 的 PCA10040),设计了 4 个指示灯和按键, 在“boards.c”文件中,我们可以看到这些按键和指示灯的初始化函数以及一些基本功能如 点亮、熄灭、翻转的操作函数。 表 1-1:“Board Definition”组中加入的文件 文件名 boards.c 路径 ..\..\components\boards 2. Board Support 组 “Board Support”组加入的是板卡支持包文件,即 BSP 文件,主要用于实现指示灯和 按键的驱动,如下表所示。 表 1-2:“Board Support”组中加入的文件 文件名 路径
分享到:
收藏