推荐一款便于学习的开源蓝牙协议栈!

大家好,我是杂烩君。

本次我们来介绍一个开源的双模蓝牙协议栈——btstack。

btstack简介

btstack一个包含传统蓝牙跟低功耗蓝牙的协议栈,属于超轻量级蓝牙协议栈,用作学习蓝牙协议栈的人使用。

与其他协议栈的对比

Github链接:

https://github.com/sj15712795029/bluetooth_stack

bluetooth_stack专注于嵌入式平台(如STM32),其代码结构精简高效,支持HCI层以上的核心协议(如L2CAP、ATT、GATT等),而底层依赖芯片自带协议栈(如CSR8311)。这种设计既降低了硬件适配成本,又保留了蓝牙协议的核心功能,特别适合资源受限的嵌入式场景。

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

源码目录结构:

目录文件夹子目录文件夹说明
boardstm32f10xSTM32F103板载外设驱动
stm32f407STM32F407板载外设驱动
stm32f412STM32F412板载外设驱动
bspcortex-m3Cortex M3 Driver库(M3默认用标准库)
cortex-m4Cortex M4 Driver库(M3默认用HAL库)
componentbluetooth蓝牙协议栈源码
cjsonjson源码(目前用于跟上位机交互)
fsfile system文件系统,目前用于管理spi flash
memory_manager内存管理,目前用于管理STM32F407的SRAM
ringbuffer环形数组,用于蓝牙接收串口数据
mcu_bt_toolPC上位机,用于控制STM32开发板,以及接受STM32的状态回传
projectstm32f10x_bb_btSTM32F103裸机(BB:bare board)蓝牙工程
stm32f407_bb_btSTM32F407裸机(BB:bare board)蓝牙工程
stm32f412_bb_btSTM32F412裸机(BB:bare board)蓝牙工程
stm32h750_bb_btSTM32H750裸机(BB:bare board)蓝牙工程
linux_btLinux 蓝牙工程
windows_btWindows蓝牙工程
python_toolconvert_binayr_file_to_array.py把二进制文档转换为数据的python工具
corvert_opcode_to_ogf_ocf.py把HCI opcode转换为OGF,OCF

目前包含HCI、L2CAP、SDP、RFCOMM、HFP、SPP、A2DP、AVRCP、AVDTP、AVCTP、OBEX、PBAP等协议。

蓝牙协议分层简介

协议缩写全称作用描述关键特性
HCIHost Controller Interface主机与蓝牙控制器之间的通信桥梁标准化命令接口,硬件无关性
L2CAPLogical Link Control & Adaption数据包分片/重组、协议复用支持CID通道标识,提供逻辑链路
SDPService Discovery Protocol设备间服务发现与属性查询无连接协议,基于UUID匹配服务
RFCOMMRadio Frequency Communication模拟串口通信(基于L2CAP)支持多路复用,兼容传统串口设备
HFPHands-Free Profile车载/耳机免提通话控制(依赖RFCOMM)支持音频传输与电话控制指令
SPPSerial Port Profile基于RFCOMM的串口数据透传替代传统有线串口
A2DPAdvanced Audio Distribution高质量音频流传输(如立体声音乐)使用AVDTP协议传输编码音频
AVRCPAudio/Video Remote Control媒体播放控制(播放/暂停/音量)与A2DP配合使用,支持元数据传输
AVDTPAudio/Video Distribution Transport定义音频流传输的建立、配置和管理支持同步信道(SCO/eSCO)
AVCTPAudio/Video Control Transport传输AVRCP控制指令(基于L2CAP)提供可靠指令传输通道
OBEXObject Exchange文件/对象传输(如vCard、图片)独立于传输层(支持RFCOMM/USB等)
PBAPPhone Book Access Profile同步手机通讯录(基于OBEX)支持vCard格式数据交换
  1. 分层结构:协议栈按功能划分为主机控制层、逻辑链路层、服务发现层、传输协议层和应用协议层。
  2. 依赖关系
    • RFCOMM/A2DP/AVRCP 依赖 L2CAP 提供的基础传输能力
    • AVDTP/AVCTP 是音视频专用的传输协议
    • OBEX/PBAP 可实现跨传输层的对象交换
  3. 应用场景
    • 音频场景:A2DP + AVRCP + AVDTP
    • 数据传输:SPP + RFCOMM
    • 设备控制:HFP + PBAP

btstack资料

btstack作者是一位经验很丰富的蓝牙车载经验。其csdn博客上也有很多蓝牙相关的文章:

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

除此之外,还有配套硬件、上位机与配套视频:

感兴趣的朋友可自行去了解:

https://github.com/sj15712795029/bluetooth_stack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式大杂烩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值