低功耗藍牙5·0開發與應用
《低功耗藍牙5·0開發與應用》,副標題:基於nRF52系列處理器(提高篇),萬青 著,出版社: 北京航空航天大學出版社。
書籍是用文字、圖畫和其他符號,在一定材料上記錄各種知識,清楚地表達思想,並且制裝成卷冊的著作物[1],為傳播各種知識和思想,積累人類文化的重要工具。它隨着歷史的發展,在書寫方式、所使用的材料和裝幀形式[2],以及形態方面,也在不斷變化與變更。
目錄
內容簡介
隨着藍牙學習的深入,開發者不得不面對諸如藍牙安全配置、藍牙實戰應用、藍牙主從設備互連、藍牙組網等實際需求,本書正是在這個背景下誕生的。本書主要講述了對藍牙的參數與安全連接、藍牙從機綜合應用、主機搭建與發起連接、主機數據傳輸以及主從組網應用等內容,深入解決低功耗藍牙開發人員的需求痛點,進一步提高低功耗藍牙的開發能力。
目錄
第1篇藍牙工程搭建篇
第1章藍牙5.0基礎知識以及學習規劃2
1.1藍牙5.0基礎知識2
1.1.1藍牙5.0簡介2
1.1.2藍牙BLE協議棧結構3
1.2藍牙BLE如何實現連接與通信5
1.2.1從機廣播5
1.2.2主機掃描6
1.2.3建立連接7
1.2.4發送與接收數據8
1.3學習規劃9
1.3.1藍牙BLE基礎工程搭建10
1.3.2藍牙服務的建立10
1.3.3藍牙數據傳輸10
1.3.4藍牙參數及安全設置11
1.3.5從機藍牙綜合應用11
1.3.6主機的搭建以及組網12
第2章藍牙BLE樣例的建立13
2.1藍牙BLE樣例工程結構13
2.2藍牙主函數21
2.2.1外設初始化23
2.2.2協議棧層配置25
2.2.3應用層配置28
2.2.4電源管理30
2.3下載驗證31
第3章藍牙程序信息Log顯示34
3.1Log打印串口輸出配置34
3.2Log打印RTT的輸出配置37
3.3Log日誌參數__________41
3.3.1Log日誌輸出顏色41
3.3.2Log日誌時間戳41
3.3.3Log日誌打印類型43
3.3.4模塊配置的日誌使能44
第4章藍牙協議棧下的軟件定時器47
4.1軟件定時器47
4.2藍牙BLE下軟件定時器配置48
4.2.1BLE定時器聲明48
4.2.2定時器開始定時51
4.2.3定時器超時處理52
4.2.4主函數編寫52
4.3應用與調試53
第5章藍牙協議棧下按鍵的使用55
5.1按鍵下控制觸發LED燈55
5.1.1協議棧下板級設備配置55
5.1.2下載與驗證59
5.2按鍵下的長按和短按59
5.2.1長按與短按的配置59
5.2.2按鍵數量的增加64
5.2.3長按與短按的分離66
5.3本章小結68
第6章藍牙協議初始化69
6.1nRF52832藍牙協議棧初始化函數結構69
6.2協議棧回復使能應答70
6.2.1協議棧使能70
6.2.2議棧時鐘設置71
6.3協議棧默認配置的設置__________74
6.3.1配置鏈接數目和角色74
6.3.2配置MTU協商值76
6.3.3設置定製的UUID數目77
6.3.4GATTS的屬性表大小77
6.3.5使能服務變化特徵值78
6.4使能協議棧80
6.5註冊藍牙處理事件80
6.6應用:協議棧採用內部RC運行83
第7章通用訪問規範GAP84
7.1藍牙GAP84
7.2GAP初始化安全模式配置85
7.3設備名稱修改與外觀設置87
7.3.1藍牙設備名稱設置87
7.3.2中文廣播名稱設置90
7.3.3藍牙應用圖標的設置93
7.4GAP初始化設置連接參數95
7.4.1GAP連接參數定義95
7.4.2連接參數配置96
7.5本章小結101
第8章藍牙連接參數更新102
8.1藍牙連接參數更新函數結構102
8.1.1連接更新的配置102
8.1.2連接參數更新描述103
8.1.3連接參數更新應答104
8.1.4主機協商結果處理104
8.2連接參數更新步驟105
8.3參數更新過程109
8.4本章總結112
第9章藍牙廣播初始化分析113
9.1nRF52832藍牙BLE廣播初始化113
9.1.1廣播參數定義114
9.1.2廣播模式配置117
9.1.3藍牙廣播的啟動119
9.2不進入Idle無效模式124
9.3藍牙BLE廣播響應包125
第2篇藍牙服務任務建立篇
第10章低功耗藍牙BLE之LED燈任務的讀/寫130
10.1nRF52832藍牙協議的分層130
10.1.1應用層131
10.1.2控制層132
10.1.3主協議棧層132
10.2通用訪問規範(GAP)133
10.2.1角色133
10.2.2從機廣播133
10.2.3主機掃描並發起連接134
10.3通用屬性配置文件(GATT)134
10.3.1數據配置文件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協議棧事件處理143
10.4.5應用層的實現144
10.5下載驗證146
第11章藍牙BLE的按鍵通知148
11.1原理分析148
11.2按鍵通知特性的建立148
11.2.1特性參數配置149
11.2.2GATT屬性配置149
11.2.3特性添加150
11.3按鍵處理與通知數據上傳152
11.3.1按鍵處理152
11.3.2通知數據上傳函數153
11.4下載驗證154
11.5連接後自動使能CCCD155
11.5.1連接時發起回調155
11.5.2更新從機屬性信息156
第12章藍牙BLE的電池服務159
12.1電池服務函數庫159
12.1.1電池函數庫文件的添加159
12.1.2電池服務建立160
12.1.3電池採樣步驟164
12.2應用層的實現165
12.2.1電池服務的調用165
12.2.2電池參數值的採集166
12.2.3電池電量的更新168
12.2.4定時器設計171
12.2.5主函數編寫172
12.3下載與測試173
第13章藍牙心電服務的建立175
13.1工程項目的建立175
13.1.1主函數的建立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心率數據接口格式185
13.2.5心率數據上傳188
13.3設備信息服務設計191
13.4下載驗證197
第14章藍牙任務的UUID設置199
14.1UUID設置規則199
14.1.1藍牙技術聯盟UUID199
14.1.2供應商特定的UUID199
14.2程序中UUID的設置201
14.2.1藍牙協議小組公共UUID設置201
14.2.2私有服務UUID設置202
14.2.3UUID類型切換205
14.3應用與調試206
第15章藍牙派發回調機制208
15.1觀察者模式分析208
15.1.1觀察者observer模型208
15.1.2觀察者observer運行機制211
15.1.3片上SoC事件派發214
15.2回調機制的驗證215
15.3本章小結216
第3篇藍牙數據傳輸與存儲篇
第16章藍牙BLE之藍牙串口218
16.1藍牙串口工程的建立218
16.1.1主函數的建立219
16.1.2外設部分初始化220
16.1.3服務初始化221
16.2藍牙串口服務頭文件的設計222
16.2.1串口服務函數聲明222
16.2.2數據結構體設計222
16.3藍牙串口服務的設計224
16.3.1開通應用主服務224
16.3.2藍牙接收和發送特性的添加226
16.3.3應用層的實現228
16.4藍牙串口數據通道的搭建228
16.4.1藍牙事件派發函數228
16.4.2處理串口寫事件229
16.4.3處理串口接收事件231
16.4.4數據包長度控制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採集指令發送254
18.2.3下載與測試255
18.3溫濕度採集方法二257
18.3.1初始化傳感器257
18.3.2私有任務建立259
18.3.3採集溫濕度數據上傳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區域聲明266
19.2.2寫數據267
19.2.3讀數據269
19.2.4整頁擦除270
19.3程序存儲操作的實現271
19.4應用與調試275
第20章藍牙Flash存儲之FDS276
20.1藍牙Flash存儲模塊276
20.2FDS庫函數API277
20.3FDS的讀/寫過程281
20.3.1FDS數據幀格式281
20.3.2FDS文件寫入和查找方式282
20.3.3FDS數據更新284
20.3.4FDS數據擦除與垃圾回收284
20.4FDS方式編程方法285
20.4.1FDS配置參數285
20.4.2FDS配置流程287
20.5應用與調試293
第21章遠程傳輸數據Flash存儲294
21.1兩種存儲方式對比294
21.2藍牙接收數據fstorage方式下存儲295
21.2.1Fstorage模式初始化295
21.2.2Fstorage事件回調函數296
21.2.3數據接收回調處理297
21.2.4下載與測試298
21.3藍牙接收數據FDS方式下存儲301
21.3.1設置FDS數據格式301
21.3.2配置FDS的記錄參數301
21.3.3初始化FDS文件系統302
21.3.4數據接收回調處理302
21.3.5下載與測試305
第22章nRF52xx藍牙通信包307
22.1空中數據接口307
22.1.1空中數據包格式307
22.1.2廣播頻道PDU域格式309
22.1.3連接數據頻道PDU域格式315
22.2廣播包抓取分析316
22.2.1抓取的廣播包特徵317
22.2.2廣播包分析318
22.3連接的數據包抓取321
22.3.1抓取數據包特徵321
22.3.2數據包分析322
22.4本章小結323
第23章傳輸數據吞吐量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配置參數增大吞吐量335
23.4本章小結341
第24章藍牙實現低功耗的方式342
24.1nRF52系列的兩種功耗模式342
24.1.1系統開低功耗模式342
24.1.2系統關睡眠模式344
24.2nRF52降低功耗方法347
24.2.1硬件電路設計347
24.2.2降低功耗的改進方案349
第4篇綜合篇
第25章青風nRF52開發板綜合開機實驗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
參考文獻
- ↑ 作品、著作物與版權,道客巴巴,2014-11-09
- ↑ 書籍裝幀設計的分類及藝術表現形式,豆丁網,2016-08-14