• 正文
    • btstack簡介
    • btstack資料
  • 相關推薦
申請入駐 產業(yè)圖譜

推薦一款便于學習的開源藍牙協(xié)議棧!

04/03 13:45
645
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是雜燴君。本次我們來介紹一個開源的雙模藍牙協(xié)議?!猙tstack。

btstack簡介

btstack一個包含傳統(tǒng)藍牙跟低功耗藍牙的協(xié)議棧,屬于超輕量級藍牙協(xié)議棧,用作學習藍牙協(xié)議棧的人使用。

與其他協(xié)議棧的對比

Github鏈接:

https://github.com/sj15712795029/bluetooth_stack

bluetooth_stack專注于嵌入式平臺(如STM32),其代碼結構精簡高效,支持HCI層以上的核心協(xié)議(如L2CAP、ATT、GATT等),而底層依賴芯片自帶協(xié)議棧(如CSR8311)。這種設計既降低了硬件適配成本,又保留了藍牙協(xié)議的核心功能,特別適合資源受限的嵌入式場景。

btstack可以運行在STM32、Linux上。目前支持的平臺:

源碼目錄結構:

目錄文件夾 子目錄文件夾 說明
board stm32f10x STM32F103板載外設驅動
stm32f407 STM32F407板載外設驅動
stm32f412 STM32F412板載外設驅動
bsp cortex-m3 Cortex M3 Driver庫(M3默認用標準庫)
cortex-m4 Cortex M4 Driver庫(M3默認用HAL庫)
component bluetooth 藍牙協(xié)議棧源碼
cjson json源碼(目前用于跟上位機交互)
fs file system文件系統(tǒng),目前用于管理spi flash
memory_manager 內存管理,目前用于管理STM32F407的SRAM
ringbuffer 環(huán)形數(shù)組,用于藍牙接收串口數(shù)據(jù)
mcu_bt_tool PC上位機,用于控制STM32開發(fā)板,以及接受STM32的狀態(tài)回傳
project stm32f10x_bb_bt STM32F103裸機(BB:bare board)藍牙工程
stm32f407_bb_bt STM32F407裸機(BB:bare board)藍牙工程
stm32f412_bb_bt STM32F412裸機(BB:bare board)藍牙工程
stm32h750_bb_bt STM32H750裸機(BB:bare board)藍牙工程
linux_bt Linux 藍牙工程
windows_bt Windows藍牙工程
python_tool convert_binayr_file_to_array.py 把二進制文檔轉換為數(shù)據(jù)的python工具
corvert_opcode_to_ogf_ocf.py 把HCI opcode轉換為OGF,OCF

目前包含HCI、L2CAP、SDP、RFCOMM、HFP、SPP、A2DP、AVRCP、AVDTP、AVCTP、OBEX、PBAP等協(xié)議。

藍牙協(xié)議分層簡介

協(xié)議縮寫 全稱 作用描述 關鍵特性
HCI Host Controller Interface 主機與藍牙控制器之間的通信橋梁 標準化命令接口,硬件無關性
L2CAP Logical Link Control & Adaption 數(shù)據(jù)包分片/重組、協(xié)議復用 支持CID通道標識,提供邏輯鏈路
SDP Service Discovery Protocol 設備間服務發(fā)現(xiàn)與屬性查詢 無連接協(xié)議,基于UUID匹配服務
RFCOMM Radio Frequency Communication 模擬串口通信(基于L2CAP) 支持多路復用,兼容傳統(tǒng)串口設備
HFP Hands-Free Profile 車載/耳機免提通話控制(依賴RFCOMM) 支持音頻傳輸與電話控制指令
SPP Serial Port Profile 基于RFCOMM的串口數(shù)據(jù)透傳 替代傳統(tǒng)有線串口
A2DP Advanced Audio Distribution 高質量音頻流傳輸(如立體聲音樂) 使用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 文件/對象傳輸(如vCard、圖片) 獨立于傳輸層(支持RFCOMM/USB等)
PBAP Phone Book Access Profile 同步手機通訊錄(基于OBEX) 支持vCard格式數(shù)據(jù)交換

分層結構

    1. :協(xié)議棧按功能劃分為主機控制層、邏輯鏈路層、服務發(fā)現(xiàn)層、傳輸協(xié)議層和應用協(xié)議層。

依賴關系

      • RFCOMM/A2DP/AVRCP 依賴 L2CAP 提供的基礎傳輸能力AVDTP/AVCTP 是音視頻專用的傳輸協(xié)議OBEX/PBAP 可實現(xiàn)跨傳輸層的對象交換

應用場景

    • 音頻場景:A2DP + AVRCP + AVDTP數(shù)據(jù)傳輸:SPP + RFCOMM設備控制:HFP + PBAP

btstack資料

btstack作者的csdn博客上也有很多藍牙相關的文章:

https://blog.csdn.net/xiaoxiaopengbo/category_10215137.html

除此之外,還有配套硬件、上位機與配套視頻:

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

本公眾號專注于嵌入式技術,包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學習筆記,同時,公眾號內包含大量的學習資源。歡迎關注,一同交流學習,共同進步!