隨著藍牙學習的深入,開發(fā)者不得不面對諸如藍牙安全配置、藍牙實戰(zhàn)應用、藍牙主從設備互連、
藍牙組網(wǎng)等實際需求,本書正是在這個背景下誕生的。本書主要講述了對藍牙的參數(shù)與安全連接、藍
牙從機綜合應用、主機搭建與發(fā)起連接、主機數(shù)據(jù)傳輸以及主從組網(wǎng)應用等內容,深入解決低功耗藍
牙開發(fā)人員的需求痛點,進一步提高低功耗藍牙的開發(fā)能力。
第1篇藍牙工程搭建篇
第1章藍牙5.0基礎知識以及學習規(guī)劃2
1.1藍牙5.0基礎知識2
1.1.1藍牙5.0簡介2
1.1.2藍牙BLE協(xié)議棧結構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基礎工程搭建10
1.3.2藍牙服務的建立10
1.3.3藍牙數(shù)據(jù)傳輸10
1.3.4藍牙參數(shù)及安全設置11
1.3.5從機藍牙綜合應用11
1.3.6主機的搭建以及組網(wǎng)12
第2章藍牙BLE樣例的建立13
2.1藍牙BLE樣例工程結構13
2.2藍牙主函數(shù)21
2.2.1外設初始化23
2.2.2協(xié)議棧層配置25
2.2.3應用層配置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應用與調試53
第5章藍牙協(xié)議棧下按鍵的使用55
5.1按鍵下控制觸發(fā)LED燈55
5.1.1協(xié)議棧下板級設備配置55
5.1.2下載與驗證59
5.2按鍵下的長按和短按59
5.2.1長按與短按的配置59
5.2.2按鍵數(shù)量的增加64
5.2.3長按與短按的分離66
5.3本章小結68
第6章藍牙協(xié)議初始化69
6.1nRF52832藍牙協(xié)議棧初始化函數(shù)結構69
6.2協(xié)議棧回復使能應答70
6.2.1協(xié)議棧使能70
6.2.2議棧時鐘設置71
6.3協(xié)議棧默認配置的設置__________74
6.3.1配置鏈接數(shù)目和角色74
6.3.2配置MTU協(xié)商值76
6.3.3設置定制的UUID數(shù)目77
6.3.4GATTS的屬性表大小77
6.3.5使能服務變化特征值78
6.4使能協(xié)議棧80
6.5注冊藍牙處理事件80
6.6應用:協(xié)議棧采用內部RC運行83
第7章通用訪問規(guī)范GAP84
7.1藍牙GAP84
7.2GAP初始化安全模式配置85
7.3設備名稱修改與外觀設置87
7.3.1藍牙設備名稱設置87
7.3.2中文廣播名稱設置90
7.3.3藍牙應用圖標的設置93
7.4GAP初始化設置連接參數(shù)95
7.4.1GAP連接參數(shù)定義95
7.4.2連接參數(shù)配置96
7.5本章小結101
第8章藍牙連接參數(shù)更新102
8.1藍牙連接參數(shù)更新函數(shù)結構102
8.1.1連接更新的配置102
8.1.2連接參數(shù)更新描述103
8.1.3連接參數(shù)更新應答104
8.1.4主機協(xié)商結果處理104
8.2連接參數(shù)更新步驟105
8.3參數(shù)更新過程109
8.4本章總結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廣播響應包125
第2篇藍牙服務任務建立篇
第10章低功耗藍牙BLE之LED燈任務的讀/寫130
10.1nRF52832藍牙協(xié)議的分層130
10.1.1應用層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服務135
10.3.3特性135
10.4定制私有文件服務137
10.4.1工程框架的搭建137
10.4.2私有主服務的建立137
10.4.3服務特性的設置139
10.4.4協(xié)議棧事件處理143
10.4.5應用層的實現(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ā)起回調155
11.5.2更新從機屬性信息156
第12章藍牙BLE的電池服務159
12.1電池服務函數(shù)庫159
12.1.1電池函數(shù)庫文件的添加159
12.1.2電池服務建立160
12.1.3電池采樣步驟164
12.2應用層的實現(xiàn)165
12.2.1電池服務的調用165
12.2.2電池參數(shù)值的采集166
12.2.3電池電量的更新168
12.2.4定時器設計171
12.2.5主函數(shù)編寫172
12.3下載與測試173
第13章藍牙心電服務的建立175
13.1工程項目的建立175
13.1.1主函數(shù)的建立176
13.1.2外設部分初始化__________176
13.1.3服務初始化177
13.2心率服務設計180
13.2.1心率服務包含的特性180
13.2.2身體測量位置特性的添加182
13.2.3心率服務特性的添加183
13.2.4心率數(shù)據(jù)接口格式185
13.2.5心率數(shù)據(jù)上傳188
13.3設備信息服務設計191
13.4下載驗證197
第14章藍牙任務的UUID設置199
14.1UUID設置規(guī)則199
14.1.1藍牙技術聯(lián)盟UUID199
14.1.2供應商特定的UUID199
14.2程序中UUID的設置201
14.2.1藍牙協(xié)議小組公共UUID設置201
14.2.2私有服務UUID設置202
14.2.3UUID類型切換205
14.3應用與調試206
第15章藍牙派發(fā)回調機制208
15.1觀察者模式分析208
15.1.1觀察者observer模型208
15.1.2觀察者observer運行機制211
15.1.3片上SoC事件派發(fā)214
15.2回調機制的驗證215
15.3本章小結216
第3篇藍牙數(shù)據(jù)傳輸與存儲篇
第16章藍牙BLE之藍牙串口218
16.1藍牙串口工程的建立218
16.1.1主函數(shù)的建立219
16.1.2外設部分初始化220
16.1.3服務初始化221
16.2藍牙串口服務頭文件的設計222
16.2.1串口服務函數(shù)聲明222
16.2.2數(shù)據(jù)結構體設計222
16.3藍牙串口服務的設計224
16.3.1開通應用主服務224
16.3.2藍牙接收和發(fā)送特性的添加226
16.3.3應用層的實現(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遙控指令設置原理238
17.2遙控OLED顯示239
17.2.1OLED顯示原理239
17.2.2OLED驅動的編寫241
17.2.3手機遙控OLED顯示247
17.3應用與調試249
第18章藍牙BLE溫濕度檢測250
18.1溫濕度DHT11驅動250
18.2溫濕度采集方法一253
18.2.1應用層初始化傳感器253
18.2.2采集指令發(fā)送254
18.2.3下載與測試255
18.3溫濕度采集方法二257
18.3.1初始化傳感器257
18.3.2私有任務建立259
18.3.3采集溫濕度數(shù)據(jù)上傳261
18.3.4定時器的建立與啟動262
18.3.5下載與調試263
18.4本章總結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應用與調試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應用與調試293
第21章遠程傳輸數(shù)據(jù)Flash存儲294
21.1兩種存儲方式對比294
21.2藍牙接收數(shù)據(jù)fstorage方式下存儲295
21.2.1Fstorage模式初始化295
21.2.2Fstorage事件回調函數(shù)296
21.2.3數(shù)據(jù)接收回調處理297
21.2.4下載與測試298
21.3藍牙接收數(shù)據(jù)FDS方式下存儲301
21.3.1設置FDS數(shù)據(jù)格式301
21.3.2配置FDS的記錄參數(shù)301
21.3.3初始化FDS文件系統(tǒng)302
21.3.4數(shù)據(jù)接收回調處理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本章小結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本章小結341
第24章藍牙實現(xiàn)低功耗的方式342
24.1nRF52系列的兩種功耗模式342
24.1.1系統(tǒng)開低功耗模式342
24.1.2系統(tǒng)關睡眠模式344
24.2nRF52降低功耗方法347
24.2.1硬件電路設計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