zoukankan      html  css  js  c++  java
  • 7.BLE---跳频原理

    1. 概述

    我们称主设备为Master(手机、PC机等),从设备为Slave(手环等)。Master向Slave发送connect request,需要与slave建立连接。在slave收到Master发出的connect request时,在开始建立连接的同时也要更新和计算的Master的channel map表,以及下一个连接使用的频点。

    如下图所示,为Master发出的CONNECT_REQ的Payload,图中的ChM和hop参数,分别表示Channel map表,即建立连接后有哪些channel是可以被使用的,有哪些channel是不可用的。hop表示跳数,表示跳频每次的跳频的间隔。

    具体参数介绍参考 第五章第5节

    1. 跳频原理

    例如,ChM 和 Hop分别为 ChM[5] = {0x02,0x56, 0x49, 0x13, 0x11]; hop = 5;

    将ChM转换为二进制数,则为00010001 00010011 01001001 01010110 00000010,频道位被置为1的表示该信道可用,信道位被置为0表示该信道不可用。那么可用的频道used = [1, 9, 10, 12, 14, 16, 19, 22, 24, 25, 28,32, 36 ];可使用的信道数numUsed = 13。

    接下来需要计算下一个连接使用的频道

    Mod指求余运算。

    计算步骤:

    第一次:

    • 默认第一次选择频道0作为fn
    • fn+1 = (fn + hop) mod 37即fn+1 = (0 + 5) % 37= 5
    • 通过查询used可知频道5不是一个好频道
    • 所以要在好的channel表里找一个channel,即used[5 % numused] = used[5 % 13] = 16
    • 所以第一次通讯选择的频道是16

    第二次:

    • 选择频道16作为fn
    • fn+1 = (fn + hop) mod 37即 fn+1 = (5 + 5) % 37 = 10
    • 通过查询used可知频道10是一个好频道
    • 所以第二次通讯选择的频道是10

     

     

     

     

  • 相关阅读:
    Java 高阶 —— try/catch
    Java 高阶 —— native 关键字与 JNI
    python库学习笔记——分组计算利器:pandas中的groupby技术
    编程模式(schema) —— 表驱动法(table-driven)
    python中元组tuple
    .Net Framwork类库
    SMB带宽限制
    WindDbug应用
    Python学习笔记
    Python递归遍历目录下所有文件
  • 原文地址:https://www.cnblogs.com/yuqilihualuo/p/9565359.html
Copyright © 2011-2022 走看看