【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服务标准
  • 自定义一个特性实现 串口透传标准
相关推荐
BSD_CGQ7 小时前
FSR传感器STM32 DMA高速采样工程实现(高精度、低CPU占用)
stm32·单片机·嵌入式硬件·压力传感器·源头工厂·柔性薄膜压力传感器·可变电阻压力传感器
骑着毛驴数星星10 小时前
STM32 CAN波特率与采样点计算,基于HAL库
stm32·单片机·嵌入式硬件
新晨单片机设计12 小时前
S023A-基于STM32单片机智能插座【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·单片机智能插座
qq_4017004113 小时前
STM32 GPIO 精讲|推挽 / 开漏 / 上拉浮空,工程选型避坑
stm32·单片机·嵌入式硬件
创界工坊工作室14 小时前
19-基于单片机的宠物喂养控制系统设计
stm32·单片机·嵌入式硬件·proteus·宠物
..Dauntless..19 小时前
【stm32】I2C(二)——Master和Slave之间的协议
stm32·单片机·嵌入式硬件
硅基手札19 小时前
【串口技术系列文档 04】UART协议深度解析
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
Zw-awa20 小时前
陀螺小车传奇之00011000
c语言·stm32
Zhang.Yi20 小时前
STM32-BKP和RTC
stm32·嵌入式硬件·实时音视频
意法半导体STM3221 小时前
【官方原创】LAT1724 STM32CubeIDE for VSCode 修改链接文件中的起始地址无效?
vscode·stm32·单片机·嵌入式硬件·mcu·stm32cube