第1篇 概述及实验平台 3
第1章 低功耗蓝牙 3
1.1 蓝牙与物联网 3
1.2 低功耗蓝牙与“我的物联网” 5
1.3 低功耗蓝牙概述 8
1.4 低功耗蓝牙的特点 9
第2章 蓝牙4.0 BLE软件开发平台搭建 11
2.1 选择IAR 8051的理由 11
2.2 IAR 8051-8.3 的下载、安装和破解 12
2.2.1 下载IAR 8051-8.3 12
2.2.2 安装IAR 8051-8.3 13
2.2.3 破解IAR 8051-8.3 17
2.3 IAR 8051集成开发环境简介 21
2.4 IAR 8051 C/C++ 22
2.5 安装相关支持软件 22
第3章 蓝牙4.0 BLE硬件开发平台搭建 24
3.1 选择世嵌开发板的理由 24
3.2 世嵌最简配置开发套件 25
3.2.1 核心板WB2540MVA 26
3.2.2 底板WX2530 28
3.2.3 仿真器CCDBG 33
3.3 搭建实验硬件环境 35
3.4 创建工程——点亮LED 37
第2篇 基础实验 53
第4章 GPIO实验 53
4.1 LED实验:打开所有LED 53
4.1.1 任务要求及效果呈现 53
4.1.2 实验原理 54
4.1.3 实验步骤 56
4.1.4 源码清单 59
4.2 LED实验:让LED一闪一闪 59
4.2.1 任务要求及效果呈现 59
4.2.2 实验原理 60
4.2.3 源码清单 60
4.3 LED实验:实现流水灯 61
4.3.1 任务要求及效果呈现 61
4.3.2 实验原理 61
4.3.3 源码清单 62
4.4 蜂鸣器实验:驱动蜂鸣器发声 63
4.4.1 任务要求及效果呈现 63
4.4.2 实验原理 63
4.4.3 源码清单 65
4.5 按键实验:按键控制LED 66
4.5.1 任务要求及效果呈现 66
4.5.2 实验原理 66
4.5.3 源码清单 69
4.6 按键实验:按键控制LED(中断方式) 71
4.6.1 任务要求及效果呈现 71
4.6.2 实验原理 71
4.6.3 源码清单 74
第5章 定时器实验 77
5.1 定时器实验:流水灯(查询方式) 77
5.1.1 任务要求及效果呈现 77
5.1.2 实验原理 77
5.1.3 源码清单 81
5.2 定时器实验:流水灯(中断方式) 83
5.2.1 任务要求及效果呈现 83
5.2.2 实验原理 83
5.2.3 源码清单 84
5.3 定时器实验:PWM控制蜂鸣器 86
5.3.1 任务要求及效果呈现 86
5.3.2 实验原理 87
5.3.3 示波器与开发板连接 90
5.3.4 源码清单 91
第6章 串口实验 97
6.1 串口发送实验:打印欢迎信息 97
6.1.1 任务要求及效果呈现 97
6.1.2 实验原理 97
6.1.3 硬件连接 102
6.1.4 源码清单 103
6.2 串口发送:用printf打印系统信息 104
6.2.1 任务要求及效果呈现 104
6.2.2 实验原理 104
6.2.3 源码清单 106
6.3 串口收发:用C标准库输入/输出函数 107
6.3.1 任务要求及效果呈现 108
6.3.2 实验原理 108
6.3.3 源码清单 109
6.4 串口收发:中断方式 112
6.4.1 任务要求及效果呈现 113
6.4.2 实验原理 113
6.4.3 源码清单 116
第7章 ADC实验 119
7.1 测量芯片内部温度和供电电压 119
7.1.1 任务要求及效果呈现 119
7.1.2 实验原理 120
7.1.3 源码清单 124
7.2 测量光照强度 126
7.2.1 任务要求及效果呈现 127
7.2.2 实验原理 127
7.2.3 源码清单 128
第8章 睡眠与唤醒实验 130
8.1 外部中断唤醒 130
8.1.1 任务要求及效果呈现 130
8.1.2 实验原理 131
8.1.3 源码清单 134
8.2 定时器唤醒 139
8.2.1 任务要求及效果呈现 139
8.2.2 实验原理 140
8.2.3 源码清单 142
第9章 看门狗实验、Flash读写实验 144
9.1 看门狗实验 144
9.1.1 任务要求及效果呈现 144
9.1.2 实验原理 145
9.1.3 源码清单 146
9.2 Flash读写实验 147
9.2.1 任务要求及效果呈现 148
9.2.2 实验原理 148
9.2.3 源码清单 150
第10章 总线实验 153
10.1 单总线实验(DS18B20驱动) 153
10.1.1 任务要求及效果呈现 153
10.1.2 实验原理 154
10.1.3 源码清单 157
10.2 SPI总线实验(诺基亚5110液晶屏驱动) 161
10.2.1 任务要求及效果呈现 161
10.2.2 实验原理 163
10.2.3 源码清单 171
第3篇 BLE协议栈 197
第11章 蓝牙4.0协议栈基础 197
11.1 BLE协议栈整体构架 197
11.2 物理层 198
11.3 链路层 198
11.3.1 链路层状态机 198
11.3.2 链路层报文 200
11.3.3 设备发现 200
11.3.4 关于广播 202
11.3.5 连接过程 202
11.3.6 数据发送 205
11.3.7 管理连接 205
11.4 主机/控制器接口 206
11.4.1 物理接口与逻辑接口 206
11.4.2 控制器的配置 206
11.4.3 广播与观察 207
11.4.4 发起连接 208
11.4.5 连接管理 210
11.5 逻辑链路控制和适配协议 210
11.6 属性协议层、通用属性配置文件层 210
11.6.1 服务器与客户端模型 210
11.6.2 属性 211
11.6.3 属性的访问 213
11.6.4 服务 213
11.6.5 特性 215
11.6.6 属性协议 216
11.6.7 通用属性规范 218
11.7 安全管理层 220
11.7.1 安全概念 220
11.7.2 配对和绑定 221
11.7.3 数据签名 221
11.8 通用访问配置文件层 222
11.8.1 GAP角色 222
11.8.2 模式和规程 222
11.8.3 广播模式和观察规程 223
11.8.4 可发现性 223
11.8.5 可连接性 224
11.8.6 绑定 226
第12章 TI蓝牙协议栈开发平台 227
12.1 BLE协议栈开发平台配置 227
12.2 BLE协议栈软件开发框架 228
12.3 协议栈应用程序运行机理 229
12.3.1 开始应用程序:main() 230
12.3.2 初始化系统:osal_init_system() 231
12.3.3 启动系统:osal_start_system() 233
12.3.4 系统运行机理 235
12.4 OSAL操作系统抽象层 236
12.4.1 任务事件和事件处理 236
12.4.2 内存堆管理 237
12.4.3 OSAL消息 237
12.5 HAL硬件抽象层 238
12.6 BLE协议栈 238
12.6.1 通用访问配置文件 239
12.6.2 通用属性配置文件 240
12.6.3 GATT服务器应用程序 241
12.7 配置文件 242
12.7.1 GAP外围角色配置 242
12.7.2 GAP外围/广播多重角色配置 243
12.7.3 GAP Central Role Profile 243
12.7.4 GAP绑定管理器 244
12.7.5 简单属性配置文件 245
12.7.6 简单按键属性配置文件 252
12.7.7 设备信息服务 253
12.7.8 其他属性配置文件 253
第13章 蓝牙协议栈项目开发入门 254
13.1 简单BLE外围设备 254
13.1.1 项目配置 254
13.1.2 Linker Map文件 257
13.1.3 simpleBLEPeripheral.c源码分析 258
13.2 简单BLE中央设备 273
13.2.1 项目配置 273
13.2.2 Linker Map文件 273
13.2.3 simpleBLECentral.c源码分析 274
第14章 定制硬件抽象层 281
14.1 增加外设驱动 281
14.2 修改hal_board_cfg 282
14.3 修改hal_led 284
14.4 修改hal_key 284
14.5 增强UART功能 286
14.6 增加Nokia 5110液晶屏驱动 294
第4篇 BLE通信实验 297
第15章 简单的蓝牙通信 297
15.1 引言 297
15.2 搭建蓝牙通信实验平台 298
15.3 源码相关配置修改 299
15.3.1 修改Simple BLE Peripherial项目 299
15.3.2 修改Simple BLE Central项目 301
15.4 实验过程演示 302
15.5 实验:实现自动连接和LED连接状态指示 305
15.5.1 任务要求及效果呈现 305
15.5.2 实验原理 307
15.5.3 源码修改 308
第16章 我的蓝牙感知器 312
16.1 控制LED 312
16.1.1 任务要求及效果呈现 313
16.1.2 实现外围设备 315
16.1.3 实现中央设备 319
16.2 感知外设CPU温度 328
16.2.1 任务要求及效果呈现 329
16.2.2 实现外围设备 330
16.2.3 实现中央设备 333
16.3 感知外设环境温度 336
16.3.1 任务要求及效果呈现 337
16.3.2 实现外围设备 338
16.3.3 实现中央设备 342
16.4 感知外设光照强度 344
16.4.1 任务要求及效果呈现 344
16.4.2 实现外围设备 346
16.4.3 实现中央设备 350
16.5 定时获取外设光照强度 352
16.5.1 任务要求及效果呈现 352
16.5.2 实现外围设备 355
16.5.3 实现中央设备 362
16.6 无线串口透传 364
16.6.1 任务要求及效果呈现 364
16.6.2 NPI模块原理与串口透传 366
16.6.3 实现外围设备 368
16.6.4 实现中央设备 371
第17章 蓝牙USB 376
17.1 iSensorHid(蓝牙键鼠) 377
17.1.1 任务要求及效果呈现 377
17.1.2 实现外围设备 385
17.1.3 实现中央设备 390
17.2 iSensorCDC(蓝牙USB串口) 395
17.2.1 任务要求及效果呈现 396
17.2.2 实现外围设备 398
17.2.3 实现中央设备 398
17.3 iHostTest(网络处理机) 400
17.3.1 实现iHost Test 400
17.3.2 系统初始化 402
17.3.3 建立连接 403
17.3.4 测试GATT属性服务 405
第18章 蓝牙通信测试与支持 414
18.1 蓝牙协议分析仪 414
18.2 蓝牙支持 417
参考文献 420