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

bt和wifi的共存

转自:http://bbs.52rd.com/Thread-291892-1-1.html

蓝牙和802.11b/g/n都可能工作在2.4GISM,可能互相干扰。干扰的典型应用之一是VOIP,用手机的WLAN打VOIP电话,用蓝牙耳机来通话。互相干扰的后果是用户能感觉到通话质量的下降。
设计上有些方法能够减少相互干扰,尽量维持蓝牙和wifi的throughput,使得用户的使用体验不受影响。方法主要是AFH和分时。

是否存在相互干扰和相互干扰是否严重受以下条件影响:
1.共用天线还是单独用自己天线
2.干扰是噪音还是阻塞
3.蓝牙通信频率是否落在wifi带内
4.蓝牙和wifi是接收还是发射
5.蓝牙和wifi的具体应用的通信特点

共用天线还是单独用自己天线
如果蓝牙和wifi使用单独的天线,蓝牙天线和wifi天线之间的隔离大小会影响干扰的程度。如果认为有一定的隔离度,蓝牙和wifi是可以同时发射或者接收的。
如果蓝牙和wifi共用天线,蓝牙和wifi不可以同时工作。(如果不考虑相互干扰,可以同时接收。)

干扰是噪音还是阻塞
干扰分为两种。一种是噪音,主要发生在频率冲突时;另一种是大信号阻塞,和频率是否冲突没有关系,和具体射频设计及天线间隔离有关系。

蓝牙通信频率是否落在wifi带内
如果蓝牙通信频率落在wifi频带内,噪音干扰和阻塞干扰都会有。如果蓝牙通信频率落在wifi频带外,只有阻塞干扰。
AFH是针对噪音干扰最好的方法,蓝牙和wifi的性能都能维持100%。唯一问题是无法解决阻塞干扰。

蓝牙和wifi是接收还是发射
假设蓝牙和wifi使用自己单独的天线,蓝牙和wifi是能够同时发射和同时接收的。如果一个发射,一个接收,在频率冲突时会有相互干扰。另外,同时发射可能会对另一侧设备带来干扰。

蓝牙和wifi的具体应用的通信特点
共存时相互干扰是否严重还和具体应用时通信特点有关。比如数据量是否大,是否是数据流,是否是timecritical的。所以有的设计是host可以根据不同应用配置不同的优先级,以达到最好的tradeoff。

主要设计方法简单介绍:
AFH
AFH是解决噪音干扰的最好方法。通过在跳频频率中避开wifi的频带,既可以避免频率冲突带来的干扰,也丝毫不损失蓝牙和wifi的性能。另外,AFH不只针对wifi干扰,道理上其它干扰源也可以避开。
AFH功能包括两个方面,一是channel的好坏区分;二是使用新的channellist跳频。
Channel的好坏区分有三种来源,一是自己通过scanRSSI或者检查PER等方式自己区分channel;二是通过另侧设备的区分信息,如 master取slave的区分结果,或slave依照master的区分结果;三是依靠host通过HCI命令 set_AFH_host_channel_classification传下来。
蓝牙和wifi共存设计中,host通过HCI命令告诉蓝牙哪些channel不可用是很有效的。如果蓝牙自己区分,应该既自己检查channel,也需要读另侧设备的区分信息,因为两者如果距离稍远,可能看见的badchannel是不同的。

分时(TDM,PTA)
分时是利用蓝牙和wifi间的握手信号,使蓝牙和wifi分时在2.4G工作,这样可以避免噪音干扰和阻塞干扰。问题是会降低蓝牙和wifi的throughput。所以这个机制应该只在AFH不能提供良好效果时使用。
802.15.2中有规定仲裁方式和信号(PTA,packettrafficarbitration)的框架,很多蓝牙芯片厂商也有自己专有的握手信号定义。道理上来讲我们的设计还需要了解主流wifi芯片的握手信号定义。
这些握手信号都差不多。简单说明如下:

2-wire
Wifi给蓝牙信号wl_active,表示wifi有通信,如果这个信号asserted,蓝牙应该只接收/发射highpriority的包,其它包delay。
蓝牙给wifi信号bt_priority,表示蓝牙要发highpriority的包,wifi必须停止当前通信。
可以看出,这两根信号分别是保护wifi和蓝牙通信的。所以assert的多与少会影响2.4G带宽在两者间的分配。
从蓝牙芯片设计的角度,蓝牙芯片必须支持对于包优先级的区分和delay包的处理。一般来说,定时同步,inquiry,page,SCO等是高优先 级,传送数据的包则是普通优先级。如果处理得细致和灵活,很多参数是需要可以配置和可调的,因为可能需要host根据具体应用来配置。
如果蓝牙芯片知道wifi的频带,bt_priority也可以只在频率冲突时拉起。

3-wire
  三线方案和两线方案相似。多加一根蓝牙输出的bt_active,这样和bt_priority一起可以表示两种优先级的蓝牙通信。

4-wire
四线方案和三线方案相似,再多加一根蓝牙输出的bt_freq,指示蓝牙通信是否和wifi频带冲突。

PTA
802.15.2中没有规定PTA具体的硬件接口和仲裁判定,是依赖实现的。也有类似上述的2/3/4线方案。但PTA的基本思想是蓝牙和wifi提交 申请给PTAcontroller,(一般PTAcontroller集成在wifi中),由PTAcontroller来许可。所以PTA中的相关信号 都是指将要的操作,不同于上面的是指已经发生的操作。

WCS
WCS是intel的 wirelesscoexistencesystem缩写,是intelwifi的握手定义,两根线,ch_data和 ch_clk/bt_priority,完成握手和频带信号传递功能。具体时序定义没有看到,要签intel的NDA才有,估计笔记本上用得较多。
只要把握分时和优先级的tradeoff原则,握手接口和分时机制还可以有很多变化和配置,以求对用户最好的使用体验。
RDA5868+,RDA5870都支持蓝牙WIFI共存分时设计,在原理图连接时,连接如下:

RDA5870:
Pin37:WL_ACTIVE
Pin27:BT_PRIORITY

RDA5868+:
Pin28:WL_ACTIVE
Pin27:BT_PRIORIT

 

另外几篇文章:

http://www.dzsc.com/data/html/2011-6-21/90249.html

http://wenku.baidu.com/link?url=-uVrDZrCQwM79-7HICtaEX7CdOBSIDMZxkcv_dTicQ-8qDanV3w2GoLorKyHcil3YWtJMuC71RFd15Rv4FnS1Jyyn9z8YL-ixZeP7hFw3sS

 

转载于:https://www.cnblogs.com/dirt2/p/6060689.html

相关文章:

  • 使用Powershell链接到Office 365
  • Bootstrap-datepicker设置开始时间结束时间范围
  • django中的filter详解
  • CDN学习笔记二(技术详解)
  • macOS 中的 Rootless 机制
  • python环境搭建-设置PyCharm软件的配色方案和Python解释器
  • mod_fastcgi和mod_fcgid的区别
  • [摘录]第六章 用负激励促进新陈代谢
  • 4. 路由到控制器 - Laravel从零开始教程
  • 给MVC来一个谬论
  • linux 查看 cpu 和内存的命令 - top
  • JDK 环境搭建
  • Windows下编译使用Aliyun OSS PHP SDK
  • KNN算法与Kd树
  • 2D空间中求一点是否在多边形内
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • javascript数组去重/查找/插入/删除
  • JS题目及答案整理
  • js写一个简单的选项卡
  • MaxCompute访问TableStore(OTS) 数据
  • nginx 配置多 域名 + 多 https
  • python_bomb----数据类型总结
  • Rancher如何对接Ceph-RBD块存储
  • react 代码优化(一) ——事件处理
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 关于 Cirru Editor 存储格式
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 微服务核心架构梳理
  • 用Visual Studio开发以太坊智能合约
  • ​520就是要宠粉,你的心头书我买单
  • ​如何在iOS手机上查看应用日志
  • #define,static,const,三种常量的区别
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (四)Linux Shell编程——输入输出重定向
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net6 webapi log4net完整配置使用流程
  • .NET成年了,然后呢?
  • //解决validator验证插件多个name相同只验证第一的问题
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [ACTF2020 新生赛]Include
  • [BZOJ 3680]吊打XXX(模拟退火)