艾克姆科技
nRF52810 开发指南-上册
[基于 Nordic 蓝牙低功耗/2.4GHz Soc-nRF52810]
艾克姆科技飞宇团队
[2019.4.20]
官方店铺:https://acmemcu.taobao.com
官方论坛:http://930ebbs.com
艾克姆科技原创发布
本文档技术支持负责人:强光手电
[本文档以艾克姆科技 IK-52810DK 开发套件为硬件平台,通过原理分析和实验程序讲解
以及实验演示,让读者以最短的时间掌握 nRF52810 的外设功能和使用。文档从无到有,
一步步讲解各个实验的硬件原理、软件编程,从新建最简单的裸机工程开始到实现各个
外设(UART、GPIOTE、定时器等等)的应用,每个例子都会说明以哪个实验为基础修
改,需要增加哪些文件以及头文件引用和包含]
目录
第一章:开发板硬件描述 ............................................................................................................. 14
1. 功能特点 ................................................................................................................................. 14
2. 硬件原理 ................................................................................................................................. 15
nRF52810 特点 ....................................................................................................... 16
2.1.
电源 ......................................................................................................................... 17
2.2.
指示灯 ..................................................................................................................... 17
2.3.
轻触按键和触摸按键 ............................................................................................. 17
2.4.
蜂鸣器 ..................................................................................................................... 19
2.5.
电位器检测 ............................................................................................................. 19
2.6.
红外接收 ................................................................................................................. 20
2.7.
USB 转 UART ........................................................................................................ 21
2.8.
I2S 音频模块接口(仅 nRF52832) .................................................................... 21
2.9.
2.10. 显示模块接口 ......................................................................................................... 21
2.11. Wifi 模块 ................................................................................................................ 22
NFC 天线接口(仅 nRF52832) .......................................................................... 23
2.12.
2.13. 温湿度和 PM2.5 检测模块接口 ............................................................................ 23
2.14. 运动传感器模块接口 ............................................................................................. 23
TF 卡座 ................................................................................................................... 24
2.15.
2.16. 调试接口 ................................................................................................................. 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
安装 nRF5x-Command-Line-Tools ........................................................................ 35
更新 JLINK 固件和“JLinkARM.dll” ................................................................... 38
手机端 APP 安装 ................................................................................................... 40
第四章:新建和配置裸机工程 ..................................................................................................... 41
1. SDK 库简介 ............................................................................................................................ 41
2. 新建和配置工程 ..................................................................................................................... 43
新建工程模板 ......................................................................................................... 43
2.1.1. 规划工程目录 ................................................................................................. 43
2.1.2. 建立目录、拷贝库文件 ................................................................................. 44
2.1.3. 新建工程 ......................................................................................................... 44
2.1.4. 添加需要的组件 ............................................................................................. 49
配置工程 ................................................................................................................. 52
2.3.
2.4.
2.5.
2.6.
2.1.
2.2.
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.2.1. 配置“Target”选项卡 ................................................................................... 52
2.2.2. 配置“Output”选项卡 .................................................................................. 53
2.2.3. 配置“C/C++”选项卡 .................................................................................. 53
2.2.4. 配置“Debug”选项卡 .................................................................................. 56
编写驱动 LED 代码 ............................................................................................... 57
2.3.1. 新建 main.c 文件并添加到工程。 ................................................................ 57
2.3.2. 引用头文件 ..................................................................................................... 58
2.3.3. 编写代码 ......................................................................................................... 58
编译工程 ................................................................................................................. 59
程序烧写 ................................................................................................................. 60
MDK 常用操作 ...................................................................................................... 60
第五章:程序下载 ......................................................................................................................... 64
1. 下载方式概述 ......................................................................................................................... 64
2. 方式 1:MDK 直接下载 ....................................................................................................... 64
下载裸机程序 ......................................................................................................... 64
下载 BLE 程序 ....................................................................................................... 65
2.2.1. 下载协议栈 ..................................................................................................... 65
2.2.2. 下载应用程序 ................................................................................................. 66
2.2.3. 全片擦除芯片 ................................................................................................. 67
本节常见问题 ......................................................................................................... 67
3. 方式 2:使用 J-Flash 下载 .................................................................................................... 69
J-Flash 简介 ............................................................................................................ 69
使用 J-Flash ............................................................................................................ 70
3.2.1. 启动 J-Flash .................................................................................................... 70
3.2.2. 配置工程 ......................................................................................................... 70
3.2.3. 擦除芯片 ......................................................................................................... 72
3.2.4. 烧写和运行程序 ............................................................................................. 72
3.2.5. 关闭 J-Flash .................................................................................................... 72
第六章:GPIO 输出驱动 LED ...................................................................................................... 73
1. 学习目的 ................................................................................................................................. 73
2. 硬件电路设计 ......................................................................................................................... 73
控制方式 ................................................................................................................. 74
LED 限流电阻的选取 ............................................................................................ 75
3. GPIO 输出驱动原理 .............................................................................................................. 76
功能描述 ................................................................................................................. 76
引脚的驱动能力 ..................................................................................................... 77
GPIO 应用注意事项 .............................................................................................. 78
4. 软件设计 ................................................................................................................................. 79
GPIO 配置 .............................................................................................................. 79
库函数的应用 ......................................................................................................... 83
驱动 LED 闪烁 ....................................................................................................... 86
4.3.1. 代码编写 ......................................................................................................... 87
4.3.2. 硬件连接 ......................................................................................................... 87
4.3.3. 实验步骤 ......................................................................................................... 88
3.1.
3.2.
3.3.
4.1.
4.2.
4.3.
2.1.
2.2.
2.3.
3.1.
3.2.
2.1.
2.2.
4.4.
4.1.
4.2.
4.3.
4.4.
3.1.
3.2.
实现流水灯 ............................................................................................................. 88
4.4.1. 代码编写 ......................................................................................................... 88
4.4.2. 硬件连接 ......................................................................................................... 92
4.4.3. 实验步骤 ......................................................................................................... 92
第七章:GPIO 输出驱动有源蜂鸣器 .......................................................................................... 93
1. 学习目的 ................................................................................................................................. 93
2. 硬件电路设计 ......................................................................................................................... 93
3. 软件设计 ................................................................................................................................. 94
GPIO 配置 .............................................................................................................. 94
驱动蜂鸣器鸣响实验 ............................................................................................. 94
3.2.1. 代码编写 ......................................................................................................... 94
3.2.2. 硬件连接 ......................................................................................................... 95
3.2.3. 实验步骤 ......................................................................................................... 95
第八章:GPIO 输入按键检测 ...................................................................................................... 97
1. 学习目的 ................................................................................................................................. 97
2. 硬件电路设计 ......................................................................................................................... 97
2.1.1. 轻触按键 ......................................................................................................... 97
2.1.2. 触摸按键 ......................................................................................................... 98
2.1.3. 按键检测电路考虑因素 ................................................................................. 99
3. GPIO 输入检测原理 ............................................................................................................ 100
4. 软件设计 ............................................................................................................................... 101
GPIO 配置 ............................................................................................................ 101
库函数的应用 ....................................................................................................... 102
轻触按键检测实验 ............................................................................................... 105
4.3.1. 代码编写 ....................................................................................................... 105
4.3.2. 硬件连接 ....................................................................................................... 107
4.3.3. 实验步骤 ....................................................................................................... 108
触摸按键检测实验 ............................................................................................... 108
4.4.1. 代码编写 ....................................................................................................... 108
4.4.2. 硬件连接 ....................................................................................................... 109
4.4.3. 实验步骤 ....................................................................................................... 110
第九章:寄存器类型和外设资源共享 ....................................................................................... 111
1. 学习目的 ............................................................................................................................... 111
2. 寄存器类型 ........................................................................................................................... 111
3. 外设资源共享 ....................................................................................................................... 112
第十章:UART 和 UARTE ......................................................................................................... 114
1. 学习目的 ............................................................................................................................... 114
2. 硬件电路设计 ....................................................................................................................... 114
3. UART 原理 ........................................................................................................................... 115
功能描述 ............................................................................................................... 115
配置引脚 ............................................................................................................... 116
UART 发送 ........................................................................................................... 116
UART 接收 ........................................................................................................... 117
UART 挂起 ........................................................................................................... 118
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
5.1.
5.2.
5.3.
7.1.
7.2.
错误产生条件 ....................................................................................................... 118
奇偶校验 ............................................................................................................... 118
4. UART 寄存器 ....................................................................................................................... 118
5. UARTE 原理......................................................................................................................... 124
功能描述 ............................................................................................................... 124
UARTE 发送 ......................................................................................................... 125
UARTE 接收 ......................................................................................................... 126
6. UARTE 寄存器..................................................................................................................... 126
7. 软件设计 ............................................................................................................................... 131
库函数的应用 ....................................................................................................... 131
7.1.1. 串口初始化 ................................................................................................... 131
7.1.2. 串口事件处理 ............................................................................................... 133
7.1.3. 启用 UARTE ................................................................................................. 134
7.1.4. 发送和接收数据 ........................................................................................... 134
串口数据收发实验 ............................................................................................... 135
7.2.1. 添加需要的文件 ........................................................................................... 135
7.2.2. 头文件引用和路径设置 ............................................................................... 136
7.2.3. 工程配置 ....................................................................................................... 137
7.2.4. 代码编写 ....................................................................................................... 137
7.2.5. 硬件连接 ....................................................................................................... 139
7.2.6. 实验步骤 ....................................................................................................... 140
串口发送和接收事件实验 ................................................................................... 140
7.3.1. 代码编写 ....................................................................................................... 141
7.3.2. 硬件连接 ....................................................................................................... 142
7.3.3. 实验步骤 ....................................................................................................... 142
串口控制 LED 指示灯实验 ................................................................................. 142
7.4.1. 代码编写 ....................................................................................................... 142
7.4.2. 硬件连接 ....................................................................................................... 144
7.4.3. 实验步骤 ....................................................................................................... 144
第十一章:GPIO 任务和事件(GPIOTE) .................................................................................... 145
1. 学习目的 ............................................................................................................................... 145
2. GPIOTE 原理 ....................................................................................................................... 145
GPIOTE 功能 ....................................................................................................... 145
引脚任务和事件 ................................................................................................... 146
PORT 事件 ............................................................................................................ 146
3. GPIOTE 寄存器 ................................................................................................................... 147
4. 软件设计 ............................................................................................................................... 152
库函数的应用 ....................................................................................................... 152
GPIOTE 输出流程................................................................................................ 153
GPIOTE 输入流程................................................................................................ 157
GPIOTE 通道输出实验 ........................................................................................ 159
4.4.1. 添加需要的文件 ........................................................................................... 160
4.4.2. 头文件引用和路径设置 ............................................................................... 160
4.4.3. 工程配置 ....................................................................................................... 161
4.1.
4.2.
4.3.
4.4.
2.1.
2.2.
2.3.
7.3.
7.4.
4.5.
4.6.
4.4.4. 代码编写 ....................................................................................................... 161
4.4.5. 硬件连接 ....................................................................................................... 162
4.4.6. 实验步骤 ....................................................................................................... 163
GPIOTE 通道输入实验 ........................................................................................ 163
4.5.1. 代码编写 ....................................................................................................... 163
4.5.2. 硬件连接 ....................................................................................................... 165
4.5.3. 实验步骤 ....................................................................................................... 165
GPIOTE PORT 输入实验 ..................................................................................... 166
4.6.1. 代码编写 ....................................................................................................... 166
4.6.2. 硬件连接 ....................................................................................................... 170
4.6.3. 实验步骤 ....................................................................................................... 170
第十二章:定时/计数器 .............................................................................................................. 171
1. 学习目的 ............................................................................................................................... 171
2. TIMER 原理 ......................................................................................................................... 171
3. TIMER 寄存器 ..................................................................................................................... 174
4. 软件设计 ............................................................................................................................... 179
库函数的应用(定时器) ........................................................................................ 179
4.1.1. 定时器驱动程序实例 ................................................................................... 180
4.1.2. 定时器初始化 ............................................................................................... 181
4.1.3. 配置定时时间和 CC 通道............................................................................ 184
4.1.4. 启动/关闭定时器 .......................................................................................... 187
库函数的应用(计数器) ........................................................................................ 188
4.2.1. 计数模式时的初始化 ................................................................................... 188
4.2.2. 计数 ............................................................................................................... 189
4.2.3. 读取计数值 ................................................................................................... 189
定时实验 ............................................................................................................... 190
4.3.1. 添加需要的文件 ........................................................................................... 190
4.3.2. 头文件引用和路径设置 ............................................................................... 191
4.3.3. 工程配置 ....................................................................................................... 191
4.3.4. 代码编写 ....................................................................................................... 192
4.3.5. 硬件连接 ....................................................................................................... 194
4.3.6. 实验步骤 ....................................................................................................... 194
计数实验 ............................................................................................................... 195
4.4.1. 代码编写 ....................................................................................................... 195
4.4.2. 硬件连接 ....................................................................................................... 196
4.4.3. 实验步骤 ....................................................................................................... 196
第十三章:可编程外设互联 PPI ................................................................................................ 198
1. 学习目的 ............................................................................................................................... 198
2. PPI 原理 ................................................................................................................................ 198
什么是 PPI ............................................................................................................ 198
PPI 原理框图 ........................................................................................................ 199
预编程 PPI 通道 ................................................................................................... 200
PPI 组 .................................................................................................................... 200
3. PPI 寄存器 ............................................................................................................................ 201
2.1.
2.2.
2.3.
2.4.
4.2.
4.1.
4.3.
4.4.
4.1.
4.2.
4.3.
4.4.
4. 软件设计 ............................................................................................................................... 203
库函数的应用 ....................................................................................................... 203
4.1.1. 初始化 PPI 程序模块 ................................................................................... 204
4.1.2. 申请 PPI 通道 ............................................................................................... 204
4.1.3. 配置 PPI 通道的 EEP 和 TEP 及次级任务 ................................................. 205
4.1.4. 使能 PPI 通道 ............................................................................................... 207
4.1.5. 使用 PPI 通道组 ........................................................................................... 208
PPI 连接 GPIOTE 事件和任务实验 .................................................................... 210
4.2.1. 添加需要的文件 ........................................................................................... 210
4.2.2. 头文件引用和路径设置 ............................................................................... 210
4.2.3. 工程配置 ....................................................................................................... 211
4.2.4. 代码编写 ....................................................................................................... 212
4.2.5. 硬件连接 ....................................................................................................... 213
4.2.6. 实验步骤 ....................................................................................................... 214
PPI 次级任务实验 ................................................................................................ 215
4.3.1. 代码编写 ....................................................................................................... 215
4.3.2. 硬件连接 ....................................................................................................... 216
4.3.3. 实验步骤 ....................................................................................................... 216
PPI 组实验 ............................................................................................................ 217
4.4.1. 代码编写 ....................................................................................................... 217
4.4.2. 硬件连接 ....................................................................................................... 219
4.4.3. 实验步骤 ....................................................................................................... 219
第十四章:非易失性存储器控制器 NVMC .............................................................................. 221
1. 学习目的 ............................................................................................................................... 221
2. NVMC 原理 .......................................................................................................................... 221
3. NVMC 寄存器 ...................................................................................................................... 223
4. 软件设计 ............................................................................................................................... 225
库函数的应用(定时器) ........................................................................................ 225
4.1.1. 规划写入数据的 Flash 空间 ........................................................................ 226
4.1.2. 擦除页 ........................................................................................................... 226
4.1.3. 写 ................................................................................................................... 226
4.1.4. 读 ................................................................................................................... 227
Flash 读写实验 ..................................................................................................... 227
4.2.1. 添加需要的文件 ........................................................................................... 227
4.2.2. 头文件引用和路径设置 ............................................................................... 227
4.2.3. 代码编写 ....................................................................................................... 228
4.2.4. 硬件连接 ....................................................................................................... 229
4.2.5. 实验步骤 ....................................................................................................... 230
第十五章:看门狗定时器 ........................................................................................................... 231
1. 学习目的 ............................................................................................................................... 231
2. 看门狗定时器原理 ............................................................................................................... 231
3. WDT 寄存器 ........................................................................................................................ 232
4. 软件设计 ............................................................................................................................... 235
库函数的应用 ....................................................................................................... 235
4.1.
4.1.
4.2.
4.2.
4.1.
2.1.
2.2.
4.1.1. 看门狗定时器初始化 ................................................................................... 235
4.1.2. 申请喂狗通道 ............................................................................................... 237
4.1.3. 启动看门狗 ................................................................................................... 238
4.1.4. 喂狗 ............................................................................................................... 238
看门狗实验 ........................................................................................................... 238
4.2.1. 添加需要的文件 ........................................................................................... 239
4.2.2. 头文件引用和路径设置 ............................................................................... 239
4.2.3. 工程配置 ....................................................................................................... 240
4.2.4. 代码编写 ....................................................................................................... 240
4.2.5. 硬件连接 ....................................................................................................... 242
4.2.6. 实验步骤 ....................................................................................................... 243
第十六章:模数转换 SAADC .................................................................................................... 244
1. 学习目的 ............................................................................................................................... 244
2. SAADC 原理 ........................................................................................................................ 244
主要特征 ............................................................................................................... 244
工作模式 ............................................................................................................... 246
3. SAADC 寄存器 .................................................................................................................... 247
4. 软件设计 ............................................................................................................................... 258
库函数的应用 ....................................................................................................... 258
4.1.1. 初始化 SAADC ............................................................................................ 259
4.1.2. 配置 SAADC 通道 ....................................................................................... 261
4.1.3. 配置缓存 ....................................................................................................... 264
4.1.4. 启动 SAADC 采样 ....................................................................................... 267
堵塞模式-单端输入采样实验 ............................................................................. 267
4.2.1. 添加需要的文件 ........................................................................................... 268
4.2.2. 头文件引用和路径设置 ............................................................................... 268
4.2.3. 工程配置 ....................................................................................................... 269
4.2.4. 代码编写 ....................................................................................................... 269
4.2.5. 硬件连接 ....................................................................................................... 271
4.2.6. 实验步骤 ....................................................................................................... 271
堵塞模式-差分输入采样实验 ............................................................................. 272
4.3.1. 代码编写 ....................................................................................................... 272
4.3.2. 硬件连接 ....................................................................................................... 273
4.3.3. 实验步骤 ....................................................................................................... 273
非堵塞模式-双缓存采样实验 ............................................................................. 273
4.4.1. 代码编写 ....................................................................................................... 273
4.4.2. 硬件连接 ....................................................................................................... 276
4.4.3. 实验步骤 ....................................................................................................... 276
电池电压采样实验 ............................................................................................... 277
4.5.1. 代码编写 ....................................................................................................... 277
4.5.2. 硬件连接 ....................................................................................................... 278
4.5.3. 实验步骤 ....................................................................................................... 278
门限监测实验 ....................................................................................................... 278
4.6.1. 代码编写 ....................................................................................................... 279
4.2.
4.3.
4.4.
4.5.
4.6.