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