博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7.BLE---跳频原理
阅读量:4957 次
发布时间:2019-06-12

本文共 924 字,大约阅读时间需要 3 分钟。

  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

 

 

 

 

转载于:https://www.cnblogs.com/yuqilihualuo/p/9565359.html

你可能感兴趣的文章
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
SpringBoot访问html访问不了的问题
查看>>
{width=200px;height=300px;overflow:hidden}
查看>>
C#生成随机数
查看>>
CSS基础学习 20.CSS媒体查询
查看>>
2019春季第十一周作业
查看>>
洛谷P4591 [TJOI2018]碱基序列 【KMP + dp】
查看>>
iOS CoreData介绍和使用(以及一些注意事项)
查看>>
OS笔记047代理传值和block传值
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
coco2dx服务器简单例子
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
Windows Azure Platform Introduction (4) Windows Azure架构
查看>>
【转】chrome developer tool 调试技巧
查看>>
mahout运行测试与kmeans算法解析
查看>>