如何提高蓝牙BLE的蓝牙4.2传输速率率和稳定性

查看: 6274|回复: 31
【原创源码】安卓蓝牙BLE通信demo,已实现较大数据稳定传输
阅读权限100
本帖最后由 世事繁华皆成空 于
17:31 编辑
QQ图片52_meitu_1.jpg (191.86 KB, 下载次数: 5)
14:47 上传
BLE:顾名思义就是低功耗蓝牙协议,目前很多智能手环与手机之间的通信就是根据ble实现的
当扫描到设备后,单击列表设备会弹出如上图选项,先连接设备,之后可以进行四种操作,具体操作内容可以自行修改,此处我的写卡命令有275字节,根据BLE协议,一次性只允许最大传输20字节内容,源码内将数组进行分包,通过11次传输,为保证效果,已做延时处理,约3s左右会返回值
(4.29 MB, 下载次数: 444)
14:50 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB
写了好久,改了很多问题,还是值得参考的
吾爱币 +23
自己想做做一个防丢的蓝牙小模块,这东西有用?(主要就是是否超出范围or断.
欢迎分析讨论交流,吾爱破解论坛有你更精彩.
谢谢@Thanks!
为什么知道你是个男的,看你头像还想~
感谢发布原创作品,吾爱破解论坛因你更精彩.
谢谢@Thanks!
鼓励转贴优秀软件安全工具和文档!
前排膜拜空空~
本帖被以下淘专辑推荐:
& |主题: 192, 订阅: 32
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
小白看不懂啊!这东西只是降低蓝牙的功耗吗?
蓝牙通信用的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
蓝牙传输已经淘汰了吧, 现在不都是wifi传输?
你确定没在逗我?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
谢谢分享,支持!!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
大神又有新作品啦
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
请问这个是用来做什么的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
好东西,我收藏哈
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
大神这是用来做什么的啊介绍下啊亲
低功耗蓝牙通信&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
这什么东东,小白看不懂
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
前排围观大神
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
支持大神!希望通过大神的知识提升我自己的能力!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
大神的作品表示看不懂
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.34107人阅读
Others(6)
Low Energy(3)
根据Bluetooth 4.0 BLE部分协议:
BLE中物理层physical layer的传输速率是1Mbps,除了这个外,数据传输速率与包大小、CPU处理时间相关。
1.总体结构:
preamble(1 Byte)+ Access Address(4 Bytes)+ PDU + CRC(3 Bytes)
preamble =
Access Address = 0x8e89bedd6
PDU =&&Header(2 Bytes)+ Payload (37 Bytes max.)
1)0000 - connected undirected advertising event 可连接非定向广播事件
&& 2)0001 -&connected directed advertising event 可连接定向广播事件
&& 3)0010 - non-connected undirected advertising event 不可连接非定向广播事件
4)0011 -&response to scan request form scanner扫描请求响应
5)0101 - connect request by initiator连接请求
6)0110 -connected directed advertising event 可发现非定向广播事件
非定向广播包(Undirected advertising packets)
Payload &= AdvA (6 Bytes) + AdvData (31 Bytes max.) ;&
//&AdvA &contains advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;&
定向广播包(Directed advertising packets)
Payload &= AdvA (6 Bytes) + InitA(6 Bytes) ;&
//&AdvA &contains advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;&
//&InitA contains initiator's address if RxAdd = 1, or a random address if RxAdd = 0;
3. 扫描请求及扫描响应
PDU =&&Header(2 Bytes)+ Payload (37 Bytes max.)
1)0011 - scan request for further information from advertiser 扫描请求
&& 2)0100 -&response to scan request from scanner 扫描响应
Payload &= ScanA (6 Bytes) + AdvA(6 Bytes) ;
// ScanA &contains Scanner's public address if TxAdd = 1, or a random address if TxAdd = 0;&
//&AdvA &contains advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;&
Payload &= &AdvA(6 Bytes) + ScanRspData(0~31Bytes);
// ScanRspData data from advertiser’&
//&AdvA &contains advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;&
3. 连接请求
PDU =&&Header(2 Bytes)+ Payload (34 Bytes)
Header:0101 - connect request by initiator
Payload&=InitA(6 Bytes)+ AdvA(6bytes)+ LLData(22 Bytes)
LLData 包含连接信息,详细结构参考bluetooth 4.0 协议。
4. LL 数据通道及控制包
PDU =&&Header(2 Bytes)+ Payload (27 Bytes max.)
Header:详细说明参考bluetooth 4.0 协议;
LL 数据通道
Payload &= 0~27 bytes
Payload = 1~23 Bytes
若只考虑蓝牙设备连接之后,评估数据传输速率
最大包长度:preamble(1 Byte)+ Access Address(4 Bytes)+ PDU(29 Bytes) + CRC(3 Bytes)= 41 Bytes射频PHY传输速率 1Mbps
则传输有效payload 27字节耗时:41*8/1 = 328 us
一个27字节的传输周期 :328 + 150 + 80 + 150 = 708 us,若能持续传输,即传输速度:38KB/s,这样显然功耗不会低,也不符合BLE协议规范,真正的传输速度受连接事件间隔和间隔内能传输数据包数目相关。
如果连接时间间隔设置到7.5ms(协议规定最小值),一个连接事件传输3个包,则传输速率大约是10.8kB/s,一个连接事件能传输几个包与连接设备密切相关,看到很多CC2540实测数据,时间间隔7.5ms和一个传输时间3个包以上很多都达不到,51内核是其重要原因之一,在&有5.9KB/s,也有在论坛看到有40ms间隔,2个包,即1.4KB/s成功的案例,以后有时间我再实测下速度。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:73900次
排名:千里之外
原创:13篇
评论:18条
(1)(2)(2)(1)(1)(1)(1)(4)(3)(1)博客访问: 92137
博文数量: 25
博客积分: 45
博客等级: 民兵
技术积分: 345
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
iBeacon是最近很火的一个话题,iBeacon可以用于室内定位,你的iPhone进到ibeacon的范围时能够收到相应推送。基于这个技术可以有很多应用:比如自动寻车,超市的售品定位,当然还有很多现在想不到的应用。
现在有很多帖子在说iBeacon是什么,能用来干嘛,但是从技术角度,如何工作的?用到技术是BLE,那么。。。
什么是BLE(Bluetooth Low Energy)?
BLE属于2010年释放的蓝牙4.0规范中的一部分,其实早在2006年Nokia就制定出来了,当时叫做Wibree。BLE在协议上和传统的蓝牙还是不兼容的,而且设备不向后兼容。所以,你现在能看到的蓝牙设备有三种。
Bluetooth:仅仅支持传数据的蓝牙(以后我们就叫传统的蓝牙)。
Bluetooth Smart Ready:支持传统的蓝牙和低功耗蓝牙
Bluetooth Smart:仅仅支持低功耗蓝牙
新版本的智能手机、笔记本电脑、台式机等等基本上都支持传统的蓝牙和低功耗蓝牙即Bluetooth Smart Ready. Beacons,则只支持低功耗的协议(这样设备才能在只有一节干电池的情况下工作很长时间)也就是上面所说的Bluetooth Smart设备。一些老的设备比如老的笔记本电脑、当年的诺基亚按键手机、一些老的外设等则只支持蓝牙协议也就是Bluetooth设备(基本上蓝牙4.0之前的蓝牙都这样)。
BLE的主要优点当然是超低的功耗了。举个栗子,很多Beacon能够只用一节电池连续发信(广)号(告)发两年(好持久,比南孚电池还持久~捂脸)。所以当这个Beacon不工作了,请暴力一点直接换掉。传统蓝牙和BLE都是用的2.4GHz~2.4835GHz的ISM频段。BLE蓝牙传输速率比较低,这样对较大的数据流量请别用BLE,BLE更擅长“发现”和“简单通信”。就通信距离来说,BLE和传统的蓝牙都能达到百米的级别。
BLE通信是怎么工作的?
BLE的通信包含两个大块:“广告”和“连接”
“广告”是实现发现的机制,需要被发现的设备可以20ms~10s的时间间隔一直发包,当然时间间隔越短,功耗就越高,设备被发现的时间就越短。这个“包”可长达47字节:
1字节前导码
4字节接入地址
2-39字节广告信道PDU
对于“广告”通信信道,4字节的接入地址统一是0x8E89BED6,对于数据信道,每个连接都会不一样。
相应的PDU也有它自己的头结构(2字节:负载长度&类型-是否支持连接..)和真正的负载(可长达37字节)。真正的负载中前6字节是MAC地址信息真正的信息只有31字节的空间。
BLE设备可以工作在不提供连接的广告模式(所有的信息都包含在广告包里面),当然也可以工作在可连接模式(大多数都是酱紫)。
当一个BLE设备被发现了之后,就可以建立连接了。就可以读BLE设备提供的service和每个service提供的characteristic(这里不好翻译啊~~~,请自行百度蓝牙的GATT),每个characteristic都会有一些可读或者可写或者可读可写的value。举个栗子,比如某米的手环,可能会有某个service会提供一些睡眠的数据,另一个service会提供一些计步的数据,据说通过蓝牙嗅探工具就能看到一些characteristic里面有一些value可读可写,已经有大神通过对这些可读可写的value进行了测试,好像能够通过对某一个value进行写1而使得手环震动,也就是说你可以用嗅探工具使旁边妹子的某米手环不停的震动(捂脸~)。然而Beacon是没有用到连接功能的!如果你还想知道更多的连接到旁边妹子手环的细节请参考,这里写的相当详细(当然,是英文的哦),如果你不是一个IOS开发者,请移步,这里更技术(哈哈,也是英文哦)
Beacon是怎么使用BLE的?
Beacon只是使用了广告信道,正如“beacom”名字所说,beacon在规定的时间间隔内不断的发包,你的智能手机就可以收到这些包。所以IBeacon是BLE广告功能的一个典型应用,一些附加的功能都是在IOS端实现的。
如果你嗅探iBeacon的广告包,比如说是你会得到如下的数据:
02 01 06 1A FF 4C 00 02 15 B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D 00 49 00 0A C5
蓝牙嗅探工具:如果你是MacOS,,如果你是windows,
上面抓到的数据已经把各种头结构都去掉了,连Mac地址也去掉了,剩下的是30字节的广告数据,最大的只可以是31字节长哦。
我们来分析一下数据包,推荐看更详细的:
02 01 06 1A FF 4C 00 02 15: //iBeacon 前缀码(fixed except for 3rd byte - flags)
B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D: //邻近UUID (这里是Estimote的UUID)
00 49: //主值
00 0A: //副值
C5: //发送功率的二补数值(别问我什么是二补数,我也觉得这个名词很二,自行百度)。
下面,如果你想实现这样一个beacon,其实不需要什么专业的设备,如果你手上有支持蓝牙4.0的手机,或者笔记本电脑,你就可以将这些设备变成你想要的iBeacon,如果你有iPhone4s及以上的苹果手机,请移步AppStore搜“Locate iB”,如果你是MacOS,当然树莓派。
阅读(243) | 评论(0) | 转发(0) |
下一篇:没有了
相关热门文章
给主人留下些什么吧!~~
请登录后评论。5750人阅读
蓝牙开发(22)
蓝牙DA14580(11)
蓝牙nrf52832(7)
蓝牙CC254x(11)
蓝牙BLE的最大特点就是低功耗,而低速率和简单的交互协议是降低功耗的重要组成部分。因此BLE一般应用于低速率的近场控制和数据交互,如智能家电、运动手环等等,小数量的控制和交互对传输速度没有要求,每秒1K字节就可以了,有时为了功耗可能会更低。但在某些场景下,可能要求BLE尽可能提高传输速率,如无线空中升级OTA、无线对讲语音传输等等。接下来,我们来分析如何提高BLE的速率来满足需求,并探讨BLE连接的稳定性。一、BLE数据包分析 BLE包的结构是: preamble(1 Byte)+ AccessAddress(4 Bytes)+ PDU + CRC(3 Bytes) 1)preamble =
2)Access Address = 0x8e89bedd6 3)连接以后的数据传输的PDU是:Header(2 Bytes)+ Payload (27 Bytes max)+MIC(4bytes),所以传输一个包的 最大长度是1+4+33+3=41字节,有效数据最大是27字节。二、自定义characteristic的最大长度&&&&&& 从上面分析可见,通过WRITE或者NOTIFY characteristic发送一个包的最大长度是27字节。但是这个27字节指的是BLE底层的协议包格式。对于profile层的characteristic,其最大的长度是20字节,也即是每个包最大的长度是20字节。&&&&&& 这是因为profile所用的characteristic处于GATT协议层,而GATT到ATT层需要增加一个字节的op code,两个自己的attribute handle。然后ATT到L2CAP适配层需要增加4个字节的L2CAP头。所以从GATT到底层需要封装7个字节的额外协议数据,因此GATT层最大是20字节。&&&&&& 其实,按照蓝牙BLE的协议,L2CAP协议层自动对数据包进行拆包和封装,理论上是支持ATT/GATT层更大的数据包的。但一般SDK默认ATT_MTU=23,这样L2CAP的工作会变得很简单,事实上,BLE的应用场景也不需要定义太长的数据包,20个字节足够了。三、BLE的传输速率分析&&&&&& 根据蓝牙BLE协议, 物理层physical layer的传输速率是1Mbps,相当于每秒125K字节。事实上,其只是基准传输速率,协议规定BLE不能连续不断地传输数据包,否则就不能称为低功耗蓝牙了。连续传输自然会带来高功耗。所以,蓝牙的最高传输速率并不由物理层的工作频率决定的。 在实际的操作过程中,如果主机连线不断地发送数据包,要么丢包严重要么连接出现异常而断开。 在BLE里面,传输速度受其连接参数所影响。连接参数定义如下: 1)连接间隔。蓝牙基带是跳频工作的,主机和从机会商定多长时间进行跳频连接,连接上才能进行数据传输。这个连接和广播状态和连接状态的连接不是一样的意思。主机在从机广播时进行连接是应用层的主动软件行为。而跳频过程中的连接是蓝牙基带协议的规定,完全由硬件控制,对应用层透明。明显,如果这个连接间隔时间越短,那么传输的速度就增大。连接上传完数据后,蓝牙基带即进入休眠状态,保证低功耗。其是1.25毫秒一个单位。 2)连接延迟。其是为了低功耗考虑,允许从机在跳频过程中不理会主机的跳频指令,继续睡眠一段时间。而主机不能因为从机睡眠而认为其断开连接了。其是1.25毫秒一个单位。明显,这个数值越小,传输速度也高。蓝牙BLE协议规定连接参数最小是5,即7.25毫秒;而android手机规定连接参数最小是8,即10毫秒。Ios规定是16,即20毫秒。连接参数完全由主机决定,但从机可以发出更新参数申请,主机可以接受也可以拒绝。Android手机一部接受,而ios比较严格,拒绝的概率比较高。 一般场景,连接参数设置16,即20毫秒,一般的传输速率是50* 20 = 1000字节/每秒。如果每个连接事件传输更多的包,可以获得更高的传输速率。四、BLE高速传输的应用场景和技术实践&&&&&& 降低连接间隔,提高每个连接事件的发包数能够显著地提高速率,但是两者往往是矛盾的。因为一个连接事件的传送时间总是有限的。从实践来看,BLE的传输速率不仅跟连接参数有关,还跟CPU的处理能力有关[CC2541的51核要比DA14580的M0逊色不少]。此外还要对发送和接收流程进行优化处理,这个非常重要。需要注意的是,高速率也会带来稳定性问题,需要优化profile的数据交互场景和一些参数。&&&&&& 高速率传输会带来更高的功耗,但是这个功耗应该是远比经典蓝牙的功耗低的。语音传输以往一般使用经典蓝牙芯片,功耗一般在毫安级别。便携式电子产品对功耗要求很高,对于单纯的语音对讲场景来说,BLE是可以满足需求的。语音使用8K采样率,16位量化,一秒即是16K字节/每秒。如果使用ADPCM编码压缩,可以压缩四分之一,即4K字节每秒。对于BLE来说,这个速度是完全可以达到的。如果是8bit量化,不压缩也是8K字节每秒。TI官方宣称CC2541的最大的传输速率是5.9K字节每秒。而DA14580则可以达到8K字节/每秒的速率。嵌入式企鹅圈基于目前最低功耗蓝牙单芯片DA14580已经demo通过,距离超过10米,稳定性也有保证。&&&&&& 业务咨询请发邮件嵌入式企鹅圈原创团队由阿里、魅族、nvidia、龙芯、炬力、拓尔思等资深工程师组成。百分百原创,每周两篇,分享嵌入式、Linux、物联网、GPU、Android、自动驾驶等技术。欢迎扫码关注微信公众号:嵌入式企鹅圈,实时推送原创文章!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:394694次
积分:5292
积分:5292
排名:第4533名
原创:124篇
转载:10篇
评论:216条
百分百原创,每周两篇,阿里、魅族、nvidia、炬力、拓尔思等顶级企业资深工程师分享----嵌入式、Linux、物联网、GPU、Android、自动驾驶等技术,欢迎扫码关注!
文章:14篇
阅读:30432
文章:40篇
阅读:185894
文章:10篇
阅读:20755
(1)(3)(5)(1)(2)(2)(2)(4)(2)(2)(1)(7)(9)(8)(4)(5)(5)(3)(5)(5)(5)(3)(3)(3)(3)(3)(1)(13)(2)(2)(1)(6)(13)(1)}

我要回帖

更多关于 蓝牙5.0传输速率 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信