BLE入门谈:从空中数据收发理解BLE(上)( 四 )


BLE要做到主机和从机的功耗都小 , 其要点 , 我概括为“在事先约定的时间地点碰头” 。上面所描述的从机advertising阶段 , 主机因为无法得知从机在哪个时刻在三个信道中的哪一个广播 , 不得不采取守株待兔的办法 , 所以主机耗电不能像从机那样低 。但是两者建立BLE连接之后就不一样了 , 现在回顾主机为了建立连接向从机发送的CONNECT_REQ包的Payload内容:
BLE入门谈:从空中数据收发理解BLE(上)
文章图片

文章图片
除了主机和从机的BLE地址之外 , LLData部分包含了许多字段:
AA: Access Address, 用于数据信道数据包中
CRCInit: 随机生成的CRC初始值
WinSize: Connection Event Transmit Window Size, 以1.25ms为单位
WinOffset: 同上 , Transmit Window的时间偏移量
Interval: Connection Event的间隔时间
Latency: Slave Latency参数
Timeout: connSupervisionTimeout参数 , 以10ms为单位
ChM: 标记要使用的数据信道
Hop: hopIncrement, 是跳频算法的参数
SCA: 主机的sleep时钟误差参数
由以上这些字段决定了BLE连接的初始参数 。从机如何知道主机会在什么时候 , 在那个信道发送数据包?请看下面这个图:
BLE入门谈:从空中数据收发理解BLE(上)
文章图片

文章图片
实际上 , 主机和丛机约定了一个未来的时间窗口 , 主机会在那个时间窗口内发送第一个数据包 , 从机需要保持监听 。因为双方约定了一个时间窗口 , 无线电RX状态的时间就可以缩短了 , 就控制了功耗 。主机发送数据包之后 , 转到接收状态 , 丛机接收到主机的数据包 , 也会很快回应一个数据包 , 这两次双向的数据交互时间是可以预计的 , 不存在无用的RX等待状态 。然后 , 主机在一个连接间隔(connInterval)之后的时刻再次发出数据包 , 也就是新的connection事件开始 , 不过通信信道由自适应跳频算法重新选择 。上图只画了最简单的状态 , 实际一个connection事件可以有多次的双向数据包交互 。
把从机和主机并排起来看:
BLE入门谈:从空中数据收发理解BLE(上)
文章图片

文章图片
上图还展示了BLE连接状态的一个特性: slave latency, 即允许从机不响应一些(可能是没有收到的)数据包 , 而连接暂时能保持 , 不断掉 。因为双方的时间间隔约定还在 , 后续只要成功交互就可以恢复通信 。
BLE连接状态下的数据包格式本文就不列出了 , 因为涉及到Link Layer层的许多内容 , 要深入了解的朋友可以参阅蓝牙Core specification 4.0以后版本文档 。
本文的目的在于给大家一个BLE的底层是怎么工作的一个整体印象 , 以及认识到它是怎样实现低功耗的无线数据交互的 。
来源:电子工程世界