徐松亮蓝牙教学-杂项笔记
版权声明:本文为博主徐松亮的原创作品,未经允许不得转载,多谢支持!QQ:5387603
既然叫杂项笔记,就是说杂乱无章的笔记,此笔记的主要目的不是为了教学,而是用于本人学习过程中的点滴记录,之所以开放,就是希望能给新手及爱好者些许点滴概念性帮助。
目录
1,蓝牙芯片介绍
-
nRF51822芯片说明
-
2.4GHZ多协议无线射频
-
32位ARM Cortex M0 处理器
-
128位AES硬件加密处理器
-
256kB flash / 16kB RAM
-
可编程外设接口PPI
-
全功能数字接口: SPI / I2C / UART
-
10位ADC
-
可编程的输出功率: +4dBm to -20dBm
-
应用开发和协议堆栈完全独立
-
与NRF24L系列完全兼容
-
与NRF51xxx 系列管脚兼容
-
全局独立电源管理
-
工作电压范围(1.8 V ~ 3.6 V)
-
可配置的31个GPIO
-
Real Timer Counter (RTC)
-
空中速率:蓝牙4.0时1Mbps,私有协议2Mbps
-
内置DC/DC功能,工作电压1.8~3.6V。
-
-
2,概念
-
主机如何知道外围设备的存在
-
外围设备广播信息。
-
主机主动扫描,外围设备回复扫描响应以告知主机。
-
-
可发现模式
-
由广播中的flag标志设置。
-
有限可发现模式:广播间隔快,但最大只能持续最多30s
-
通用可发现模式:广播间隔相对较慢,广播没有最大还需时间限制。
-
3,通道
-
BLE中有3个广播信道和37个数据信道。每次广播间隔时间到期后会在3个广播信道中发送广播数据
4,广播数据:
-
BLE链路层最大数据负载是296Bit(37Byte)。因为广播数据中需要有设备地址(6Byte),因此有效数据为31Byte。
5,地址:
-
可以使用随机地址或者注册的public address。
-
随机地址的最高两个bit为1
6,更多的广播数据:
-
如果需要广播超过31字节的数据,需要使用扫描响应。主机需要发送扫描请求。
7,广播和扫描参数:
-
广播间隔
-
广播的发送周期
-
-
扫描间隔
-
扫描的周期。
-
-
扫描窗口
-
扫描周期到来后,设备扫描持续的时间。
-
8,连接参数:
-
连接间隔:连接的周期,设备只能在连接周期到了才能交互数据。
-
从设备延迟:以连接间隔为单位。该参数表示从设备在必须侦听自己的接收机以接收主设备可能的发送数据之前可以忽略多少个连接事件。
-
监控超时时间:该时间范围内连接都丢失了则会产生超时事件。
9,通知和指示:
-
通知和指示就是应用于这种应用而创建的有服务器主动发起数据的方式。区别在于通知只发送数据不需确认。而指示需要客户端回复确认,因此被认为是可靠传输。
10,属性:
-
一条带有标签的,可以被寻址的数据。由三种数值组成:句柄,类型,值。
11,特性:
-
可以看成一种或几种属性的组合。包含三个基本要素:声明,数值,描述符。(这三个每个都是一个属性)
-
声明:一条属性,值域中包含三个字段:特性性质(读/写/通知等等),特性数值句柄(数值属性的地址),属性uuid(用来识别特性 数值的类型)。
-
数值:一条包含特性数值的属性。
-
描述符:一个特性可以包含0或多个特性描述符。客户端特性配置描述符(CCCD),特性表示描述符等。
12,AP/GATT/GAP/L2CAP
- AP
- Attribute Protocol
- 属性协议
- 属性协议定义了客户端与服务器如何相互发送符合标准的消息。属性协议由六种基本操作构成:请求,响应,命令,指示,通知,确认。(当然每种操作下又含有不同的‘操作’,比如请求又分读取请求,写入请求等)
- GATT
- Generic Attribute Protocol
- 通用属性配置文件
- 通用属性规范:定义了服务和特性的过程和数据格式,包含:
- 配置交换
- 设备服务和特性发现
- 写入一个特性值
- 特性值通知
- 特性值指示
- GAP
- Generic Access Profile
- 通用访问规范
- 通用访问规范:定义了设备如何彼此发现,建立连接以及如何实现绑定,同时描述了设备如何成为广播者和观察者,并且实现无连接的数据传输。
- L2CAP
- Logical Link Control and Adaptation Protocol
- 逻辑链路控制与适应协议
13,BLE通讯流程:广播-扫描-连接-配对-绑定
- 起初并未提供安全性的两个设备如果希望做一些需要安全性的工作,首先必须配对。
- 配对过程 涉及配对信息的交换,链路认证。
- 如果设置了绑定位,还会有秘钥的分发,分发的秘钥可以存储下来。当下次需要安全链路时便可不必再次配对。
14,蓝牙基本速率/增强数据率:
- 经典蓝牙 BR/EDR : 79个信道 2400-2483.5MHz
- 低功耗蓝牙 Bluetooth Smart: 40个信道 2402-2480MHz
- 广播信道 37/38/39 2402/2426/2480
- 数据信道 其他
15,Peer Manager:
- 用来管理绑定的模块程序,包含加密和配对,存储绑定数据片
16,5种状态:
- 旁路状态
- 广告状态
- 扫描状态
- 发起状态
- 链接状态
17,报文格式
前导 接入地址 报头 长度 数据 校验
1B 4B 1B 1B 0~37B 3B
- 前导
- 01010101或10101010
- 接入地址
- 广播地址:8E89BED6
- 其他地址:非广播地址
- 报头
- 广播报头
- 类型 4bit
- 1....1. 通用广播指示 0 可被扫描被连接
- 1....2. 定向连接指示 1 快速建立连接,报文包含自己信息
- 1....3. 不可连接指示 3 只广播数据,不能被扫描被连接
- 1....4. 可扫描指示 2 可被扫描,不能被连接
- 1....5. 主动扫描请求
- 1....6. 主动扫描响应
- 1....7. 连接请求
- 保留 2bit
- 发送地址类型 1bit
- 接收地址类型 1bit
- 类型 4bit
- 数据报头
- 链路层标识符 2bit
- 1....1. 链路层控制报文 11
- 1....2. 高层报文开始 10
- 1....3. 高层报文延续 01
- 下一报文序号 1bit
- 序号 1bit
- 更多数据 1bit
- 1....1. 继续 1
- 1....2. 断开连接 0
- 保留 3bit
- 链路层标识符 2bit
- 广播报头
- 长度
- 广播长度
- 数据长度
- 加密长度
- 数据
- 校验 CRC24