第一篇nRF52系列处理器初步篇
第1章蓝牙5.0芯片nRF52系列开发绪论2
1.1芯片选型2
1.2开发工具的购买与选取3
1.3硬件电路设计5
1.3.1电路图设计和PCB绘制5
1.3.2蓝牙射频硬件配置5
1.3.3焊接加工5
1.4软件与功能开发6
1.4.1资料搜集学习6
1.4.2勘误表6
1.4.3实例开发7
1.5性能测试10
1.5.1RF测试10
1.5.2功耗测试11
1.5.3认证(可选)11
第2章蓝牙工程包SDK详解13
2.1SDK15.0开发包的基本结构13
2.1.1components文件包14
2.1.2config文件包15
2.1.3documentation文件包16
2.1.4examples文件包16
2.1.5external文件包和external_tools文件包18
2.1.6integration文件包和modules文件包19
2.2开发包外设硬件实例和蓝牙实例说明19
2.2.1外设硬件实例说明19
2.2.2蓝牙实例说明21
第3章开发环境Keil的使用及工程建立22
3.1开发环境Keil5简介22
3.2综合开发工具nRFgoStudio26
3.2.1nRFgoStudio工作界面介绍26
3.2.2nRFgoStudio使用简介28
3.3工程项目的建立30
3.4工程项目的仿真与调试40
3.4.1仿真工具的选择与设置40
3.4.2项目仿真错误定位42
第二篇蓝牙硬件篇
第4章nRF52832开发板硬件介绍50
4.1青云nRF52832EK主板介绍及电路详解50
4.1.1青云nRF52832EK主板介绍50
4.1.2青云nRF52832EK电路详解52
4.2配套模块电路详解59
4.2.1OLED显示模块60
4.2.2LIS3DH三轴加速度计模块61
4.2.3MPU6050六轴模块63
4.2.4DHT11温湿度模块64
第5章GPIO端口的应用65
5.1GPIO端口资源介绍65
5.2GPIO寄存器介绍67
5.3GPIO输出应用75
5.3.1点亮第一个LED灯75
5.3.2蜂鸣器的驱动78
5.4GPIO输入应用81
5.4.1GPIO输入扫描流程81
5.4.2机械按键输入扫描83
5.4.3电容触摸按键的应用86
第6章GPIOTE与外部中断89
6.1GPIOTE原理分析89
6.2GPIOTE输入事件的应用94
6.2.1GPIOTE事件寄存器的应用94
6.2.2GPIOTE事件组件的应用97
6.3GPIOTEPORT事件的应用101
6.4GPIOTE任务的应用105
6.4.1GPIOTE任务触发LED灯105
6.4.2组件方式的任务配置107
第7章串口UART和UARTE外设的应用110
7.1UART和UARTE原理110
7.1.1UART功能描述110
7.1.2UARTE功能介绍112
7.2应用实例编程115
7.2.1串口printf输出115
7.2.2串口输入与回环122
7.2.3UARTE模式串口中断124
第8章唯一ID与加密解密131
8.1唯一ID的概念131
8.1.1唯一ID的作用131
8.1.2读取唯一ID131
8.2唯一ID用于加密133
8.2.1TEA加密算法133
8.2.2唯一ID的加密与解密134
第9章内部温度传感器与随机数发生器138
9.1内部温度传感器138
9.1.1内部温度传感器寄存器138
9.1.2内部温度传感器的电气特性140
9.1.3内部温度传感器库函数编程141
9.2随机数发生器144
9.2.1随机数发生器原理144
9.2.2随机数发生器寄存器145
9.2.3随机数发生器库函数编程146
第10章定时器TIMER156
10.1原理分析156
10.2定时器定时功能159
10.2.1定时器寄存器编程159
10.2.2定时器组件的应用163
10.3定时器计数功能172
10.3.1计数器寄存器编程172
10.3.2计数器组件库编程174
第11章PPI模块的使用178
11.1原理分析178
11.1.1PPI的结构178
11.1.2fork从任务机制180
11.1.3group分组机制180
11.2PPI之GPIOTE的应用180
11.2.1寄存器编程180
11.2.2组件库函数介绍184
11.2.3组件库函数编程185
11.3fork从任务的应用189
11.3.1PPIfork从任务寄存器的应用189
11.3.2PPIfork从任务组件库的实现191
11.4PPI之group分组的应用193
11.4.1PPIgroup分组原理及寄存器的应用193
11.4.2PPIgroup组件库函数介绍197
11.4.3组件库工程编程198
第12章定时器和PPI的联合应用202
12.1PPI之定时器计数202
12.1.1PPI定时器计数寄存器编程202
12.1.2PPI定时器计数器库函数编程206
12.2定时器与PPI之软件PWM211
12.2.1软件PWM寄存器方式211
12.2.2软件PWM组件库编程215
12.3PPI之输入捕获220
12.3.1原理分析220
12.3.2应用实例编程222
第13章RTC实时计数器226
13.1原理分析226
13.1.1RTC的内部结构226
13.1.2RTC的事件227
13.2TICK事件与比较事件的应用231
13.3RTC组件库的使用238
13.3.1RTC组件库函数工程的搭建238
13.3.2RTC组件库函数API介绍240
13.3.3RTC组件库编程242
13.4RTC溢出事件246
13.4.1溢出事件寄存器的应用246
13.4.2组件库下溢出事件的应用248
第14章看门狗250
14.1原理分析250
14.1.1看门狗的作用250
14.1.2看门狗的运行250
14.2看门狗寄存器编程252
14.2.1看门狗寄存器介绍252
14.2.2看门狗寄存器的配置255
14.3看门狗库函数编程257
14.3.1看门狗库函数API介绍257
14.3.2看门狗库函数的配置259
第15章SAADC采集264
15.1SAADC原理分析264
15.1.1SAADC属性参数264
15.1.2工作模式267
15.2SAADC寄存器介绍268
15.3应用实例编写277
15.3.1ADC的单次采样277
15.3.2ADC的差分采样283
15.3.3EasyDMA的单缓冲中断采样285
15.3.4PPI启动双缓冲中断采样292
第16章PWM298
16.1PWM的基本原理298
16.1.1PWM模块的特征298
16.1.2PWM的计数模式298
16.1.3PWM的周期和占空比控制299
16.1.4EasyDMA解码器302
16.2PWM寄存器编程303
16.2.1PWM寄存器介绍303
16.2.2PWM寄存器向上计数方式编程311
16.2.3PWM寄存器向上向下计数方式编程313
16.3组件库函数编程314
16.4共用加载模式318
16.4.1简单回放318
16.4.2复杂回放321
16.4.3不重启回放324
16.5独立加载模式325
16.5.1非回调独立加载模式325
16.5.2中断回调独立加载模式327
16.6分组加载模式331
16.7波形加载模式333
16.8多序列复合驱动336
第17章I2C/TWI读/写应用340
17.1I2C/TWI总线原理分析340
17.1.1I2C/TWI基本概念340
17.1.2nRF52处理器I2C/TWI资源343
17.1.3I2C/TWI寄存器346
17.2I2C编程实例——驱动MPU6050353
17.2.1I2C/TWI组件库介绍353
17.2.2MPU6050介绍356
17.2.3I2C驱动MPU6050编程359
17.2.4堵塞模式和非堵塞模式366
17.2.5下载测试366
第18章SPI接口的应用368
18.1SPI总线介绍368
18.2nRF52832处理器SPI特点370
18.2.1SPI模块资源370
18.2.2SPI主机EasyDMA371
18.2.3低功耗372
18.2.4主模式引脚配置372
18.3SPI接口寄存器373
18.4SPI读/写W25Q16379
18.4.1硬件准备379
18.4.2SPI组件库介绍379
18.4.3应用实例编程382
18.4.4堵塞模式和非堵塞模式391
18.4.5实验现象391
第三篇外设应用综合篇
第19章外设综合实例394
19.1综合实例实现目标394
19.2时钟设计395
19.2.1RTC定时时钟395
19.2.2时钟初始化配置398
19.2.3OLED时钟显示及刷新401
19.3电池电量采集设计402
19.3.1SAADC初始化与PPI触发采集402
19.3.2电池电量OLED显示403
19.4工程搭建与程序测试404
19.4.1工程搭建404
19.4.2程序测试406
参考文献408