【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服务标准
  • 自定义一个特性实现 串口透传标准
相关推荐
都在酒里2 小时前
STM32标准库驱动HC-SR04超声波测距模块(定时器输入捕获,附完整工程代码)
stm32·嵌入式硬件·mongodb
嵌入式小站6 小时前
STM32 零基础可移植教程 03:蜂鸣器响一声,LED 跟着翻转一次
stm32·单片机·嵌入式硬件
星夜夏空997 小时前
STM32单片机学习(15) —— PC串口通信实验
stm32·单片机·学习
星夜夏空997 小时前
STM32单片机学习(14) —— STM32的串口外设
stm32·单片机·学习
都在酒里8 小时前
STM32标准库驱动L298N双H桥电机驱动模块(调速/正反转/多模式实战,附完整工程代码)
stm32·单片机·嵌入式硬件
Hello_Embed8 小时前
USB 学习指南+软硬件框架
网络·笔记·stm32·嵌入式·ai编程
chao1898449 小时前
STM32 MAX30102 血氧浓度(SpO2)和心率测量方案
stm32·单片机·嵌入式硬件
aini_lovee9 小时前
基于STM32F103的数控电源设计方案
stm32·单片机·嵌入式硬件
LCG元9 小时前
STM32实战:基于STM32F103的智能鱼缸监控投喂系统(水质监测+自动换水)
stm32·单片机·嵌入式硬件
一路往蓝-Anbo9 小时前
第四章:手撕协议栈 —— 缓冲区与结构体数据的 Mock 技巧
网络·stm32·单片机·嵌入式硬件·软件工程·tdd