• 正文
    • btstack简介
    • btstack资料
  • 相关推荐
申请入驻 产业图谱

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

04/03 13:45
863
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是杂烩君。本次我们来介绍一个开源的双模蓝牙协议栈——btstack。

btstack简介

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

与其他协议栈的对比

Github链接:

https://github.com/sj15712795029/bluetooth_stack

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

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 蓝牙协议栈源码
cjson json源码(目前用于跟上位机交互)
fs file system文件系统,目前用于管理spi flash
memory_manager 内存管理,目前用于管理STM32F407的SRAM
ringbuffer 环形数组,用于蓝牙接收串口数据
mcu_bt_tool PC上位机,用于控制STM32开发板,以及接受STM32的状态回传
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 把二进制文档转换为数据的python工具
corvert_opcode_to_ogf_ocf.py 把HCI opcode转换为OGF,OCF

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

蓝牙协议分层简介

协议缩写 全称 作用描述 关键特性
HCI Host Controller Interface 主机与蓝牙控制器之间的通信桥梁 标准化命令接口,硬件无关性
L2CAP Logical Link Control & Adaption 数据包分片/重组、协议复用 支持CID通道标识,提供逻辑链路
SDP Service Discovery Protocol 设备间服务发现与属性查询 无连接协议,基于UUID匹配服务
RFCOMM Radio Frequency Communication 模拟串口通信(基于L2CAP) 支持多路复用,兼容传统串口设备
HFP Hands-Free Profile 车载/耳机免提通话控制(依赖RFCOMM) 支持音频传输与电话控制指令
SPP Serial Port Profile 基于RFCOMM的串口数据透传 替代传统有线串口
A2DP Advanced Audio Distribution 高质量音频流传输(如立体声音乐) 使用AVDTP协议传输编码音频
AVRCP Audio/Video Remote Control 媒体播放控制(播放/暂停/音量) 与A2DP配合使用,支持元数据传输
AVDTP Audio/Video Distribution Transport 定义音频流传输的建立、配置和管理 支持同步信道(SCO/eSCO)
AVCTP Audio/Video Control Transport 传输AVRCP控制指令(基于L2CAP) 提供可靠指令传输通道
OBEX Object Exchange 文件/对象传输(如vCard、图片) 独立于传输层(支持RFCOMM/USB等)
PBAP Phone Book Access Profile 同步手机通讯录(基于OBEX) 支持vCard格式数据交换

分层结构

    1. :协议栈按功能划分为主机控制层、逻辑链路层、服务发现层、传输协议层和应用协议层。

依赖关系

      • RFCOMM/A2DP/AVRCP 依赖 L2CAP 提供的基础传输能力AVDTP/AVCTP 是音视频专用的传输协议OBEX/PBAP 可实现跨传输层的对象交换

应用场景

    • 音频场景:A2DP + AVRCP + AVDTP数据传输:SPP + RFCOMM设备控制:HFP + PBAP

btstack资料

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

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

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

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

本公众号专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,公众号内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!