大家好,我是雜燴君。本次我們來(lái)介紹一個(gè)開源的雙模藍(lán)牙協(xié)議?!猙tstack。
btstack簡(jiǎn)介
btstack一個(gè)包含傳統(tǒng)藍(lán)牙跟低功耗藍(lán)牙的協(xié)議棧,屬于超輕量級(jí)藍(lán)牙協(xié)議棧,用作學(xué)習(xí)藍(lán)牙協(xié)議棧的人使用。
與其他協(xié)議棧的對(duì)比
Github鏈接:
https://github.com/sj15712795029/bluetooth_stack
bluetooth_stack專注于嵌入式平臺(tái)(如STM32),其代碼結(jié)構(gòu)精簡(jiǎn)高效,支持HCI層以上的核心協(xié)議(如L2CAP、ATT、GATT等),而底層依賴芯片自帶協(xié)議棧(如CSR8311)。這種設(shè)計(jì)既降低了硬件適配成本,又保留了藍(lán)牙協(xié)議的核心功能,特別適合資源受限的嵌入式場(chǎng)景。
btstack可以運(yùn)行在STM32、Linux上。目前支持的平臺(tái):
源碼目錄結(jié)構(gòu):
目錄文件夾 | 子目錄文件夾 | 說(shuō)明 |
---|---|---|
board | stm32f10x | STM32F103板載外設(shè)驅(qū)動(dòng) |
stm32f407 | STM32F407板載外設(shè)驅(qū)動(dòng) | |
stm32f412 | STM32F412板載外設(shè)驅(qū)動(dòng) | |
bsp | cortex-m3 | Cortex M3 Driver庫(kù)(M3默認(rèn)用標(biāo)準(zhǔn)庫(kù)) |
cortex-m4 | Cortex M4 Driver庫(kù)(M3默認(rèn)用HAL庫(kù)) | |
component | bluetooth | 藍(lán)牙協(xié)議棧源碼 |
cjson | json源碼(目前用于跟上位機(jī)交互) | |
fs | file system文件系統(tǒng),目前用于管理spi flash | |
memory_manager | 內(nèi)存管理,目前用于管理STM32F407的SRAM | |
ringbuffer | 環(huán)形數(shù)組,用于藍(lán)牙接收串口數(shù)據(jù) | |
mcu_bt_tool | PC上位機(jī),用于控制STM32開發(fā)板,以及接受STM32的狀態(tài)回傳 | |
project | stm32f10x_bb_bt | STM32F103裸機(jī)(BB:bare board)藍(lán)牙工程 |
stm32f407_bb_bt | STM32F407裸機(jī)(BB:bare board)藍(lán)牙工程 | |
stm32f412_bb_bt | STM32F412裸機(jī)(BB:bare board)藍(lán)牙工程 | |
stm32h750_bb_bt | STM32H750裸機(jī)(BB:bare board)藍(lán)牙工程 | |
linux_bt | Linux 藍(lán)牙工程 | |
windows_bt | Windows藍(lán)牙工程 | |
python_tool | convert_binayr_file_to_array.py | 把二進(jìn)制文檔轉(zhuǎn)換為數(shù)據(jù)的python工具 |
corvert_opcode_to_ogf_ocf.py | 把HCI opcode轉(zhuǎn)換為OGF,OCF |
目前包含HCI、L2CAP、SDP、RFCOMM、HFP、SPP、A2DP、AVRCP、AVDTP、AVCTP、OBEX、PBAP等協(xié)議。
藍(lán)牙協(xié)議分層簡(jiǎn)介
協(xié)議縮寫 | 全稱 | 作用描述 | 關(guān)鍵特性 |
---|---|---|---|
HCI | Host Controller Interface | 主機(jī)與藍(lán)牙控制器之間的通信橋梁 | 標(biāo)準(zhǔn)化命令接口,硬件無(wú)關(guān)性 |
L2CAP | Logical Link Control & Adaption | 數(shù)據(jù)包分片/重組、協(xié)議復(fù)用 | 支持CID通道標(biāo)識(shí),提供邏輯鏈路 |
SDP | Service Discovery Protocol | 設(shè)備間服務(wù)發(fā)現(xiàn)與屬性查詢 | 無(wú)連接協(xié)議,基于UUID匹配服務(wù) |
RFCOMM | Radio Frequency Communication | 模擬串口通信(基于L2CAP) | 支持多路復(fù)用,兼容傳統(tǒng)串口設(shè)備 |
HFP | Hands-Free Profile | 車載/耳機(jī)免提通話控制(依賴RFCOMM) | 支持音頻傳輸與電話控制指令 |
SPP | Serial Port Profile | 基于RFCOMM的串口數(shù)據(jù)透?jìng)?/td> | 替代傳統(tǒng)有線串口 |
A2DP | Advanced Audio Distribution | 高質(zhì)量音頻流傳輸(如立體聲音樂) | 使用AVDTP協(xié)議傳輸編碼音頻 |
AVRCP | Audio/Video Remote Control | 媒體播放控制(播放/暫停/音量) | 與A2DP配合使用,支持元數(shù)據(jù)傳輸 |
AVDTP | Audio/Video Distribution Transport | 定義音頻流傳輸?shù)慕?、配置和管?/td> | 支持同步信道(SCO/eSCO) |
AVCTP | Audio/Video Control Transport | 傳輸AVRCP控制指令(基于L2CAP) | 提供可靠指令傳輸通道 |
OBEX | Object Exchange | 文件/對(duì)象傳輸(如vCard、圖片) | 獨(dú)立于傳輸層(支持RFCOMM/USB等) |
PBAP | Phone Book Access Profile | 同步手機(jī)通訊錄(基于OBEX) | 支持vCard格式數(shù)據(jù)交換 |
分層結(jié)構(gòu)
-
- :協(xié)議棧按功能劃分為主機(jī)控制層、邏輯鏈路層、服務(wù)發(fā)現(xiàn)層、傳輸協(xié)議層和應(yīng)用協(xié)議層。
依賴關(guān)系
-
- :
-
- RFCOMM/A2DP/AVRCP 依賴 L2CAP 提供的基礎(chǔ)傳輸能力AVDTP/AVCTP 是音視頻專用的傳輸協(xié)議OBEX/PBAP 可實(shí)現(xiàn)跨傳輸層的對(duì)象交換
-
應(yīng)用場(chǎng)景:
-
- 音頻場(chǎng)景:A2DP + AVRCP + AVDTP數(shù)據(jù)傳輸:SPP + RFCOMM設(shè)備控制:HFP + PBAP
btstack資料
btstack作者的csdn博客上也有很多藍(lán)牙相關(guān)的文章:
https://blog.csdn.net/xiaoxiaopengbo/category_10215137.html
除此之外,還有配套硬件、上位機(jī)與配套視頻: