第1篇藍(lán)牙參數(shù)及安全
第1章藍(lán)牙MAC地址2
1.1藍(lán)牙BLE設(shè)備的MAC地址分類2
1.2公共設(shè)備地址(Public Device Address)3
1.3隨機(jī)設(shè)備地址(Random Device Address)3
1.3.1靜態(tài)設(shè)備地址(Static Device Address)4
1.3.2私有設(shè)備地址(Private Device Address)4
1.4nRF52832地址配置5
1.4.1MAC地址配置原理5
1.4.2API編程8
1.5本章小結(jié)9
第2章接收信號強(qiáng)度和藍(lán)牙發(fā)射功率10
2.1nRF52832藍(lán)牙BLE的RSSI獲取10
2.1.1BLE定時(shí)器配置11
2.1.2主函數(shù)編寫13
2.1.3應(yīng)用與調(diào)試13
2.2藍(lán)牙BLE的發(fā)射功率設(shè)置14
2.2.1發(fā)射功率控制14
2.2.2應(yīng)用與調(diào)試16
2.3本章小結(jié)17
第3章藍(lán)牙靜態(tài)密鑰和動(dòng)態(tài)密鑰配對18
3.1藍(lán)牙配對與綁定的概念18
3.2藍(lán)牙的配對19
3.2.1配對信息交換19
3.2.2鏈路認(rèn)證23
3.2.3密鑰分配23
3.3靜態(tài)密鑰設(shè)置24
3.3.1設(shè)置靜態(tài)密鑰24
3.3.2配對事件配置26
3.3.3下載與測試27
3.3.4任務(wù)安全設(shè)置28
3.4隨機(jī)密鑰設(shè)置31
第4章藍(lán)牙綁定配對35
4.1藍(lán)牙的綁定35
4.2設(shè)備管理與FDS文件添加35
4.2.1設(shè)備管理需要使能的選項(xiàng)35
4.2.2Peer綁定功能支持文件的添加35
4.2.3FDS和CRC支持文件的添加38
4.3設(shè)備管理代碼的實(shí)現(xiàn)39
4.3.1頭文件的添加39
4.3.2配對管理函數(shù)的添加39
4.3.3安全定時(shí)器的添加44
4.3.4藍(lán)牙事件處理函數(shù)與剔除綁定函數(shù)45
4.3.5藍(lán)牙任務(wù)安全等級設(shè)置48
4.4配對綁定實(shí)現(xiàn)原理分析50
4.4.1設(shè)備管理初始化50
4.4.2發(fā)起連接51
4.4.3申請安全認(rèn)證55
4.4.4配對與配對信息綁定57
4.4.5第二次連接64
4.5應(yīng)用與調(diào)試66
第5章自定義廣播與動(dòng)態(tài)廣播70
5.1nRF52xx藍(lán)牙BLE廣播內(nèi)容參數(shù)70
5.2自定義廣播的實(shí)現(xiàn)72
5.2.1廣播包中包含UUID的值72
5.2.2廣播包中包含從機(jī)的連接間隔參數(shù)76
5.2.3廣播包中包含制造商的自定義參數(shù)78
5.2.4廣播包中包含藍(lán)牙設(shè)備地址79
5.3動(dòng)態(tài)廣播的切換80
5.3.1廣播包中包含服務(wù)數(shù)據(jù)80
5.3.2服務(wù)數(shù)據(jù)的更新82
5.4本章小結(jié)83
第6章藍(lán)牙iBeacon的應(yīng)用85
6.1藍(lán)牙iBeacon的基本介紹85
6.2藍(lán)牙iBeacon代碼解析86
6.2.1iBeacon廣播編碼86
6.2.2廣播中添加信息90
6.3藍(lán)牙iBeacon的應(yīng)用92
6.3.1藍(lán)牙iBeacon的微信搖一搖92
6.3.2藍(lán)牙測距96
6.4本章小結(jié)100
第7章藍(lán)牙防丟器詳解101
7.1藍(lán)牙防丟器原理分析101
7.2藍(lán)牙防丟器程序解析102
7.2.1即時(shí)報(bào)警服務(wù)(從機(jī)報(bào)警)105
7.2.2鏈接丟失服務(wù)113
7.2.3雙向報(bào)警之主機(jī)報(bào)警120
7.3藍(lán)牙防丟器調(diào)試123
7.4本章小結(jié)126
第8章DFU升級實(shí)現(xiàn)詳解127
8.1DFU的功能介紹127
8.1.1DFU的原理127
8.1.2DFU升級工具132
8.2DFU文件制作步驟133
8.2.1GCC編譯環(huán)境的安裝133
8.2.2MinGW平臺的安裝135
8.2.3microeccmaster源碼的添加140
8.2.4micro_ecc_lib_nrf52.lib文件的生成141
8.2.5python軟件的安裝143
8.2.6pcnrfutil的安裝與密鑰的生成146
8.2.7boot工程和應(yīng)用工程的hex生成149
8.3程序燒錄與升級152
8.3.1程序的燒錄與升級152
8.3.2hex的燒錄與合并155
8.4串口DFU升級158
8.4.1boot工程的hex生成158
8.4.2應(yīng)用工程的hex生成159
8.4.3應(yīng)用工程的ZIP生成159
8.4.4程序的燒錄步驟160
8.5本章小結(jié)161
第9章空中升級DFU程序的移植162
9.1配置文件使能162
9.1.1配置文件使能方法162
9.1.2DFU需要使能的選項(xiàng)162
9.2工程文件的添加166
9.2.1DFU功能支持文件的添加166
9.2.2Peer綁定功能支持文件的添加167
9.2.3FDS和CRC支持文件的添加169
9.3主函數(shù)代碼的添加171
9.3.1頭文件的添加171
9.3.2服務(wù)初始化DFU服務(wù)的聲明172
9.3.3配對函數(shù)的添加175
9.3.4主函數(shù)的修改和宏的聲明179
第3篇藍(lán)牙主機(jī)搭建
第10章主機(jī)工程的搭建182
10.1樣例工程的搭建182
10.1.1工程文件目錄的分配182
10.1.2工程選項(xiàng)卡的設(shè)置183
10.2樣例工程文件的添加190
10.3主函數(shù)的搭建196
第11章藍(lán)牙主機(jī)掃描詳解198
11.1主機(jī)掃描的概念198
11.1.1被動(dòng)掃描狀態(tài)198
11.1.2主動(dòng)掃描狀態(tài)198
11.1.3掃描參數(shù)配置命令200
11.2主機(jī)掃描器設(shè)計(jì)201
11.2.1掃描參數(shù)配置202
11.2.2掃描報(bào)告事件208
11.3被動(dòng)掃描和主動(dòng)掃描實(shí)驗(yàn)213
11.3.1掃描參數(shù)的設(shè)置213
11.3.2啟動(dòng)與關(guān)閉掃描214
11.3.3掃描報(bào)告215
第12章主機(jī)解析廣播數(shù)據(jù)218
12.1廣播數(shù)據(jù)包格式218
12.2廣播數(shù)據(jù)包內(nèi)容解析219
12.2.1UUID解析219
12.2.2廣播名稱解析222
12.2.3信號強(qiáng)度解析224
12.2.4其他數(shù)據(jù)225
第13章白名單過濾策略226
13.1過濾策略的概念226
13.2白名單的配置227
13.3白名單掃描實(shí)驗(yàn)228
13.3.1白名單的添加228
13.3.2多個(gè)白名單的添加230
第14章主機(jī)掃描過濾器233
14.1掃描過濾器原理233
14.1.1過濾策略對比233
14.1.2掃描事件派發(fā)233
14.2過濾器的配置過程236
14.3過濾器的編寫239
14.3.1名稱過濾器239
14.3.2設(shè)備地址過濾器241
14.3.3UUID過濾器243
14.3.4外觀過濾器245
14.3.5過濾器組合模式247
第15章主機(jī)發(fā)起連接250
15.1連接發(fā)起250
15.1.1發(fā)起連接函數(shù)介紹250
15.1.2調(diào)用連接函數(shù)251
15.2連接事件處理254
15.3主機(jī)靜態(tài)密鑰的連接256
15.4本章小結(jié)262
第16章主機(jī)MTU參數(shù)協(xié)商263
16.1MTU參數(shù)協(xié)商原理263
16.2MTU參數(shù)協(xié)商編程264
16.2.1MTU協(xié)商協(xié)議棧接口264
16.2.2GATT初始化265
16.2.3GATT事件派發(fā)266
16.3本章小結(jié)269
第17章主機(jī)連接參數(shù)更新271
17.1連接參數(shù)更新原理271
17.2主機(jī)參數(shù)更新編程273
17.2.1連接參數(shù)更新函數(shù)273
17.2.2連接參數(shù)更新應(yīng)答274
17.3本章小結(jié)276
第18章主機(jī)PHY物理層配置278
18.1PHY物理層的概念278
18.2PHY參數(shù)更新原理279
18.2.1PHY參數(shù)更新指令279
18.2.2PHY參數(shù)更新過程280
18.3PHY更新的編程282
18.3.1PHY更新協(xié)議棧接口282
18.3.2PHY更新配置283
18.4本章小結(jié)287
第4篇主機(jī)服務(wù)及組網(wǎng)
第19章主機(jī)服務(wù)發(fā)現(xiàn)289
19.1主機(jī)對服務(wù)的發(fā)現(xiàn)啟動(dòng)289
19.1.1主服務(wù)的發(fā)現(xiàn)289
19.1.2服務(wù)特性(特征)的發(fā)現(xiàn)293
19.1.3服務(wù)描述符的發(fā)現(xiàn)294
19.2主機(jī)客戶端配置文件的搭建297
19.2.1客戶端初始化配置297
19.2.2數(shù)據(jù)發(fā)現(xiàn)初始化及回調(diào)299
19.3本章小結(jié)301
第20章主機(jī)藍(lán)牙串口數(shù)據(jù)交換302
20.1藍(lán)牙串口數(shù)據(jù)交換原理302
20.2從機(jī)到主機(jī)的數(shù)據(jù)流向303
20.2.1使能從機(jī)通知304
20.2.2接收從機(jī)數(shù)據(jù)306
20.2.3接收數(shù)據(jù)串口打印308
20.3主機(jī)發(fā)送到從機(jī)的數(shù)據(jù)流向310
20.3.1串口中斷處理311
20.3.2數(shù)據(jù)寫入從機(jī)312
20.4測試與小結(jié)313
第21章藍(lán)牙主機(jī)1拖8組網(wǎng)詳解315
21.1連接句柄概念315
21.1.1連接句柄的分配315
21.1.2從機(jī)設(shè)備的識別317
21.2多從機(jī)設(shè)備的區(qū)分320
21.2.1觀察者函數(shù)的添加320
21.2.2多服務(wù)發(fā)現(xiàn)和句柄分配321
21.3主從通信信道的搭建323
21.3.1主機(jī)到從機(jī)通信信道323
21.3.2從機(jī)到主機(jī)通信信道325
21.4測試與小結(jié)326
第22章藍(lán)牙主從一體327
22.1設(shè)計(jì)目標(biāo)的分析327
22.2nRF52832藍(lán)牙主從一體工程的搭建327
22.2.1工程服務(wù)文件的添加327
22.2.2工程文件路徑的添加329
22.3從機(jī)服務(wù)和主機(jī)服務(wù)的共存331
22.3.1協(xié)議棧參數(shù)的配置335
22.3.2服務(wù)的使能和RAM空間的設(shè)置337
22.4主從一體數(shù)據(jù)傳輸流向339
22.4.1從機(jī)設(shè)備傳輸數(shù)據(jù)到主從一體設(shè)備339
22.4.2主從一體設(shè)備傳輸數(shù)據(jù)到從機(jī)設(shè)備340
22.5下載與調(diào)試342
第23章藍(lán)牙MESH組網(wǎng)343
23.1藍(lán)牙MESH開發(fā)平臺的搭建343
23.1.1軟硬件平臺的搭建343
23.1.2MESH工程文件的編譯345
23.2MESH網(wǎng)絡(luò)的實(shí)例測試347
23.2.1MESH網(wǎng)絡(luò)角色347
23.2.2MESH實(shí)例測試348
23.2.3代理節(jié)點(diǎn)的加入356
參考文獻(xiàn)364