当前位置: 首页 > >

蓝牙传输速率详细分析【针对蓝牙4.2】

发布时间:

?


--------------------------------------------------------------------------------------------------------


文章版权归为微信公众号 无线技术联盟,转载请注明出处.


作者:XCODER


--------------------------------------------------------------------------------------------------------


?


?


?



还在困惑BLE低功耗蓝牙数据传输率有多快?


?


这并不仅仅是一个人的问题,即使谷歌搜索会出现很多不完整的答案。每个操作系统和设备都有自己的限制,例如连接间隔和每个间隔的数据包数量。另外,您是否知道使用iOS,您可以每一个连接间隔可以发送4个数据包,而且HID设备的可以在一个连接间隔发送10个数据把,从而把速率提高2.6倍?


?


如果你想最终清楚你可以通过BLE与iPhone,Android设备或Mac通信多快,下面的内容讲会一一解析你的疑问。


?


误区


蓝牙PHY 标称数据传送率是1M/bps,即为每秒由蓝牙物理层调试过后传到空中的速率为1兆比特,这并不表示蓝牙接收端接收的数据传输率可以到1M/bps。


影响/限制BLE吞吐量的因素有很多,最大吞吐量才为1M/bps,数据收发还具有相应通信协议和蓝牙协议,例如:


?


- 最大数据包长度


- 数据包之间的时间延迟


- 数据包中开销字节,如数据包长度,数据完整性检查和通用数据包信息。


?


那么,1Mbps的50%到75%呢?那仍然是31.25到62.5 kB每秒。这仍然是非常好的。


?


BLE吞吐量


一个BLE连接只有两个设备,其中一个被称为Master(如主),另一个被称为Slave(如从属)。每一侧在给定的时间段内与另一侧通信,称为连接间隔(最小7.5毫秒,最小增加的增量为1.25毫秒)。两个设备之间的每个通信实例称为通信事件。


?



?


最小连接间隔


当外围设备处于接收模式时,通信事件由中央(主设备)发送分组开始。如果外设成功从中央接收到数据包,外设将在中央处于接收模式时随后发送数据包。默认情况下,即使没有任何要发送的数据包,中央和外围设备也会发送一个数据包,这通常称为空链路层的心跳包。



?


在每次主从心跳包结束之后,主机或者从机端如有有排队等待发送的消息,他们可以“询问”或“警告”对方,告知自己有更多的数据要发送。这将会出现一个时间间隔内交换多个数据包。连接事件将继续,直到数据包未能正确接收,发送者结束连接事件,或者在非正常情况下结束(超时)。


?



需要注意的是,在连接事件中,您可以交换两个以上的数据包,这将极大地提高吞吐量,但是你需要了解每个连接事件的最大数据包数量取决于BLE堆栈/芯片组,每个iOS设备连接事件最大允许四个数据包,Android设备每个连接事件最大运行六个数据包。


?


数据包每个时间间隔可以由以下公式计算:


?



?


一般BLE数据吞吐量公式中重要因数就是以下三个重要元素:


?


1.连接间隔?- 设备通话的频率。


2.每个连接间隔的数据包数量?- 当他们说话时交换了多少个数据包。


3.数据包长度?- BLE数据包中应用数据的长度。


?


BLE中的理论最大应用数据吞吐量可以描述为以下公式:


?


Throughput = Packets Per Second * Data Per Package


?


由此我们可以得到以下公式:


?



?


提高BLE吞吐量的可行办法:


?


增加BLE有效数据包长度


现在可以肯定的是,BLE数据包最多包含20个字节的BLE应用程序数据v4.0和v4.1(v4.2包含一个数据包长度扩展,但是在iOS或Android很多不支持)。请记住,实际的BLE数据包的大小较长,但自然包括许多重要用途的段,例如CRC和不同层的标题。


?


减小连接间隔解


对于iOS 9.2和iPhone 6以上手机,最小连接间隔为30毫秒,除非您支持通过GATT配置BLE设备作为HID方式,最小连接间隔允许降至11.25毫秒。对于Android设备,最小连接间隔为7.5毫秒。


?


BLE设备与iPhone 6 数据吞吐量=(1000 mSecs)* 20 *(4)/(30 mSecs)= 2,667.66 byte/s。


如果IOS设备支持HID, 吞吐量增加到=(1000 mSecs)* 20 * 4 /(11.25 mSecs)= 7,111.11 Bytes per second


?


提示:您可以将数据包中的应用程序数据长度增加3个字节,从而将吞吐量提高15%。在未来的博文中,我们将讨论这个。


?


实现更快的吞吐量


?


简单的答案有时候会受到其他BLE设备三个参数限制的限制,即使您的BLE设备可以支持较低的连接间隔或每个连接事件发送超过4个数据包。


?


例如,让我们把我们用来连接iPhone 6的外围设备连接到一个不同的客户端(硬件),每个连接事件的连接间隔为10mSecs,最多连接12个数据包(每个方向6个)。这将增加理想的最大值如下:


?


BLE设备与Iphone 6最大吞吐量=(1000mSecs)* 20 *(6)/(10 mSecs)= 12,000 Bytes per second。


目前由于支持蓝牙4.2大数据包的手机和BT 5的手机并不多,所以无法通过提高数据包长度的方式提升数据传送率,希望后续手机更新换代把蓝牙5作为标配,提高数据传输率指日可待。


?
手机笔记本电脑BLE最大吞吐量汇总

下列数据为iphone和安卓两种系统的亲测数据,供大家参考:


?


iPhone 6,6 +,6S,6S +:


正常连接间隔30mSecs:最大数据吞吐量 2,667字节/秒


HID模式, 连接间隔为11.25mSecs:最大数据吞吐量 7,111字节/秒


?


MacBook Pro - OS X(不同型号):


最大连接间隔范围(11.25 - 15mSecs):最大数据吞吐量 7,111字节/秒 - 5334字节/秒


?


Android的


Nexus 4:最小连接间隔7.5 mSecs - 每个连接的数据包间隔:6 - 最大数据吞吐量:16,000 Bytes / Sec


Nexus 6P:最小连接间隔7.5 mSecs - 每个连接的数据包间隔:6 - 最大数据吞吐量:16,000 Bytes / Sec



------------------------------------------------------------------------------------------------------------


无线技术联盟 (微信公众号),提供有价值的市场信息和最新的技术分析,欢迎关注交流,转载请注明出处。


?


诚邀各大蓝牙芯片原厂入群!


诚邀各大蓝牙顶级代工厂、方案厂入群!


诚邀各大蓝牙品牌厂商产品经理入群!


还不快上车~


?


千呼万唤始出来,无线技术联盟终于准备把大家召集到一起,帮助有需要的人打通蓝牙无线相关的技术,市场,芯片渠道,商务对接,一群在手,蓝牙无忧。


?


「Bluetooth5 堂 微信交流群」


?


申请流程:


①?因群人数已超过限制人,请先微信扫描以下小编微信二维码或添加小编微信号(blecoder),添加微信时请将您的个人信息进行备注,以便小编登记。


②?由小编逐个邀请入群,请大家耐心等待!谢谢理解与支持!


?


加小编请记得备注内容:您的姓名、公司名称、职位



无线技术联盟微信公众号,提供有价值的市场信息和最新的技术分析,欢迎关注交流,转载请注明出处。



------------------------------------------------------------------------------------------------------------


?



友情链接: