艾克姆科技
nRF52832 开发指南-上册
[基于 Nordic 蓝牙低功耗/2.4GHz Soc-nRF52832]
艾克姆科技飞宇团队
[2018.9.30]
官方店铺:https://acmemcu.taobao.com
官方论坛:http://930ebbs.com
艾克姆科技原创发布
本文档技术支持负责人:强光手电
[本文档以艾克姆科技 IK-52832DK 开发套件为硬件平台,通过原理分析和实验程序讲解
以及实验演示,让读者以最短的时间掌握 nRF52832 的外设功能和使用。文档从无到有,
一步步讲解各个实验的硬件原理、软件编程,从新建最简单的裸机工程开始到实现各个
外设(UART、GPIOTE、定时器等等)的应用,每个例子都会说明以哪个实验为基础修
改,需要增加哪些文件以及头文件引用和包含]
目录
第一章:开发板硬件描述 ............................................................................................................. 14
1. 功能特点 ................................................................................................................................. 14
2. 硬件原理 ................................................................................................................................. 15
nRF52832 特点 ....................................................................................................... 16
2.1.
电源 ......................................................................................................................... 17
2.2.
指示灯 ..................................................................................................................... 17
2.3.
轻触按键和触摸按键 ............................................................................................. 18
2.4.
蜂鸣器 ..................................................................................................................... 19
2.5.
电位器检测 ............................................................................................................. 19
2.6.
红外接收 ................................................................................................................. 20
2.7.
USB 转 UART ........................................................................................................ 21
2.8.
I2S 音频模块接口 .................................................................................................. 21
2.9.
2.10. 显示模块接口 ......................................................................................................... 21
2.11. Wifi 模块和 NFC 天线接口 ................................................................................... 22
2.12. 温湿度和 PM2.5 检测模块接口 ............................................................................ 23
2.13. 运动传感器模块接口 ............................................................................................. 23
TF 卡座 ................................................................................................................... 24
2.14.
2.15. 调试接口 ................................................................................................................. 24
3. 开发板硬件连接 ..................................................................................................................... 25
第二章:开发工具 ......................................................................................................................... 27
1. 硬件设备 ................................................................................................................................. 27
2. 软件工具 ................................................................................................................................. 27
第三章:搭建开发环境 ................................................................................................................. 28
1. 需要的工具软件 ..................................................................................................................... 28
2. 搭建开发环境 ......................................................................................................................... 28
安装串口驱动 ......................................................................................................... 28
安装 MDK5.23 ....................................................................................................... 29
Keil μVision 简介 ........................................................................................... 29
2.2.1.
2.2.2. MDK5.23 安装步骤 ....................................................................................... 29
安装 pack ................................................................................................................ 33
安装 nRFgo Studio ................................................................................................. 35
安装 JLINK 驱动 .................................................................................................... 41
手机端 APP 安装 ................................................................................................... 44
第四章:新建和配置裸机工程 ..................................................................................................... 46
1. SDK 库简介 ............................................................................................................................ 46
2. 新建和配置工程 ..................................................................................................................... 47
新建工程模板 ......................................................................................................... 48
2.1.1. 规划工程目录 ................................................................................................. 48
2.1.2. 建立目录、拷贝库文件 ................................................................................. 48
2.1.3. 新建工程 ......................................................................................................... 49
2.1.4. 添加需要的组件 ............................................................................................. 53
配置工程 ................................................................................................................. 56
2.2.1. 配置“Target”选项卡 ................................................................................... 56
2.3.
2.4.
2.5.
2.6.
2.1.
2.2.
2.1.
2.2.
2.1.
2.2.
2.3.
3.1.
3.2.
2.4.
2.5.
2.6.
2.2.2. 配置“Output”选项卡 .................................................................................. 57
2.2.3. 配置“C/C++”选项卡 .................................................................................. 58
2.2.4. 配置“Debug”选项卡 .................................................................................. 61
编写驱动 LED 代码 ............................................................................................... 63
2.3.1. 新建 main.c 文件并添加到工程。 ................................................................ 63
2.3.2. 引用头文件 ..................................................................................................... 64
2.3.3. 编写代码 ......................................................................................................... 64
编译工程 ................................................................................................................. 65
程序烧写 ................................................................................................................. 66
MDK 常用操作 ...................................................................................................... 66
第五章:程序下载 ......................................................................................................................... 70
1. 下载方式概述 ......................................................................................................................... 70
2. 方式 1:MDK 直接下载 ....................................................................................................... 70
下载裸机程序 ......................................................................................................... 70
下载 BLE 程序 ....................................................................................................... 71
2.2.1. 下载协议栈 ..................................................................................................... 71
2.2.2. 下载应用程序 ................................................................................................. 72
2.2.3. 全片擦除芯片 ................................................................................................. 73
本节常见问题 ......................................................................................................... 73
3. 方式 2:使用 J-Flash 下载 .................................................................................................... 75
J-Flash 简介 ............................................................................................................ 75
使用 J-Flash ............................................................................................................ 76
3.2.1. 启动 J-Flash .................................................................................................... 76
3.2.2. 配置工程 ......................................................................................................... 77
3.2.3. 擦除芯片 ......................................................................................................... 78
3.2.4. 烧写和运行程序 ............................................................................................. 79
3.2.5. 关闭 J-Flash .................................................................................................... 79
4. 方式 3:nRFgo Studio 下载 .................................................................................................. 79
下载裸机程序 ......................................................................................................... 79
下载 BLE 程序 ....................................................................................................... 80
4.2.1. 下载协议栈 ..................................................................................................... 80
4.2.2. 下载应用程序 ................................................................................................. 81
4.2.3. 擦除芯片 ......................................................................................................... 82
第六章:GPIO 输出驱动 LED ...................................................................................................... 83
1. 学习目的 ................................................................................................................................. 83
2. 硬件电路设计 ......................................................................................................................... 83
控制方式 ................................................................................................................. 84
LED 限流电阻的选取 ............................................................................................ 85
3. GPIO 输出驱动原理 .............................................................................................................. 86
功能描述 ................................................................................................................. 86
引脚的驱动能力 ..................................................................................................... 87
GPIO 应用注意事项 .............................................................................................. 88
4. 软件设计 ................................................................................................................................. 89
GPIO 配置 .............................................................................................................. 89
3.1.
3.2.
3.3.
4.1.
4.2.
2.1.
2.2.
4.1.
2.3.
4.2.
4.3.
4.4.
3.1.
3.2.
库函数的应用 ......................................................................................................... 93
驱动 LED 闪烁 ....................................................................................................... 97
4.3.1. 代码编写 ......................................................................................................... 97
4.3.2. 硬件连接 ......................................................................................................... 98
4.3.3. 实验步骤 ......................................................................................................... 98
实现流水灯 ............................................................................................................. 98
4.4.1. 代码编写 ......................................................................................................... 99
4.4.2. 硬件连接 ....................................................................................................... 102
4.4.3. 实验步骤 ....................................................................................................... 102
第七章:GPIO 输出驱动有源蜂鸣器 ........................................................................................ 104
1. 学习目的 ............................................................................................................................... 104
2. 硬件电路设计 ....................................................................................................................... 104
3. 软件设计 ............................................................................................................................... 105
GPIO 配置 ............................................................................................................ 105
驱动蜂鸣器鸣响实验 ........................................................................................... 105
3.2.1. 代码编写 ....................................................................................................... 105
3.2.2. 硬件连接 ....................................................................................................... 106
3.2.3. 实验步骤 ....................................................................................................... 106
第八章:GPIO 输入按键检测 .................................................................................................... 108
1. 学习目的 ............................................................................................................................... 108
2. 硬件电路设计 ....................................................................................................................... 108
2.1.1. 轻触按键 ....................................................................................................... 108
2.1.2. 触摸按键 ....................................................................................................... 109
2.1.3. 按键检测电路考虑因素 ............................................................................... 110
3. GPIO 输入检测原理 ............................................................................................................ 111
4. 软件设计 ............................................................................................................................... 112
GPIO 配置 ............................................................................................................ 112
库函数的应用 ....................................................................................................... 113
轻触按键检测实验 ............................................................................................... 116
4.3.1. 代码编写 ....................................................................................................... 116
4.3.2. 硬件连接 ....................................................................................................... 118
4.3.3. 实验步骤 ....................................................................................................... 119
触摸按键检测实验 ............................................................................................... 119
4.4.1. 代码编写 ....................................................................................................... 119
4.4.2. 硬件连接 ....................................................................................................... 120
4.4.3. 实验步骤 ....................................................................................................... 121
第九章:寄存器类型和外设资源共享 ....................................................................................... 122
1. 学习目的 ............................................................................................................................... 122
2. 寄存器类型 ........................................................................................................................... 122
3. 外设资源共享 ....................................................................................................................... 123
第十章:UART 和 UARTE ......................................................................................................... 126
1. 学习目的 ............................................................................................................................... 126
2. 硬件电路设计 ....................................................................................................................... 126
3. UART 原理 ........................................................................................................................... 127
4.1.
4.2.
4.3.
4.4.
5.1.
5.2.
5.3.
7.1.
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
功能描述 ............................................................................................................... 127
配置引脚 ............................................................................................................... 128
UART 发送 ........................................................................................................... 128
UART 接收 ........................................................................................................... 129
UART 挂起 ........................................................................................................... 130
错误产生条件 ....................................................................................................... 130
奇偶校验 ............................................................................................................... 130
4. UART 寄存器 ....................................................................................................................... 130
5. UARTE 原理......................................................................................................................... 136
功能描述 ............................................................................................................... 136
UARTE 发送 ......................................................................................................... 137
UARTE 接收 ......................................................................................................... 138
6. UARTE 寄存器..................................................................................................................... 138
7. 软件设计 ............................................................................................................................... 143
库函数的应用 ....................................................................................................... 143
7.1.1. 串口初始化 ................................................................................................... 143
7.1.2. 串口事件处理 ............................................................................................... 145
7.1.3. 启用 UARTE ................................................................................................. 146
7.1.4. 发送和接收数据 ........................................................................................... 147
串口数据收发实验 ............................................................................................... 147
7.2.1. 添加需要的文件 ........................................................................................... 147
7.2.2. 头文件引用和路径设置 ............................................................................... 148
7.2.3. 工程配置 ....................................................................................................... 149
7.2.4. 代码编写 ....................................................................................................... 149
7.2.5. 硬件连接 ....................................................................................................... 151
7.2.6. 实验步骤 ....................................................................................................... 152
串口发送和接收事件实验 ................................................................................... 152
7.3.1. 代码编写 ....................................................................................................... 153
7.3.2. 硬件连接 ....................................................................................................... 154
7.3.3. 实验步骤 ....................................................................................................... 154
串口控制 LED 指示灯实验 ................................................................................. 154
7.4.1. 代码编写 ....................................................................................................... 154
7.4.2. 硬件连接 ....................................................................................................... 156
7.4.3. 实验步骤 ....................................................................................................... 156
第十一章:GPIO 任务和事件(GPIOTE) .................................................................................... 157
1. 学习目的 ............................................................................................................................... 157
2. GPIOTE 原理 ....................................................................................................................... 157
GPIOTE 功能 ....................................................................................................... 157
引脚任务和事件 ................................................................................................... 158
PORT 事件 ............................................................................................................ 159
3. GPIOTE 寄存器 ................................................................................................................... 159
4. 软件设计 ............................................................................................................................... 164
库函数的应用 ....................................................................................................... 164
GPIOTE 输出流程................................................................................................ 165
2.1.
2.2.
2.3.
4.1.
4.2.
7.2.
7.3.
7.4.
4.5.
4.6.
4.1.
4.3.
4.4.
GPIOTE 输入流程................................................................................................ 170
GPIOTE 通道输出实验 ........................................................................................ 172
4.4.1. 添加需要的文件 ........................................................................................... 172
4.4.2. 头文件引用和路径设置 ............................................................................... 172
4.4.3. 工程配置 ....................................................................................................... 173
4.4.4. 代码编写 ....................................................................................................... 174
4.4.5. 硬件连接 ....................................................................................................... 175
4.4.6. 实验步骤 ....................................................................................................... 175
GPIOTE 通道输入实验 ........................................................................................ 176
4.5.1. 代码编写 ....................................................................................................... 176
4.5.2. 硬件连接 ....................................................................................................... 177
4.5.3. 实验步骤 ....................................................................................................... 178
GPIOTE PORT 输入实验 ..................................................................................... 179
4.6.1. 代码编写 ....................................................................................................... 179
4.6.2. 硬件连接 ....................................................................................................... 182
4.6.3. 实验步骤 ....................................................................................................... 183
第十二章:定时/计数器 .............................................................................................................. 183
1. 学习目的 ............................................................................................................................... 184
2. TIMER 原理 ......................................................................................................................... 184
3. TIMER 寄存器 ..................................................................................................................... 187
4. 软件设计 ............................................................................................................................... 192
库函数的应用(定时器) ........................................................................................ 192
4.1.1. 定时器驱动程序实例 ................................................................................... 193
4.1.2. 定时器初始化 ............................................................................................... 194
4.1.3. 配置定时时间和 CC 通道............................................................................ 197
4.1.4. 启动/关闭定时器 .......................................................................................... 200
库函数的应用(计数器) ........................................................................................ 201
4.2.1. 计数模式时的初始化 ................................................................................... 201
4.2.2. 计数 ............................................................................................................... 202
4.2.3. 读取计数值 ................................................................................................... 202
定时实验 ............................................................................................................... 203
4.3.1. 添加需要的文件 ........................................................................................... 204
4.3.2. 头文件引用和路径设置 ............................................................................... 204
4.3.3. 工程配置 ....................................................................................................... 205
4.3.4. 代码编写 ....................................................................................................... 205
4.3.5. 硬件连接 ....................................................................................................... 207
4.3.6. 实验步骤 ....................................................................................................... 207
计数实验 ............................................................................................................... 208
4.4.1. 代码编写 ....................................................................................................... 208
4.4.2. 硬件连接 ....................................................................................................... 209
4.4.3. 实验步骤 ....................................................................................................... 209
第十三章:可编程外设互联 PPI ................................................................................................ 211
1. 学习目的 ............................................................................................................................... 211
2. PPI 原理 ................................................................................................................................ 211
4.2.
4.3.
4.4.
4.1.
4.2.
4.3.
4.4.
2.1.
2.2.
2.3.
2.4.
什么是 PPI ............................................................................................................ 211
PPI 原理框图 ........................................................................................................ 212
预编程 PPI 通道 ................................................................................................... 213
PPI 组 .................................................................................................................... 213
3. PPI 寄存器 ............................................................................................................................ 214
4. 软件设计 ............................................................................................................................... 217
库函数的应用 ....................................................................................................... 217
4.1.1. 初始化 PPI 程序模块 ................................................................................... 217
4.1.2. 申请 PPI 通道 ............................................................................................... 218
4.1.3. 配置 PPI 通道的 EEP 和 TEP 及次级任务 ................................................. 218
4.1.4. 使能 PPI 通道 ............................................................................................... 221
4.1.5. 使用 PPI 通道组 ........................................................................................... 221
PPI 连接 GPIOTE 事件和任务实验 .................................................................... 223
4.2.1. 添加需要的文件 ........................................................................................... 224
4.2.2. 头文件引用和路径设置 ............................................................................... 224
4.2.3. 工程配置 ....................................................................................................... 225
4.2.4. 代码编写 ....................................................................................................... 225
4.2.5. 硬件连接 ....................................................................................................... 227
4.2.6. 实验步骤 ....................................................................................................... 227
PPI 次级任务实验 ................................................................................................ 228
4.3.1. 代码编写 ....................................................................................................... 228
4.3.2. 硬件连接 ....................................................................................................... 229
4.3.3. 实验步骤 ....................................................................................................... 229
PPI 组实验 ............................................................................................................ 230
4.4.1. 代码编写 ....................................................................................................... 230
4.4.2. 硬件连接 ....................................................................................................... 232
4.4.3. 实验步骤 ....................................................................................................... 233
第十四章:非易失性存储器控制器 NVMC .............................................................................. 234
1. 学习目的 ............................................................................................................................... 234
2. NVMC 原理 .......................................................................................................................... 234
3. NVMC 寄存器 ...................................................................................................................... 236
4. 软件设计 ............................................................................................................................... 238
库函数的应用(定时器) ........................................................................................ 238
4.1.1. 规划写入数据的 Flash 空间 ........................................................................ 239
4.1.2. 擦除页 ........................................................................................................... 239
4.1.3. 写 ................................................................................................................... 239
4.1.4. 读 ................................................................................................................... 240
Flash 读写实验 ..................................................................................................... 240
4.2.1. 添加需要的文件 ........................................................................................... 240
4.2.2. 头文件引用和路径设置 ............................................................................... 240
4.2.3. 代码编写 ....................................................................................................... 241
4.2.4. 硬件连接 ....................................................................................................... 242
4.2.5. 实验步骤 ....................................................................................................... 243
第十五章:看门狗定时器 ........................................................................................................... 244
4.1.
4.2.
4.1.
4.2.
2.1.
2.2.
1. 学习目的 ............................................................................................................................... 244
2. 看门狗定时器原理 ............................................................................................................... 244
3. WDT 寄存器 ........................................................................................................................ 245
4. 软件设计 ............................................................................................................................... 248
库函数的应用 ....................................................................................................... 248
4.1.1. 看门狗定时器初始化 ................................................................................... 248
4.1.2. 申请喂狗通道 ............................................................................................... 250
4.1.3. 启动看门狗 ................................................................................................... 251
4.1.4. 喂狗 ............................................................................................................... 251
看门狗实验 ........................................................................................................... 251
4.2.1. 添加需要的文件 ........................................................................................... 252
4.2.2. 头文件引用和路径设置 ............................................................................... 252
4.2.3. 工程配置 ....................................................................................................... 253
4.2.4. 代码编写 ....................................................................................................... 253
4.2.5. 硬件连接 ....................................................................................................... 255
4.2.6. 实验步骤 ....................................................................................................... 256
第十六章:模数转换 SAADC .................................................................................................... 257
1. 学习目的 ............................................................................................................................... 257
2. SAADC 原理 ........................................................................................................................ 257
主要特征 ............................................................................................................... 257
工作模式 ............................................................................................................... 259
3. SAADC 寄存器 .................................................................................................................... 260
4. 软件设计 ............................................................................................................................... 271
库函数的应用 ....................................................................................................... 271
4.1.1. 初始化 SAADC ............................................................................................ 272
4.1.2. 配置 SAADC 通道 ....................................................................................... 274
4.1.3. 配置缓存 ....................................................................................................... 277
4.1.4. 启动 SAADC 采样 ....................................................................................... 280
堵塞模式-单端输入采样实验 ............................................................................. 280
4.2.1. 添加需要的文件 ........................................................................................... 281
4.2.2. 头文件引用和路径设置 ............................................................................... 281
4.2.3. 工程配置 ....................................................................................................... 282
4.2.4. 代码编写 ....................................................................................................... 282
4.2.5. 硬件连接 ....................................................................................................... 284
4.2.6. 实验步骤 ....................................................................................................... 284
堵塞模式-差分输入采样实验 ............................................................................. 285
4.3.1. 代码编写 ....................................................................................................... 285
4.3.2. 硬件连接 ....................................................................................................... 286
4.3.3. 实验步骤 ....................................................................................................... 286
非堵塞模式-双缓存采样实验 ............................................................................. 286
4.4.1. 代码编写 ....................................................................................................... 286
4.4.2. 硬件连接 ....................................................................................................... 289
4.4.3. 实验步骤 ....................................................................................................... 289
电池电压采样实验 ............................................................................................... 290
4.1.
4.2.
4.3.
4.4.
4.5.