第1篇藍牙工程搭建篇
第1章藍牙5.0基礎(chǔ)知識以及學習規(guī)劃2
1.1藍牙5.0基礎(chǔ)知識2
1.1.1藍牙5.0簡介2
1.1.2藍牙BLE協(xié)議棧結(jié)構(gòu)3
1.2藍牙BLE如何實現(xiàn)連接與通信5
1.2.1從機廣播5
1.2.2主機掃描6
1.2.3建立連接7
1.2.4發(fā)送與接收數(shù)據(jù)8
1.3學習規(guī)劃9
1.3.1藍牙BLE基礎(chǔ)工程搭建10
1.3.2藍牙服務(wù)的建立10
1.3.3藍牙數(shù)據(jù)傳輸10
1.3.4藍牙參數(shù)及安全設(shè)置11
1.3.5從機藍牙綜合應(yīng)用11
1.3.6主機的搭建以及組網(wǎng)12
第2章藍牙BLE樣例的建立13
2.1藍牙BLE樣例工程結(jié)構(gòu)13
2.2藍牙主函數(shù)21
2.2.1外設(shè)初始化23
2.2.2協(xié)議棧層配置25
2.2.3應(yīng)用層配置28
2.2.4電源管理30
2.3下載驗證31
第3章藍牙程序信息Log顯示34
3.1Log打印串口輸出配置34
3.2Log打印RTT的輸出配置37
3.3Log日志參數(shù)__________41
3.3.1Log日志輸出顏色41
3.3.2Log日志時間戳41
3.3.3Log日志打印類型43
3.3.4模塊配置的日志使能44
第4章藍牙協(xié)議棧下的軟件定時器47
4.1軟件定時器47
4.2藍牙BLE下軟件定時器配置48
4.2.1BLE定時器聲明48
4.2.2定時器開始定時51
4.2.3定時器超時處理52
4.2.4主函數(shù)編寫52
4.3應(yīng)用與調(diào)試53
第5章藍牙協(xié)議棧下按鍵的使用55
5.1按鍵下控制觸發(fā)LED燈55
5.1.1協(xié)議棧下板級設(shè)備配置55
5.1.2下載與驗證59
5.2按鍵下的長按和短按59
5.2.1長按與短按的配置59
5.2.2按鍵數(shù)量的增加64
5.2.3長按與短按的分離66
5.3本章小結(jié)68
第6章藍牙協(xié)議初始化69
6.1nRF52832藍牙協(xié)議棧初始化函數(shù)結(jié)構(gòu)69
6.2協(xié)議;貜(fù)使能應(yīng)答70
6.2.1協(xié)議棧使能70
6.2.2議棧時鐘設(shè)置71
6.3協(xié)議棧默認配置的設(shè)置__________74
6.3.1配置鏈接數(shù)目和角色74
6.3.2配置MTU協(xié)商值76
6.3.3設(shè)置定制的UUID數(shù)目77
6.3.4GATTS的屬性表大小77
6.3.5使能服務(wù)變化特征值78
6.4使能協(xié)議棧80
6.5注冊藍牙處理事件80
6.6應(yīng)用:協(xié)議棧采用內(nèi)部RC運行83
第7章通用訪問規(guī)范GAP84
7.1藍牙GAP84
7.2GAP初始化安全模式配置85
7.3設(shè)備名稱修改與外觀設(shè)置87
7.3.1藍牙設(shè)備名稱設(shè)置87
7.3.2中文廣播名稱設(shè)置90
7.3.3藍牙應(yīng)用圖標的設(shè)置93
7.4GAP初始化設(shè)置連接參數(shù)95
7.4.1GAP連接參數(shù)定義95
7.4.2連接參數(shù)配置96
7.5本章小結(jié)101
第8章藍牙連接參數(shù)更新102
8.1藍牙連接參數(shù)更新函數(shù)結(jié)構(gòu)102
8.1.1連接更新的配置102
8.1.2連接參數(shù)更新描述103
8.1.3連接參數(shù)更新應(yīng)答104
8.1.4主機協(xié)商結(jié)果處理104
8.2連接參數(shù)更新步驟105
8.3參數(shù)更新過程109
8.4本章總結(jié)112
第9章藍牙廣播初始化分析113
9.1nRF52832藍牙BLE廣播初始化113
9.1.1廣播參數(shù)定義114
9.1.2廣播模式配置117
9.1.3藍牙廣播的啟動119
9.2不進入Idle無效模式124
9.3藍牙BLE廣播響應(yīng)包125
第2篇藍牙服務(wù)任務(wù)建立篇
第10章低功耗藍牙BLE之LED燈任務(wù)的讀/寫130
10.1nRF52832藍牙協(xié)議的分層130
10.1.1應(yīng)用層131
10.1.2控制層132
10.1.3主協(xié)議棧層132
10.2通用訪問規(guī)范(GAP)133
10.2.1角色133
10.2.2從機廣播133
10.2.3主機掃描并發(fā)起連接134
10.3通用屬性配置文件(GATT)134
10.3.1數(shù)據(jù)配置文件135
10.3.2服務(wù)135
10.3.3特性135
10.4定制私有文件服務(wù)137
10.4.1工程框架的搭建137
10.4.2私有主服務(wù)的建立137
10.4.3服務(wù)特性的設(shè)置139
10.4.4協(xié)議棧事件處理143
10.4.5應(yīng)用層的實現(xiàn)144
10.5下載驗證146
第11章藍牙BLE的按鍵通知148
11.1原理分析148
11.2按鍵通知特性的建立148
11.2.1特性參數(shù)配置149
11.2.2GATT屬性配置149
11.2.3特性添加150
11.3按鍵處理與通知數(shù)據(jù)上傳152
11.3.1按鍵處理152
11.3.2通知數(shù)據(jù)上傳函數(shù)153
11.4下載驗證154
11.5連接后自動使能CCCD155
11.5.1連接時發(fā)起回調(diào)155
11.5.2更新從機屬性信息156
第12章藍牙BLE的電池服務(wù)159
12.1電池服務(wù)函數(shù)庫159
12.1.1電池函數(shù)庫文件的添加159
12.1.2電池服務(wù)建立160
12.1.3電池采樣步驟164
12.2應(yīng)用層的實現(xiàn)165
12.2.1電池服務(wù)的調(diào)用165
12.2.2電池參數(shù)值的采集166
12.2.3電池電量的更新168
12.2.4定時器設(shè)計171
12.2.5主函數(shù)編寫172
12.3下載與測試173
第13章藍牙心電服務(wù)的建立175
13.1工程項目的建立175
13.1.1主函數(shù)的建立176
13.1.2外設(shè)部分初始化__________176
13.1.3服務(wù)初始化177
13.2心率服務(wù)設(shè)計180
13.2.1心率服務(wù)包含的特性180
13.2.2身體測量位置特性的添加182
13.2.3心率服務(wù)特性的添加183
13.2.4心率數(shù)據(jù)接口格式185
13.2.5心率數(shù)據(jù)上傳188
13.3設(shè)備信息服務(wù)設(shè)計191
13.4下載驗證197
第14章藍牙任務(wù)的UUID設(shè)置199
14.1UUID設(shè)置規(guī)則199
14.1.1藍牙技術(shù)聯(lián)盟UUID199
14.1.2供應(yīng)商特定的UUID199
14.2程序中UUID的設(shè)置201
14.2.1藍牙協(xié)議小組公共UUID設(shè)置201
14.2.2私有服務(wù)UUID設(shè)置202
14.2.3UUID類型切換205
14.3應(yīng)用與調(diào)試206
第15章藍牙派發(fā)回調(diào)機制208
15.1觀察者模式分析208
15.1.1觀察者observer模型208
15.1.2觀察者observer運行機制211
15.1.3片上SoC事件派發(fā)214
15.2回調(diào)機制的驗證215
15.3本章小結(jié)216
第3篇藍牙數(shù)據(jù)傳輸與存儲篇
第16章藍牙BLE之藍牙串口218
16.1藍牙串口工程的建立218
16.1.1主函數(shù)的建立219
16.1.2外設(shè)部分初始化220
16.1.3服務(wù)初始化221
16.2藍牙串口服務(wù)頭文件的設(shè)計222
16.2.1串口服務(wù)函數(shù)聲明222
16.2.2數(shù)據(jù)結(jié)構(gòu)體設(shè)計222
16.3藍牙串口服務(wù)的設(shè)計224
16.3.1開通應(yīng)用主服務(wù)224
16.3.2藍牙接收和發(fā)送特性的添加226
16.3.3應(yīng)用層的實現(xiàn)228
16.4藍牙串口數(shù)據(jù)通道的搭建228
16.4.1藍牙事件派發(fā)函數(shù)228
16.4.2處理串口寫事件229
16.4.3處理串口接收事件231
16.4.4數(shù)據(jù)包長度控制233
16.5下載驗證236
第17章藍牙BLE遙控器238
17.1遙控指令設(shè)置原理238
17.2遙控OLED顯示239
17.2.1OLED顯示原理239
17.2.2OLED驅(qū)動的編寫241
17.2.3手機遙控OLED顯示247
17.3應(yīng)用與調(diào)試249
第18章藍牙BLE溫濕度檢測250
18.1溫濕度DHT11驅(qū)動250
18.2溫濕度采集方法一253
18.2.1應(yīng)用層初始化傳感器253
18.2.2采集指令發(fā)送254
18.2.3下載與測試255
18.3溫濕度采集方法二257
18.3.1初始化傳感器257
18.3.2私有任務(wù)建立259
18.3.3采集溫濕度數(shù)據(jù)上傳261
18.3.4定時器的建立與啟動262
18.3.5下載與調(diào)試263
18.4本章總結(jié)264
第19章藍牙Flash存儲之fstorage265
19.1藍牙Flash存儲265
19.2Fstorage存儲編寫API266
19.2.1Flash區(qū)域聲明266
19.2.2寫數(shù)據(jù)267
19.2.3讀數(shù)據(jù)269
19.2.4整頁擦除270
19.3程序存儲操作的實現(xiàn)271
19.4應(yīng)用與調(diào)試275
第20章藍牙Flash存儲之FDS276
20.1藍牙Flash存儲模塊276
20.2FDS庫函數(shù)API277
20.3FDS的讀/寫過程281
20.3.1FDS數(shù)據(jù)幀格式281
20.3.2FDS文件寫入和查找方式282
20.3.3FDS數(shù)據(jù)更新284
20.3.4FDS數(shù)據(jù)擦除與垃圾回收284
20.4FDS方式編程方法285
20.4.1FDS配置參數(shù)285
20.4.2FDS配置流程287
20.5應(yīng)用與調(diào)試293
第21章遠程傳輸數(shù)據(jù)Flash存儲294
21.1兩種存儲方式對比294
21.2藍牙接收數(shù)據(jù)fstorage方式下存儲295
21.2.1Fstorage模式初始化295
21.2.2Fstorage事件回調(diào)函數(shù)296
21.2.3數(shù)據(jù)接收回調(diào)處理297
21.2.4下載與測試298
21.3藍牙接收數(shù)據(jù)FDS方式下存儲301
21.3.1設(shè)置FDS數(shù)據(jù)格式301
21.3.2配置FDS的記錄參數(shù)301
21.3.3初始化FDS文件系統(tǒng)302
21.3.4數(shù)據(jù)接收回調(diào)處理302
21.3.5下載與測試305
第22章nRF52xx藍牙通信包307
22.1空中數(shù)據(jù)接口307
22.1.1空中數(shù)據(jù)包格式307
22.1.2廣播頻道PDU域格式309
22.1.3連接數(shù)據(jù)頻道PDU域格式315
22.2廣播包抓取分析316
22.2.1抓取的廣播包特征317
22.2.2廣播包分析318
22.3連接的數(shù)據(jù)包抓取321
22.3.1抓取數(shù)據(jù)包特征321
22.3.2數(shù)據(jù)包分析322
22.4本章小結(jié)323
第23章傳輸數(shù)據(jù)吞吐量324
23.1低功耗藍牙的理論吞吐率324
23.1.1藍牙4.0和藍牙4.2的吞吐量325
23.1.2藍牙5.0的吞吐量326
23.2傳輸速率的影響因素327
23.3nRF52xx藍牙傳輸速率配置329
23.3.1吞吐量傳輸測試框架搭建329
23.3.2配置參數(shù)增大吞吐量335
23.4本章小結(jié)341
第24章藍牙實現(xiàn)低功耗的方式342
24.1nRF52系列的兩種功耗模式342
24.1.1系統(tǒng)開低功耗模式342
24.1.2系統(tǒng)關(guān)睡眠模式344
24.2nRF52降低功耗方法347
24.2.1硬件電路設(shè)計347
24.2.2降低功耗的改進方案349
第4篇綜合篇
第25章青風nRF52開發(fā)板綜合開機實驗353
25.1開機測試目標353
25.2工程文件的搭建354
25.3軟件編寫357
25.3.1RTC定時時鐘的編寫357
25.3.2電池檢測與顯示362
25.3.3按鍵、電容觸摸按鍵和W25Q16363
25.3.4MPU6050的移植366
25.4程序下載與測試367
參考文獻374