【BLE】基础知识(一)

资料来源:B站:我是鹏老师

https://www.bilibili.com/video/BV1ad4y1d7AM/?spm_id_from=333.337.search-card.all.click

1. 蓝牙广播 Advertising

  • 低功耗蓝牙一共40个信道
  • 频段范围从2402MHz 到 2480MHz
  • 每2MHz 一个信道
  • 其中37 38 39 是广播信道
  • 剩余的是 数据信道
  • 可以看出这3个信道是分布在不同的位置
  • 一个广播数据包最长37个字节 ,
  • 广播数据包总长度 = 6字节(设备地址) + 31字节(有效载荷数据) = 37字节。
  • 这个37字节的限制仅针对广播信道(37, 38, 39)上发送的广播包。设备建立连接后,在数据信道上传输的数据包其长度由不同的机制(MTU)决定,可以更长
  • 其中6个字节用作蓝牙设备的MAC地址
  • 剩下的31字节是用户数据
  • 用户字节由多段类型组成
  • 蓝牙规范里叫 AD Structure
  • 每一个类型由 长度 + 类型 + 内容组成
  • 其中 长度 = 类型 + 内容长度
  • 蓝牙设备名称采用的是 UTF-8 编码

  • 官方文档

2. 蓝牙广播类型

  • 蓝牙广播是从机主动发射的一些数据
  • 扫描响应 是 从机收到主机的 扫描请求后 回复给 主机的数据
  • 蓝牙广播和扫描响应的数据格式一样


    数据长度超过31字节 可以把一部分数据放在 扫描响应数据里面

3. 蓝牙状态切换

  • 共有5种状态
  • 广播态 扫描态 就绪态 连接态 发起态

4. 服务和特性


  • 每一个服务和特性都要有一个UUID
  • UUID有128位和16位之分,16位是一个简化版本的


5. 数据收发

  • 每一个特性可以看作一个数据点

  • 数据的收发都要依托于这些数据点

  • 每一个特征可以设置对应的几种数据权限

  • 创建特性的时候可以给特性赋予其中的一种或者几种权限

1. Read 读操作
  • 是主机读取从机 某个特征的值
  • 客户端发送一个"读请求",服务器回复一个"读响应",其中包含特征值的数据。
2. Write 写操作
  • 是主机修改 某个特征的值 【写完之后需要设备回应】
  • 客户端发送一个"写请求",服务器处理完成后,必须回复一个"写响应"来确认写入成功或失败。这是一种可靠的写入方式。
3. Write With No Response 无响应写入
  • 【写完之后不需要设备回应】
  • 客户端发送一个"写命令",服务器接收但不回复。如果数据包丢失,协议栈不会重传。
4. Notify 通知
  • 客户端必须先写入CCCD 为 0x0001 来"订阅"通知
  • 此后,每当服务器的特征值变化,它就会自动向客户端发送一个"通知"数据包。
  • 设备数据发生更新,通知主机来取数据, 需要主机订阅相应的通知才有效 【不需要主机回应】
5. Indicate 指示
  • 【需要主机回应】
  • 客户端必须先写入CCCD 为 0x0002 来"订阅"指示,服务器发送一个"指示"数据包。
    客户端收到后,必须回复一个"确认"帧。服务器收到确认后,才会认为发送成功,否则会重传。

依赖关系:Notify和Indicate功能依赖于一个特殊的描述符------客户端特征配置描述符。客户端必须通过写入该CCCD来启用或禁用通知/指示功能

6. UUID



  • 讲述每个特性 数值类型 以及 范围

7. SPP

  • SPP协议全称 : Serial Port Profile
  • 通过蓝牙实现的串口数据透传

  • 经典蓝牙的SPP协议
  • 在低功耗蓝牙规范里 并没有定义 SPP服务标准
  • 自定义一个特性实现 串口透传标准
相关推荐
三品吉他手会点灯25 分钟前
STM32 VSCode 开发-与STM32CubeMX协同开发环境搭建
vscode·stm32·单片机·嵌入式硬件
kaikaile199540 分钟前
STM32 + MODBUS RTU + RS485 实现方案
stm32·单片机·嵌入式硬件
zy135380675731 小时前
6v/2.7A的H桥驱动芯片AH6227主要用于5v的适配器上
stm32·单片机·嵌入式硬件
维吉斯蔡1 小时前
【计算机是怎样跑起来的】(二)CPU、内存、I/O 和总线到底是什么?
笔记·stm32·单片机·物联网·计算机外设·51单片机
BT-BOX1 小时前
基于STM32的多参数物联网安防监测与远程报警系统
stm32·嵌入式硬件·物联网
三品吉他手会点灯1 小时前
STM32 VSCode 开发-C语言程序运行后,终端中文乱码
c语言·ide·笔记·vscode·stm32·学习·编辑器
yugi9878382 小时前
STM32F407 + EC20 串口透传 TCP DTU 实现方案
stm32·嵌入式硬件·tcp/ip
Championship.23.242 小时前
2026年AI辅助STM32 IoT实战:从串口到云平台全指南
人工智能·stm32·物联网
Deitymoon2 小时前
STM32——按键控制led灯
stm32·单片机·嵌入式硬件
三品吉他手会点灯3 小时前
STM32 VSCode 开发-与Keil MDK协同开发环境搭建
笔记·vscode·stm32·单片机·嵌入式硬件