艾克姆科技
Nordic 多协议 Soc nRF52832
开发教程
[基于 Nordic 蓝牙低功耗/2.4GHz Soc-nRF52832]
艾克姆科技飞宇团队
[2017.2.2]
官方店铺:https://acmemcu.taobao.com
官方论坛:http://930ebbs.com
艾克姆科技原创发布
本文档技术支持负责人:强光手电
[本文档以艾克姆科技 IK-52832DK 开发套件为硬件平台,通过原理分析和实验程序讲解
以及实验演示,让读者以最短的时间掌握 nRF52832 的开发]
修订历史记录
Revision Records
日期
版本
编制
审核
说明
Date
Version
Written By
Checked By
Explanation
2017.2.2
A
强光手电
飞宇
初建
目录
第一章:开发板硬件描述 ............................................................................................................. 10
1. 功能特点 ................................................................................................................................. 10
2. 硬件原理 ................................................................................................................................. 10
nRF52832 特点 ....................................................................................................... 12
2.1.
电源 ......................................................................................................................... 13
2.2.
指示灯 ..................................................................................................................... 13
2.3.
按键和触摸按键 ..................................................................................................... 14
2.4.
蜂鸣器 ..................................................................................................................... 15
2.5.
电位器光敏检测 ..................................................................................................... 15
2.6.
红外接收 ................................................................................................................. 16
2.7.
显示模块接口 ......................................................................................................... 17
2.8.
Wifi 模块接口......................................................................................................... 17
2.9.
2.10. 温湿度和 PM2.5 检测模块接口 ............................................................................ 18
2.11. 运动传感器模块接口 ............................................................................................. 18
TF 卡和 NFC 天线接口 ......................................................................................... 19
2.12.
2.13. 调试接口 ................................................................................................................. 19
3. 开发板硬件连接 ..................................................................................................................... 21
第二章:开发工具 ......................................................................................................................... 22
1. 硬件设备 ................................................................................................................................. 22
2. 软件工具 ................................................................................................................................. 22
第三章:集成开发环境 ................................................................................................................. 23
1. MDK 集成开发环境 .............................................................................................................. 23
新建工程模板 ......................................................................................................... 23
1.1.1. 规划工程目录 ................................................................................................. 23
1.1.2. 新建工程 ......................................................................................................... 24
配置工程 ................................................................................................................. 34
1.2.
编译工程 ................................................................................................................. 39
1.3.
程序烧写 ................................................................................................................. 40
1.4.
MDK 常用配置 ...................................................................................................... 40
1.5.
IAR 集成开发环境 ................................................................................................................. 42
安装 SDK ................................................................................................................ 42
2.1.
使用 IAR ................................................................................................................. 43
2.2.
第四章:蓝牙 BLE 技术简介 ....................................................................................................... 46
1. 蓝牙技术的起源 ..................................................................................................................... 46
2. 什么是蓝牙低功耗(BLE) ...................................................................................................... 46
蓝牙 4.0 和 BLE 的关系 ........................................................................................ 47
蓝牙的三种标志和设备类型 ................................................................................. 47
BLE 的体系结构 .................................................................................................... 49
BLE 广播、事件和连接事件 ................................................................................ 53
2.4.1. 广播事件 ......................................................................................................... 53
2.4.2. 扫描事件 ......................................................................................................... 54
2.4.3. 连接事件 ......................................................................................................... 54
2.1.
2.2.
2.3.
2.4.
1.1.
2.
7.1.
7.2.
2.1.
2.2.
3.1.
4.1.
4.2.
4.3.
第五章:由 BLE 工程模板入手 ................................................................................................... 56
1. 程序架构 ................................................................................................................................. 56
2. 定时器初始化 ......................................................................................................................... 57
原理和初始化方式 ................................................................................................. 57
应用定时器相关函数 ............................................................................................. 60
3. 板卡外设初始化 ..................................................................................................................... 63
按键/指示灯初始化 ................................................................................................ 65
bsp_init 代码分析 ........................................................................................... 65
3.1.1.
3.1.2. 消除按键抖动 ................................................................................................. 72
BSP 相关函数 ................................................................................................. 76
3.1.3.
4. BLE 协议栈初始化 ................................................................................................................ 79
初始化协议栈处理模块 ......................................................................................... 79
使能 SoftDevice ...................................................................................................... 82
注册事件派发函数 ................................................................................................. 85
5. 配对管理器 ............................................................................................................................. 87
6. GAP 层初始化 ........................................................................................................................ 88
7. 广播配置 ................................................................................................................................. 96
广播参数配置 ......................................................................................................... 96
7.1.1. 广播配置相关的函数 ..................................................................................... 96
gap_params_init 函数中广播相关的内容 ..................................................... 97
7.1.2.
7.1.3. 广播初始化函数 advertising_init ................................................................... 98
7.1.4. 启动广播 ....................................................................................................... 103
广播数据包报文结构 ........................................................................................... 104
8. 连接参数更新 ....................................................................................................................... 110
第六章:创建一个应用定时器 ................................................................................................... 113
1. 创建步骤 ............................................................................................................................... 113
编写各个步骤的代码 ........................................................................................... 114
下载验证 ............................................................................................................... 115
第七章:由 BLE 工程模板实现蓝牙串口透传 ......................................................................... 116
1. 实现步骤 ............................................................................................................................... 116
2. 需要掌握的理论知识 ........................................................................................................... 117
Profile、Service 和 Characteristic ........................................................................ 117
3. 编写各个步骤的代码 ........................................................................................................... 120
加入串口相关程序 ............................................................................................... 120
3.1.1. 加入串口组件 ............................................................................................... 120
3.1.2. 头文件包含 ................................................................................................... 122
3.1.3. 修改 SDK 配置文件 ..................................................................................... 124
3.1.4. 编写串口代码 ............................................................................................... 125
加入服务和特征 ................................................................................................... 128
3.2.1. 加入流程 ....................................................................................................... 128
3.2.2. 声明服务结构体 ........................................................................................... 130
3.2.3. 初始化服务 ................................................................................................... 131
3.2.4. 向协议栈中写入服务的 UUID .................................................................... 132
3.2.5. 添加服务 ....................................................................................................... 135
1.1.
1.2.
2.1.
3.1.
3.2.
3.3.
3.4.
1.1.
1.2.
1.3.
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
3.2.6. 向服务中添加特征 ....................................................................................... 136
Nus 事件处理 ....................................................................................................... 141
发送通知 (传输数据) .......................................................................................... 142
4. 下载验证 ............................................................................................................................... 144
第八章:FLASH 数据存储 ......................................................................................................... 154
1. 裸机 FLASH 读写 ................................................................................................................ 154
操作步骤 ............................................................................................................... 155
代码分析 ............................................................................................................... 156
下载测试 ............................................................................................................... 159
2. BLE 程序中 FLASH 操作 ................................................................................................... 160
FDS 概述 .............................................................................................................. 160
FDS 功能 .............................................................................................................. 161
2.2.1. 记录的操作 ................................................................................................... 161
2.2.2. 记录的配置项目 ........................................................................................... 163
记录存储格式 ....................................................................................................... 166
重要的 API 函数 .................................................................................................. 167
应用步骤 ............................................................................................................... 173
实例编程演练 ....................................................................................................... 173
2.6.1. 添加文件到工程 ........................................................................................... 173
2.6.2. 添加头文件包含 ........................................................................................... 174
2.6.3. 启用 FDS ...................................................................................................... 176
2.6.4. 编写 FDS 功能代码 ..................................................................................... 176
2.6.5. 下载验证 ....................................................................................................... 183
第九章:GPIO 任务和事件(GPIOTE) ........................................................................................ 185
1. GPIOTE 原理 ....................................................................................................................... 185
nRF52832 寄存器类型 ......................................................................................... 185
GPIOTE 功能 ....................................................................................................... 185
引脚 Tasks 和 Events ............................................................................................ 186
PORT 事件 ............................................................................................................ 186
相关寄存器 ........................................................................................................... 187
2. GPIOTE 驱动库的使用 ....................................................................................................... 189
任务/事件通道的分配 .......................................................................................... 189
重要的 API 函数 .................................................................................................. 189
应用步骤 ............................................................................................................... 193
GPIOTE 输出................................................................................................ 193
GPIOTE 输入................................................................................................ 195
3. 实例编程演练 ....................................................................................................................... 196
GPIOTE 输出 ....................................................................................................... 196
3.1.1. 添加文件到工程 ........................................................................................... 197
3.1.2. 添加头文件包含路径 ................................................................................... 197
3.1.3. 编写代码 ....................................................................................................... 199
3.1.4. 下载验证 ....................................................................................................... 200
GPIOTE 输入 ....................................................................................................... 201
3.2.1. 添加文件及头文件 ....................................................................................... 201
1.1.
1.2.
1.3.
1.4.
1.5.
2.1.
2.2.
2.3.
3.1.
3.2.
2.3.1.
2.3.2.
3.3.
5.1.
5.2.
3.2.2. 编写代码 ....................................................................................................... 202
3.2.3. 下载验证 ....................................................................................................... 203
GPIOTE 唤醒系统................................................................................................ 205
3.3.1. 添加文件及头文件 ....................................................................................... 206
3.3.2. 编写代码 ....................................................................................................... 206
3.3.3. 下载验证 ....................................................................................................... 208
第十章:定时/计数器 Timer ....................................................................................................... 210
1. Timer 原理 ............................................................................................................................ 210
2. 相关寄存器 ........................................................................................................................... 213
3. TIMER 应用步骤 ................................................................................................................. 214
4. 重要的 API 函数 .................................................................................................................. 216
5. 实例编程演练 ....................................................................................................................... 219
定时驱动 LED 闪烁 ............................................................................................. 219
5.1.1. 添加文件到工程 ........................................................................................... 219
5.1.2. 添加头文件包含路径 ................................................................................... 220
5.1.3. 编写代码 ....................................................................................................... 222
5.1.4. 下载验证 ....................................................................................................... 223
捕获外部脉冲 ....................................................................................................... 223
5.2.1. 添加文件及头文件 ....................................................................................... 224
5.2.2. 编写代码 ....................................................................................................... 224
5.2.3. 下载验证 ....................................................................................................... 226
第十一章:可编程外设互联 PPI ............................................................................................... 228
1. PPI 原理 ................................................................................................................................ 228
什么是 PPI ............................................................................................................ 228
预编程 PPI 通道 ................................................................................................... 230
PPI 组 .................................................................................................................... 230
2. 相关寄存器 ........................................................................................................................... 231
3. PPI 应用步骤 ........................................................................................................................ 234
4. 重要的库函数 ....................................................................................................................... 240
5. 实例编程演练 ....................................................................................................................... 243
PPI 驱动 LED-寄存器方式 .................................................................................. 243
5.1.1. 试验内容和功能 ........................................................................................... 243
5.1.2. 编写代码 ....................................................................................................... 244
5.1.3. 下载验证 ....................................................................................................... 246
次级任务端点使用-寄存器方式.......................................................................... 246
5.2.1. 试验内容和功能 ........................................................................................... 246
5.2.2. 编写代码 ....................................................................................................... 247
5.2.3. 下载验证 ....................................................................................................... 249
PPI 驱动 LED-库函数方式 .................................................................................. 249
5.3.1. 添加文件到工程 ........................................................................................... 249
5.3.2. 添加头文件包含路径 ................................................................................... 249
5.3.3. 编写代码 ....................................................................................................... 250
5.3.4. 下载验证 ....................................................................................................... 251
次级任务端点使用-库函数方式.......................................................................... 251
1.1.
1.2.
1.3.
5.4.
5.1.
5.2.
5.3.
5.1.
5.2.
5.3.
5.4.
2.1.
2.2.
1.1.
1.2.
1.3.
5.4.1. 试验内容 ....................................................................................................... 251
5.4.2. 编写代码 ....................................................................................................... 251
5.4.3. 下载验证 ....................................................................................................... 252
第十二章:SAADC 原理及应用 ................................................................................................ 253
1. ADC 原理 ............................................................................................................................. 253
主要特点 ............................................................................................................... 253
功能概述 ............................................................................................................... 254
工作模式 ............................................................................................................... 255
2. SAADC 应用步骤 ................................................................................................................ 256
SAADC 库文件 .................................................................................................... 256
SAADC 驱动的应用 ............................................................................................ 257
3. 相关寄存器 ........................................................................................................................... 258
4. 重要的库函数 ....................................................................................................................... 268
5. 实例编程演练 ....................................................................................................................... 273
堵塞模式-单端输入采样 ..................................................................................... 273
5.1.1. 试验内容 ....................................................................................................... 273
5.1.2. 添加文件到工程 ........................................................................................... 273
5.1.3. 添加头文件包含路径 ................................................................................... 274
5.1.4. 编写代码 ....................................................................................................... 275
5.1.5. 下载验证 ....................................................................................................... 279
堵塞模式-差分输入采样 ..................................................................................... 280
5.2.1. 试验内容 ....................................................................................................... 280
5.2.2. 编写代码 ....................................................................................................... 280
5.2.3. 下载验证 ....................................................................................................... 282
非堵塞模式-单缓存采样 ..................................................................................... 284
5.3.1. 试验内容 ....................................................................................................... 284
5.3.2. 编写代码 ....................................................................................................... 284
5.3.3. 下载验证 ....................................................................................................... 288
非堵塞模式-双缓存采样 ..................................................................................... 289
5.4.1. 试验内容 ....................................................................................................... 289
5.4.2. 编写代码 ....................................................................................................... 290
5.4.3. 下载验证 ....................................................................................................... 293
电池电压采样 ....................................................................................................... 293
5.5.1. 试验内容 ....................................................................................................... 293
5.5.2. 编写代码 ....................................................................................................... 294
5.5.3. 下载验证 ....................................................................................................... 295
门限监测 ............................................................................................................... 295
5.6.1. 试验内容 ....................................................................................................... 295
5.6.2. 编写代码 ....................................................................................................... 295
5.6.3. 下载验证 ....................................................................................................... 298
BLE 多通道采样-应用定时器 ............................................................................. 300
5.7.1. 试验内容 ....................................................................................................... 300
5.7.2. 编写代码 ....................................................................................................... 300
5.7.3. 下载验证 ....................................................................................................... 304
5.5.
5.6.
5.7.
5.8.
4.1.
4.2.
5.1.
1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.
BLE 多通道采样-PPI ........................................................................................... 305
5.8.1. 试验内容 ....................................................................................................... 305
5.8.2. 编写代码 ....................................................................................................... 306
5.8.3. 下载验证 ....................................................................................................... 308
第十三章:RTC 和时钟日历 ...................................................................................................... 309
1. RTC 功能描述 ...................................................................................................................... 309
原理框图和时钟源 ............................................................................................... 309
COUNTER 寄存器 ............................................................................................... 310
RTC 溢出 .............................................................................................................. 311
TICK 事件 ............................................................................................................ 312
RTC 事件控制 ...................................................................................................... 312
RTC 比较事件 ...................................................................................................... 312
读计数值(COUNTER 寄存器) ............................................................................ 315
2. 相关寄存器 ........................................................................................................................... 315
3. 重要的库函数 ....................................................................................................................... 321
4. RTC 库应用步骤 .................................................................................................................. 325
RTC 库文件 .......................................................................................................... 325
应用步骤 ............................................................................................................... 325
5. 实例编程演练 ....................................................................................................................... 330
RTC TICK 事件 .................................................................................................... 330
5.1.1. 试验内容 ....................................................................................................... 330
5.1.2. 添加文件到工程 ........................................................................................... 330
5.1.3. 添加头文件包含路径 ................................................................................... 331
5.1.4. 编写代码 ....................................................................................................... 332
5.1.5. 下载验证 ....................................................................................................... 334
RTC 比较事件实现定时 ..................................................................................... 334
5.2.1. 试验内容 ....................................................................................................... 334
5.2.2. 编写代码 ....................................................................................................... 335
5.2.3. 下载验证 ....................................................................................................... 336
5.2.4. 试验扩展 ....................................................................................................... 337
RTC 溢出事件 ..................................................................................................... 339
5.3.1. 试验内容 ....................................................................................................... 339
5.3.2. 编写代码 ....................................................................................................... 339
5.3.3. 下载验证 ....................................................................................................... 341
RTC 实现时钟日历(OLED 显示) ....................................................................... 341
5.4.1. 试验内容 ....................................................................................................... 341
5.4.2. 试验原理 ....................................................................................................... 341
5.4.3. 编写代码 ....................................................................................................... 342
5.4.4. 下载验证 ....................................................................................................... 345
蓝牙 BLE 下实现时钟日历(OLED 显示) ........................................................... 346
5.5.1. 试验内容 ....................................................................................................... 346
5.5.2. 试验原理 ....................................................................................................... 347
5.5.3. 编写代码 ....................................................................................................... 347
5.5.4. 下载验证 ....................................................................................................... 350
5.2.
5.3.
5.4.
5.5.