协议组成
协议由 HOST 层和 CONTROLLER 层组成
== CONTROLLER==
- PHY:基带物理层
- LL:链路层
- HCI: 主机控制接口
==HOST ==
- L2CAP:逻辑链路控制和适配器
- ATT:属性协议
- GATT:属性协议配置规范
- SM:安全管理
- GAP:通用访问规范
CONTROLLER
PHY:基带物理层
- 频段
- 调制
- 射频信道
- 发射功率
LL:链路层
链路层定义了两个设备如何利用无线电传输信息,包含了报文、广播、数据通道的详细定义,也规定了发现其他设备的流程、广播的数据、连接建立、连接管理以及连接中的数据传输。
- 链路层的状态机
- 就绪态(Standby)
- 广播态(Advertising)
- 扫描态(Scanning)
- 发起态(Initiating)
- 连接态(Connection
- bit 数据流格式
PDU :Protocol Data Unit 协议数据单元,在一个传输单元中的有效传输数据
- Little Endian format(小端模式)
- 数据包中的 Cyclic Redundancy Check (CRC) 循环冗余码校验和 Message Integrity Check (MIC)信息完整性检查->先发送数据的高字节
- Preamble 前导码
- 硬件实现
All Link Layer packets have an eight bit preamble. The preamble is used in the receiver to perform frequency synchronization, symbol timing estimation, and Automatic Gain Control (AGC) training.
- Access Address 接入地址
接入地址是紧跟前导码的 32 个 bit, 它分为两种类型:
广播接入地址
数据接入地址
- Cyclic Redundancy Check (CRC) 循环冗余码校验
- DATA WHITENING 数据白化
- 链路层报文结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zm0Ti7Jb-1618151865625)(https://github.com/zhangyuhu/MarkdownPhotos/blob/master/BLE/%E9%93%BE%E8%B7%AF%E5%B1%82%E5%8C%85%E6%A0%BC%E5%BC%8F_2.png)] - 广播通道的 PDU
- 数据通道的 PDU
- 非连接状态
- 就绪态
就绪状态是一个默认的状态,在这个状态是不能进行数据收发的,
它可以进入广播状态、扫描状态和发起状态。
- 广播态
在广播状态下,链路层在广播事件中发送广播 PDU
- 非定向可连接事件(ADV_IND)
- 定向可连接事件(ADV_DIRECT_IND)
- 非定向不可连接事件(ADV_NONCONN_IND)
- 非定向扫描事件(ADV_DISCOVER_IND/ADV_SCAN_IND)
- 扫描态
扫描窗口和扫描间隔。 扫描窗口(scanWindow) 是链路层侦听广播通道时持续的时间;扫描间隔(scanInterval) 是两个连续的扫描窗口开始之间的时间。
在协议中规定: The scanWindow and scanInterval parameters shall be less than or equal to 10.24 s.也就是他们的最大值是 10.24s。 而且扫描窗口必须小于等于扫描间隔, 当扫描窗口等于扫描间隔时,相当于连续扫描。
- 发起态
发起态进入连接后成为主机设备。它做的工作是在扫描态的事情之后发送连接请求。当接收到了扫描应答后,发送连接请求事件,从而跳出发起态并进入连接状态成为主机。
- 非连接状态