●第1章低功耗藍牙5.x開發環境之搭建(1)
1.1基於NordicnRF52840DK開發環境之搭建(1)
1.1.1SES的搭建(1)
1.1.2KeilMDK的搭建(8)
1.1.3其他工具的安裝(9)
1.2nRF52840DK開發板上的燒寫器介紹(13)
1.2.1簡介(13)
1.2.2nRF52840DK開發板簡介(13)
1.2.3nRF52840DK開發板的燒寫方式(13)
1.2.4PTR9818介紹(15)
1.2.5PTR9818模塊的固件燒寫方式(16)
1.2.6APTR-xxxx-EVB低功耗藍牙模塊評估板(18)
1.3nRF5SDK介紹和目錄結構解讀(19)
1.4SES集成開發環境的使用(23)
1.5如何將工程移植到不同的芯片(26)
1.5.1在SES中將nRF52832的工程移植到nRF52840(26)
1.5.2Softdevice協議棧介紹(31)
1.5.3Log打印功能(36)
1.5.4芯片選型表(38)
第2章實驗1:低功耗藍牙5.xSoC之nRF52840最小硬件繫統(41)
2.1實驗目標(41)
2.2nRF52840最小硬件繫統電路(41)
2.2.1供電方式(42)
2.2.2內部電源穩壓方式(43)
2.2.3時鐘電路(45)
2.2.4匹配電路(46)
2.2.5去耦電容(46)
2.2.6USB電路(46)
2.2.7NFC電路(47)
2.3nRF52840硬件設計的注意事項(48)
2.4實驗小結(50)
第3章實驗2:低功耗藍牙5.x廣播的實現(51)
3.1實驗目標(51)
3.2實驗準備(51)
3.3背景知識(51)
3.3.1廣播(51)
3.3.2廣播數據包的格式(52)
3.3.3常見的廣播內容(52)
3.3.4廣播數據包的類型(53)
3.4實驗步驟(54)
3.4.1低功耗藍牙5.x廣播的初始化(54)
3.4.2低功耗藍牙5.x廣播名稱的修改(55)
3.4.3廣播內容和廣播參數的修改(56)
3.4.4代碼實戰(60)
3.5實驗小結(65)
第4章實驗3:低功耗藍牙5.x雙向通信的實現(67)
4.1實驗目標(67)
4.2實驗準備(67)
4.3背景知識(67)
4.3.1低功耗藍牙5.x雙向通信的基本概念(67)
4.3.2低功耗藍牙5.x雙向通信的連接建立過程(70)
4.4實驗步驟(70)
4.4.1低功耗藍牙5.x串口通信服務的實現(71)
4.4.2main函數的解析(75)
4.4.3協議棧初始化分析(75)
4.5低功耗藍牙5.x的傳輸速率(77)
4.5.1傳輸速率的理論值(77)
4.5.2影響傳輸速率的主要因素(79)
4.5.3代碼實例測試(79)
4.5.4實際測試(81)
4.5.5實驗分析(85)
4.6開發調試工具(85)
4.6.1nrfjprog命令行工具(85)
4.6.2RTT打印Log(86)
4.7資料學習(87)
4.8實驗小結(89)
第5章實驗4:添加電池電量服務(91)
5.1實驗目標(91)
5.2實驗準備(91)
5.3背景知識(91)
5.4實驗步驟(92)
5.5應用固件的燒寫和調試(103)
5.5.1編譯和燒寫(103)
5.5.2查看電池電量服務數據(103)
5.5.3添加電池電量服務的注意事項(104)
5.5.4實驗觀察(104)
5.6實驗小結(104)
第6章實驗5:添加私有服務(105)
6.1實驗目標(105)
6.2實驗準備(105)
6.3背景知識(105)
6.4實驗步驟(106)
6.4.1移植庫文件(106)
6.4.2修改sdk_config.h中相應的宏(107)
6.4.3初始化LBS(107)
6.4.4修改LBS中LED的特性(111)
6.4.5修改按鍵的邏輯(113)
6.5應用的實驗與測試(114)
6.5.1應用固件的燒寫與測試(114)
6.5.2實驗觀察(115)
6.6實驗小結(115)
第7章實驗6:添加配對、綁定功能(117)
7.1實驗目標(117)
7.2實驗準備(117)
7.3背景知識(117)
7.3.1配對和綁定的定義(117)
7.3.2相關概念知識(118)
7.3.3綁定的流程(119)
7.3.4綁定的方式(等級)(120)
7.3.5例程講解(120)
7.3.6與綁定功能相關的常用API函數(120)
7.4實驗步驟(121)
7.4.1綁定模塊移植(121)
7.4.2在例程ble_app_hrs中添加NUS(122)
7.4.3Passkey配對模式的實現(124)
7.4.4數字比較的實現(125)
7.5實驗拓展(127)
7.6實驗小結(128)
第8章實驗7:低功耗藍牙的主機掃描(129)
8.1實驗目標(129)
8.2實驗準備(129)
8.3背景知識(129)
8.3.1廣播的概念(129)
8.3.2掃描的概念(130)
8.3.3主機掃描的原理(130)
8.3.4主動掃描和被動掃描(131)
8.4實驗步驟(131)
8.4.1掃描例程講解(131)
8.4.2掃描附近所有設備(132)
8.4.3篩選廣播數據包中的數據(134)
8.5實驗小結(135)
第9章實驗8:低功耗藍牙的主機連接(137)
9.1實驗目標(137)
9.2實驗準備(137)
9.3背景知識(137)
9.3.1連接的概念(137)
9.3.2連接的過程(138)
9.3.3連接的重要參數(138)
9.3.4連接參數的優化(139)
9.3.5iOS對連接參數的要求(139)
9.4實驗步驟(139)
9.5實驗小結(141)
第10章實驗9:低功耗藍牙主從一體的實現(143)
10.1實驗目標(143)
10.2實驗準備(143)
10.3背景知識(143)
10.4實驗步驟(144)
10.4.1低功耗藍牙主從一體功能的實現(144)
10.4.2低功耗藍牙主從一體功能的演示(149)
10.5實驗小結(151)
第11章實驗10:低功耗藍牙多主多從的實現(153)
11.1實驗目標(153)
11.2實驗準備(153)
11.3背景知識(153)
11.4實驗步驟(154)
11.4.1低功耗藍牙多主多從功能的實現(154)
11.4.2低功耗藍牙多主多從功能的演示(157)
11.5實驗小結(158)
第12章實驗11:LE2MPHY高速率通信的實現(159)
12.1實驗目標(159)
12.2實驗準備(159)
12.3背景知識(159)
12.3.1低功耗藍牙LE2MPHY高速率通信(159)
12.3.2低功耗藍牙數據包的組成(160)
12.3.3低功耗藍牙數據包的完整傳輸周期(161)
12.3.4低功耗藍牙的數據吞吐率(162)
12.3.5低功耗藍牙LE2MPHY高速率通信的應用(163)
12.4實驗步驟(163)
12.4.1SDK例程測試(163)
12.4.2LE2MPHY高速率通信的實現(166)
12.5實驗小結(167)
第13章實驗12:低功耗藍牙長距離通信的實現(169)
13.1實驗目標(169)
13.2實驗準備(169)
13.3背景知識(169)
13.3.1鏈路預算和無線電波傳播損耗(170)
13.3.2長距離通信的編碼(171)
13.3.3長距離通信的傳輸速率(172)
13.3.4長距離通信的應用創新(173)
13.4實驗步驟(173)
13.4.1長距離通信的PHY配置和數據吞吐率測試(173)
13.4.2低功耗藍牙5.x長距離通信的實現(176)
13.4.3長距離通信的測試(177)
13.5實驗小結(177)
第14章實驗13:低功耗藍牙擴展廣播數據包的實現(179)
14.1實驗目標(179)
14.2實驗準備(179)
14.3背景知識(179)
14.3.1低功耗藍牙5.x擴展廣播數據包的格式(180)
14.3.2低功耗藍牙5.x擴展廣播數據包的應用場景(182)
14.4實驗步驟(182)
14.5實驗小結(184)
第15章實驗14:基於SPI驅動OLED(185)
15.1實驗目標(185)
15.2實驗準備(185)
15.3背景知識(185)
15.3.1SPI簡介(185)
15.3.2SPI的工作方式(186)
15.3.3OLED簡介(187)
15.4實驗步驟(187)
15.5實驗小結(193)
第16章實驗15:基於QSPI驅動LCD(195)
16.1實驗目標(195)
16.2實驗準備(195)
16.3背景知識(195)
16.3.1QSPI簡介(195)
16.3.2LCD模塊簡介(196)
16.3.3QSPI接口與LCD模塊的連接(196)
16.4實驗步驟(198)
16.5實驗小結(206)
第17章實驗16:基於FreeRTOS實現復雜應用(207)
17.1實驗目標(207)
17.2實驗準備(207)
17.3背景知識(207)
17.3.1FreeRTOS簡介(207)
17.3.2在RTOS中自定義線程(208)
17.3.3RTOS的移植(209)
17.4實驗步驟(209)
17.5實驗小結(214)
第18章實驗17:FDS的實現(215)
18.1實驗目標(215)
18.2實驗準備(215)
18.3背景知識(215)
18.3.1FDS簡介(215)
18.3.2FDS的實現原理(216)
18.3.3FDS區域(216)
18.3.4FDS的操作類型(217)
18.3.5FDS的常用API函數簡介(217)
18.3.6使用FDS的注意事項(219)
18.4實驗步驟(219)
18.4.1FDS模塊的移植(219)
18.4.2FDS存儲功能的實現(220)
18.5實驗小結(225)
第19章實驗18:固件空中升級(OTA)的實現(227)
19.1實驗目標(227)
19.2實驗準備(227)
19.3背景知識(227)
19.3.1DFU簡介(227)
19.3.2OTA簡介(229)
19.3.3基於Nordic的SDK實現DFU的原理(229)
19.4實驗步驟(230)
19.5實驗關鍵代碼與實驗要點(233)
19.5.1ble_app_buttonless_dfu服務的關鍵代碼(233)
19.5.2Bootloader程序的關鍵代碼(238)
19.5.3實驗要點(241)
19.6實驗小結(241)
第20章實驗19:基於串口的DFU實現(243)
20.1實驗目標(243)
20.2實驗準備(243)
20.3背景知識(243)
20.4實驗步驟(244)
20.5實驗要點(247)
20.6實驗小結(247)
第21章實驗20:基於低功耗藍牙模塊PTR9818的開發(249)
21.1實驗目標(249)
21.2實驗背景(249)
21.3實驗配置(250)
21.3.1低頻時鐘源的配置(250)
21.3.2外設的配置(251)
21.3.3UART的配置(253)
21.4實驗小結(253)
參考文獻(255)
後記(256)