BLE 的全称叫做 Bluetooth Low Energy,也称之为低功耗蓝牙,与之对应的是 Classic Bluetooth,经典蓝牙
在兼容性上,BLE 蓝牙不兼容 Classic 的版本,可以理解成为独立的一种蓝牙形态
BLE 采用与 BT 相同的工作频率(2.400GHz-2.4835GHz - ISM频带),但不同于BT 79 个 1MHz 信道,BLE 使用 40 个 2MHz 信道
由于使用了免许可的 2.4GHz 频段,这个频段很多无线产品都在用(WIFI),所以为了稳定性引入跳频技术(Hopping),蓝牙在连接状态下,双方在约定好的时间段同时跳到另外的频率上进行数据收发,避免了信道上的数据拥堵
在一颗蓝牙芯片上,既能够支持 BT 也支持 BLE 的,称之为双模。否则,为单模。如手机上的蓝牙芯片,绝大多数都是双模的蓝牙芯片
协议规范: https://www.bluetooth.com/specifications/bluetooth-core-specification/
• Standby State--------------------备用状态,不收发数据包
• Advertising State-----------------广播状态
• Scanning State-------------------扫描状态
• Initiating State--------------------发起态,用于连接设备
• Connection State ----------------连接态,initiator 即发起连接的为 Central,advertiser 即发广播的为 Peripheral
• Synchronization State------------同步态,用于周期性广播的数据同步
在同一时刻,BLE 设备只能处于上述状态中的一种,对于上层来说,BLE 可能即在Connection 状态又同时在 Initiating 状态,但是对于底层PHY其是分时复用的
每个 BLE 设备都有一个 ID,也叫 BD Address,由 48 bits 构成,分为两大类:
由 company_assigned [24 bits] 和 company_id [24 bits] 构成,需要到蓝牙组织那里去申请(花钱买),防止冲突
最高两 bit 恒定为 11,剩余的 46bits 是一个随机数,不能全部为0,也不能全部为1
上电的时候随机生成,并且在一个上电周期内保持不变,下一次上电的时候可以改变,也可以保持不变
私有地址,根据地址是否加密,又分为了两类:
不加密,定时更新
和 Static Address 类似,不同之处在于,Non-resolvable private address会定时更新。更新的周期由 GAP 规定的,称作 T_GAP(private_addr_int) ,建议值是15分钟
最高两bit恒定为 00,剩余的 46bits 是一个随机数,不能全部为0,也不能全部为1
以 T_GAP 为周期,定时更新,此地址不能和 public device address 冲突
加密,定时更新
这种地址也称 RPA 加密地址,只能被拥有相同 Identity Resolving Key (IRK) 的设备扫描到,可以防止被未知设备扫描和追踪
最高两位是 10,prand 除了最高两位以外,是一个随机数,hash 部分是通过 IRK 和 prand 计算出来的 hash 值
当 A 端向 B 端发送 RPA 的时候,B 端会使用 A 的 prand 和 B 端的 IRK 进行同样的 hash 运算,并将计算的 hash 和 A 的 hash 字段进行比较,相同才可正常通信
综上所述,48bits 地址类型分类如下:
BLE 工作在 2.4GHz 的频段上,分为 40 个 RF 物理信道,每个信道 2M,用 Ch0 - Ch39 进行编号,同一时刻只能用一个信道进行数据收发,信道分为两类:
指蓝牙芯片,包括BR/EDR芯片(蓝牙2.1芯片),AMP芯片(蓝牙3.0芯片),LE芯片(蓝牙4.0芯片),后续我们把4.0以下统称为传统蓝牙,4.0以上称为低功耗蓝牙
射频层,本地蓝牙数据通过射频发送给远端设备,并且通过射频接收来自远端蓝牙设备的数据
基带层,进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程
链路管理层,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作
BLE 物理层
BLE 链路层
主机控制器接口层,在 controller 以及 host 都有,在硬件接口(UART/USB/SDIO)基础上实现 Host 跟 Controller 的交互,有以下几种方式:
基于 USB
基于 UART,三者区别在于 H4 需要 TX/RX/CTS/RTS/VCC/GND 接到MCU,即需要硬件流控,而 H5/BCSP 只需要 TX/RX/VCC/GND 接到MCU就可以通信,不需要硬件流控。其数据类型有如下几种:
由 Host 发送给 Controller 的命令
Host 和 Controller 双向交互的普通数据
Host 和 Controller 双向交互的通话/语音识别等音频数据
由 Controller 上报给 Host 的事件
core5.2添加,Host 和 Controller 双向交互的 LE audio 数据包格式
逻辑链路控制与适配协议,将 ACL 数据分组交换为便于高层应用的数据分组格式,并提供协议复用和服务质量交换等功能
串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM
对象交换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX
蓝牙免提协议
蓝牙耳机协议,最开始的蓝牙耳机协议,目前已经没有产品在用这个了,算是一个简化版的HFP
蓝牙串口协议
苹果的特有协议,分为IAP1/IAP2,一般做Carplay或者iPod功能
蓝牙电话本访问协议
蓝牙短信访问协议
对象推送协议
音视频控制传输协议,是 AVRCP 的底层
蓝牙音乐控制协议
音视频分布传输协议,是 A2DP 的底层
蓝牙音乐协议
服务发现协议,服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征
人机接口协议
蓝牙属性协议。针对 BLE 设备,用于发现、读、写对端设备,设备作为服务端提供拥有关联值的属性集 ,让客户端设备来发现、读、写这些属性,同时服务端能主动通知客户端
蓝牙通用属性协议。描述了一种使用ATT的服务框架 ,该框架定义了服务(Server)和服务属性(characteristic)的过程(Procedure)及格式
蓝牙BLE安全管理协议
蓝牙应用层,比如要做耳机,做蓝牙HID设备,做车载,做蓝牙防丢器,做蓝牙穿戴设备等等
文章浏览阅读2.1k次。SqlServer事务回滚(2)SQL Server 2008中SQL应用系列--目录索引SQL事务 一、事务概念 事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、_vb.net sqlserver事务打开
文章浏览阅读753次。- _groupid>org.apache.zookeeper
文章浏览阅读8k次,点赞2次,收藏12次。Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。示例1:Java 8中获..._java8位日期转为2020年7月18日
文章浏览阅读279次。JOB定时器定时器就是定时来完成某些操作的。 查看定时器的详细信息,查询数据库字典 user_jobs : select job,next_date,next_sec,broken from user_jobs;一、过程: 包含以下子过程:  Broken()过程。 change()过程。 Interval()过程。 Isubmit()过程。 ..._job定时器在线时间配置
文章浏览阅读85次。HDU 5898odd-even number题意:如果一个数连续的奇数之和为偶数,连续的偶数之和为奇数则满足条件,问某一区间内满足条件的数字的个数。思路:数位DP,dp[i][j][k][u]表示计算到底i位,是否为临界值,上一位是奇还是偶,连续奇或偶有u个,在dfs是多记录一下该数前面是不是全为0以及该数是不是已近不满足条件。#include<cstdio>..._hdu 5898
文章浏览阅读6.2k次,点赞2次,收藏9次。Hive 表去除重复记录_hive sql 去重
文章浏览阅读1.7k次。最终可以得到这样的图:跟风写个标题,原视频在B站,搜标题即可看到(UP主:TOP菌)。如果你对视频中的内容有不清楚/不认同的地方,欢迎在评论区留言讨论。涉及到的知识点包括且不限于:小提琴图,添加均值标记,拼图ggplot2绘制聚类热图,数据框长宽转换单细胞分析如何使用特定的基因聚类使用每个cluster的均值画热图,分组统计..._单细胞小提琴图
文章浏览阅读5.6k次,点赞5次,收藏72次。【Cadence17.2】PCB Editor绘制元器件封装LP Viewer计算元器件封装PCB Editor绘制元器件封装准备工作放置焊盘绘制丝印层绘制装配层绘制禁止摆放区域添加参考编号LP Viewer计算元器件封装在使用LP Viewer计算元器件封装尺寸之前,我们首先需要找到该元器件的数据手册,获取它的尺寸信息。如上图所示,本文以AD627为例进行讲解,由此图可知该芯片的各种尺寸并且其封装为SOIC。准备好数据手册之后,打开LP Viewer,依次点击Calculate->SMD _cadence丝印层怎么画
文章浏览阅读1.2w次。1.如果master不设置密码,那么直接在slave服务器配置slaveof即可 配置如下#slaveof ip 端口slaveof 221.224.85.186 6379 配置好我们看下redis的日志 看是否同步成功5014:S 25 Jan 10:53:53.667 * Connecting to MASTER 221.224.85.186:63795014:S 25 Jan 10:5_redis 从节点输入auth 123456 master还是获取不懂salve
文章浏览阅读1.4k次。制作CHM文档,方便小巧还易于查看,用处自不必多说了,最近想把这个季度所学习的内容全部制作成CHM格式文档,给自己后续用来温故而知新,同时也可以做为后起之秀避坑法宝。但是在生成CHM文档之后发现有些地方的图片看不见了,只留下空白。 下面介绍遇到这种问题的解决办法:1、先准备将需要制作成的文档转换成HTML格式,如果是word格式的可以直接另存为为html格式,如果是网页可以直接保存2、如果是网页形..._chm不显示图片
文章浏览阅读3.7k次。摘要:博客网站平台选择对了,可以帮助你让博客真正落地,让你在这个新项目中应付自如。在本文中,我们将对网络上九个顶级的免费博客网站做一下横向比较,希望能在选择合适的站点这个问题上帮助到你。那就让我们开始吧!弄一个博客听起来好简单 – 你只要捡一个主题然后写就行了。不过,比起这种简单的想法,实际要麻烦得多。比如,你也需要选择合适的平台来托管这个博客,而做这个决定并不简单哦。博客网站_个人博客免费网站
文章浏览阅读255次。什么是NIC组合 简单来讲,NIC组合就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟的网卡,也就是说,对于外部网络而言,这台服务器只有一个可见的网卡。对于任何应用程序,以及本服务器所在的网络,这台服务器只有一个网络链接或者说只有一个可以访问的IP地址。 之所以要利用NIC组合技术,除了利用多网卡同时工作来提高网络速度以外,还有可以..._nic团队和nic组合是什么意思?