当前位置: 首页 > news >正文

BLE跳频机制在2.4G键鼠中的应用

目录

WCH的键鼠方案中,1K/8K方案均包含了稳定有效的2.4G跳频方案。

接下来通过几个问答,引入沁恒键鼠方案中2.4G跳频机制的说明。

 

问①:如何检测当前环境中的信道拥堵情况?

答①:BLE协议中,这项工作主要交给BLE主机;2.4G方案中则交给dongle接收头来完成。沁恒的2.4G库中封装了API,以2MHz为间隔,扫描2.4G频段的信道能量,输出良好信道频谱数组。扫描一轮40个信道,需要3~4ms,可分组扫描不必一次扫完。

信道扫描接口:

/*先声明,再使用*/
/******************************************************************************** @fn          BLE_CheckHoppingMap** @brief** input parameters** @param       rssi -  干扰信息阈值.*              map - bit0-bit39 1-表示通道有效,即需要检测的通道** output parameters** @param       map - bit0-bit39 1-表示通道无大于设定阈值rssi的干扰信息** @return      None.*/
int8_t  BLE_CheckHoppingMap( int8_t rssi, uint8_t map[] ) //测试代码块:
    {extern  int8_t  BLE_CheckHoppingMap( int8_t rssi, uint8_t map[] );// 需要检测的通道,bit0-bit39 1-表示通道有效,即需要检测的通道uint8_t  map[5] = {0xFF,0XFF,0XFF,0XFF,0XFF};// -85 为设定的干扰信号阈值,即检测能量大于-85认为有干扰信息BLE_CheckHoppingMap( -85, map );for(int i=0;i<5;i++ ){for(int j=0;j<8;j++ ){if( map[i]&(1<<j) ){PRINT("channel %d ok\n",(i*8 + j));}else{PRINT("channel %d bad\n",(i*8 + j));}}}PRINT("\n");}/*
输出结果
channel 0 ok
channel`1`ok
channel 2 ok
channel 3 ok
channel`4 ok
channel 5 ok
channel 6 ok
channel`7 ok
channel 8 ok
channel 9 ok
channel 10 ok
channel 11 ok
channel 12`ok
channel 13 ok
channel 14 bad
channel 15 bad
channel 16`bad
channel`17 bad
channel 18 bad
channel 19 ok
channel 20 ok
channel 21 ok
channel`22`ok
channel 23 ok
channel 24 ok
channel 25 ok
channel 26 ok
channel 27`ok
channel 28 ok
channel 29 ok
channel`30 ok
channel 31 ok
channel 32 ok
channel 33 ok
channel`34 ok
channel 35 ok
channel 36 ok
channel 37`ok
channel 38 ok
channel`39 ok
*/
View Code

 

问②:如何实现信道拥堵情况的实时监控?

答②:在使用当前已同步的良好信道频谱通信OK时,dongle不会主动扫描信道。

若每次跳频轮到某个信道,都会产生连续丢包,接连发生3轮,则dongle判断当前使用的信道频谱被污染,需要重新扫描一轮信道。

以8K方案为例,每1ms跳频一次,每次在某个信道通信,除了交互键鼠键值,至少会产生一次心跳包交互,可用于判断信道是否拥堵。

 

问③:如何同步良好信道频谱?

答③:信道同步发生在2个时间点。

一是在dongle上电后,配对/连接握手前,会扫描获得良好信道,在dongle与键鼠连接时做同步。

二是问题②中,dongle检测到信道污染,扫描获得新一组良好信道后,根据已被污染的信道的通信情况——

若双方仍能按已被污染的信道跳频交互,dongle会发起新信道的同步;

若污染严重,在已污染信道频谱中无法同步新信道,待断连后重连时做同步。

 

bfd62ef496856fd6dd13406c7b6a744c

 

关于跳频算法:
BLE的跳频机制已经十分成熟,沁恒的2.4G跳频算法直接参考了BLE5.0协议。

image

 

问①:hop_Inc跳频信道增量有什么作用?
答①:BLE单个信道宽度为2M,可以根据hop_Inc参数推算出大致的跳频宽度。hop_Inc取值范围:5~16。已知当前信道+已知hop_Inc,可以推算下一个频点的位置。

问②:已经扫描到良好信道后,直接在良好信道中逐个跳频通信可以吗?
答②:扫描到的良好信道中,会存在相邻信道。突发例如wifi信道达20M带宽的干扰时,逐个跳频可能会导致连续多次跳频通信失败。
 
问③:为什么需要两次取模运算?直接在良好信道中取模运算一次不就可以得到下一信道?
答③:两次取模起到“全局随机+局部过滤”的作用。
如果仅在全局信道中取模运算,能保证跳频信道的均匀分布,但跳频到不良信道时,易丢包。
如果仅在良好信道中取模运算,能保证通信质量,但当良好信道数量和跳频增量间存在倍数关系时,比如当良好信道数量为3n,跳频增量为n时,那么只会在3n个信道中的3个信道间跳频,信道利用效率低,易被跟踪。
http://www.jsqmd.com/news/534724/

相关文章:

  • IC_EDA服务器管理:用Windows远程连接CentOS7的5个高效技巧(含剪切板同步)
  • 终极指南:如何让macOS原生音量控制支持所有外接音频设备
  • 数码管驱动原理与工程实现指南
  • 打造个性化Switch引导界面:hekate主题定制全攻略
  • 终极指南:如何快速创建标准化Decky Loader插件
  • 如何利用Agent-Rules提升你的AI编程助手工作效率:5个关键技巧
  • 商业逻辑和产品本质的庖丁解牛
  • AFL++测试用例最小化终极指南:如何高效管理测试数据
  • 次元画室作品版权与伦理讨论:AIGC时代的内容创作边界
  • Notepad3终极指南:从基础文本编辑到专业编程的全方位技巧
  • 告别重复造轮子:用快马AI智能生成Java高效开发工具类
  • AI赋能测试设计:让快马平台智能分析并生成文件上传功能测试套件
  • ESP32轻量级Azure IoT客户端库设计与实践
  • KLineChart高级API实战:从数据加载到交互事件的完整解决方案
  • 链游革命2.0:从“资金盘陷阱”到“虚实共生生态”的破局之道
  • 探索Comsol相场中的水气两相流模型
  • AI 编码工具的底层架构:Cursor 是怎么给你补全代码的
  • 用Python和Matplotlib搞定RML2016.10a数据集:手把手教你画IQ信号的三种图(附完整代码)
  • 主管护师教辅怎么选?看这篇避坑指南 - 医考机构品牌测评专家
  • 手把手教你用GDB和Objdump搞定南大ICS缓冲区溢出实验(Phase1-Phase5保姆级攻略)
  • Bespoke Curator实战指南:3大主流LLM集成与性能优化全攻略
  • LeetCode 3.无重复字符的最长子串|Python题解(滑动窗口最优版)
  • 从ELK迁移到阿里云SLS,我们团队一年省了XX万运维成本(实战复盘)
  • Misago:构建现代化社区论坛的全方位解决方案
  • YOLO X Layout开源镜像免配置部署:Gradio+ONNXRuntime开箱即用
  • 安装Claude Code 以及配置 Coding Plan 教程
  • Proteus仿真PCA9685踩坑实录:I2C波形正常但PWM无输出?手把手教你排查
  • 储能双向DCDC变换器的模型预测控制及仿真分析
  • 2026年电木板加工厂家推荐排行榜:绝缘电木板、耐高温电木板、治具及零配件定制切割加工专业实力解析 - 品牌企业推荐师(官方)
  • AI Agent 面试必问:设计一个写周报的 Agent,你会怎么答?