如何设置蓝牙CC2541的数据蓝牙4.0传输速率率

cc2640数据传输速率(从app接收数据) - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区
cc2640数据传输速率(从app接收数据)
发表于6月前
<input type="hidden" id="hGroupID" value="42"
你好!&/p>
&p>& & & &TI的工程师们!以下为我的问题:手机app 以20ms 30ms 50ms 80ms 的间隔,每包数据20字节给&a href=&.cn/product/cn/cc2650& target=&extwin&>cc2650&/a>发送数据,但是协议栈调用函数&/p>
&pre>&span>static&/span>&span> &/span>&span>bStatus_t&/span>&span> &/span>&span>BloodPressure_WriteAttrCB 间隔为96ms左右,有时候为145ms。&/span>&/pre>
&pre>注:我使用的是&bloodPressure 例程增加了可写属性。&/pre>
&pre>以下为连接参数配置:&/pre>
&pre>&span>#define&/span>&span> &/span>DEFAULT_ENABLE_UPDATE_REQUEST&span> &/span>&span>FALSE&/span>&/pre>
&pre>&span>#define&/span>&span> &/span>DEFAULT_DESIRED_MIN_CONN_INTERVAL&span> &/span>&span>16&/span>&/pre>
&pre>&span>#define&/span>&span> &/span>DEFAULT_DESIRED_MAX_CONN_INTERVAL&span> &/span>&span>32&/span>&/pre>
&pre>请TI的工程师分析一下问题有可能出在哪? 谢谢!&/pre>
&pre>&span>&br>&/span>&/pre>
&pre>&span>&br>&/span>&/pre>&div style=&clear:&>&/div>" />
cc2640数据传输速率(从app接收数据)
此问题已被解答
All Replies
& & & &TI的工程师们!以下为我的问题:手机app 以20ms 30ms 50ms 80ms 的间隔,每包数据20字节给发送数据,但是协议栈调用函数
static bStatus_t BloodPressure_WriteAttrCB 间隔为96ms左右,有时候为145ms。
注:我使用的是&bloodPressure 例程增加了可写属性。
以下为连接参数配置:
#define DEFAULT_ENABLE_UPDATE_REQUEST FALSE
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 16
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 32
请TI的工程师分析一下问题有可能出在哪? 谢谢!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元22330分
用的安卓还是苹果系统?
大秦正声蓝牙电子之家
德州仪器蓝牙芯片cc2540/cc2541/cc2640一带三烧录工具以及芯片代理烧录服务!
订做C2000芯片批量生产脱机烧录器!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3567分
问题出在&#define DEFAULT_ENABLE_UPDATE_REQUEST FALSE&。
你从机禁止更新参数了,所以你设置的连接间隔起不了作用。
因此此时的连接间隔是主机端的连接间隔,不同的手机的连接间隔一般不一样。看你的数据,连接间隔在96~145ms之间。
而手机app虽然以20ms、30ms、50ms、80ms 的间隔发送数据,但只有在连接事件期间才会发送数据,也就是每96~145ms发送一次。
1、博客:http://blog.csdn.net/feilusia2、香瓜BLE之CC6053、香瓜BLE之CC4274、香瓜BLE之Android:5、香瓜单片机之STM8/STM32:6、香瓜单片机之Linux 7、香瓜单片机之职场交流:
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
使能连接参数更新结果一样,还是96~145ms之间才有数据收到!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
使能更新参数,结果还是一样,接收的数据间隔还是在&96~145ms之间&&。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3567分
很可能连接参数没有更新成功。
不是说你使能了更新参数的选项,主机就能允许你更新。还需要有参数上的规范限制,否则为何不设置连接间隔为1ms呢,这样多快呀?
详情可以看我个性签名档,《之连接参数》。
注:你可以先通过usb dongle抓通信包,来确认通信时间。
1、博客:http://blog.csdn.net/feilusia2、香瓜BLE之CC6053、香瓜BLE之CC4274、香瓜BLE之Android:5、香瓜单片机之STM8/STM32:6、香瓜单片机之Linux 7、香瓜单片机之职场交流:
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元22330分
安卓系统的蓝牙兼容是个大问题!你的手机啥牌子?
大秦正声蓝牙电子之家
德州仪器蓝牙芯片cc2540/cc2541/cc2640一带三烧录工具以及芯片代理烧录服务!
订做C2000芯片批量生产脱机烧录器!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.关于iPad 与 cc2541 连接后传输速率问题。 - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区
关于iPad 与 cc2541 连接后传输速率问题。
发表于2年前
<input type="hidden" id="hGroupID" value="42"
我用iOS自带的框架写了个app,与&a href=&.cn/product/cn/cc2541& target=&extwin&>cc2541&/a>蓝牙模块连接,每次从iPad传送数据到&a href=&.cn/product/cn/cc2541& target=&extwin&>cc2541&/a>到cc2541接收到数据并回应,然后iPad接收,中间大概是60ms。。。想问问有没有办法提高一下速度? 这种速度的话,6秒钟只能传2000字节,不能满足需求啊&/p>&div style=&clear:&>&/div>" />
关于iPad 与 cc2541 连接后传输速率问题。
此问题尚无答案
All Replies
我用iOS自带的框架写了个app,与蓝牙模块连接,每次从iPad传送数据到到cc2541接收到数据并回应,然后iPad接收,中间大概是60ms。。。想问问有没有办法提高一下速度? 这种速度的话,6秒钟只能传2000字节,不能满足需求啊
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼39505分
这个够呛。
iOS限制比较大,最小的connection interval 我记得是20ms, 而且一般都是将近30ms。
所以你用一般的write的方式的话,速度会非常慢。我不清楚iOS的API,但你可以尝试找一下有没有write without response的,可以提高一点速度。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
有这个的,我每发送20个字节过去硬件那边会回应过来2个字节,一般我iPad从发出去到接收到数据要56ms,接收到信息后大概4ms发下包数据。。。。所以不是太清楚到底是硬件那边的原因还是iPad这边的原因
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1095分
嗯,我这边做的是安卓的开发,你要求的传输速度是可以的实现的;但不知道IOS能不能实现,或许向yan所说,有限制。
我这边参考的程序是从机向主机集中上传数据,用的notification方式,参考的是官方吞吐量的测试,原来以为会丢数很厉害,经手机测试之后发现没有丢包。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
请问你是如何实现与 ios数据互相传输的?能不能发给我一份代码? &急求!!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1285分
你好,请问你说的&官方吞吐量的测试&在哪里啊?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花5827分
你测试的是上行速率,这个还OK
但安卓下行速率很慢,你那边怎么样
苦逼创业狗,欢迎交流
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1690分
安卓的传输速度最大是多少?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元37510分
传输速率问题,可以参考这个帖子
昵称:灰小子
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
iOS限制比较大,最小的connection interval 我记得是20ms, 而且一般都是将近30ms。一般实现不了
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
安卓还是比较开放的,IOS这么闭塞。还真不知道。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士2885分
蓝牙模块实际数据传输速度本来就很慢,如果对数据量有硬性要求,建议选择其他的无线传输方式。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3058分
应该是IOS本身的问题,的速度还是可以的
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
不是协议本身的问题,是IOS的问题,如果两端都是你开发的,问题就很好解决。IOS那端的限制。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
你可以对比一下ardio系统,如果是ios受到的限制,你发送多快都没有有,就是发了它回应很慢。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.1442人阅读
根据Bluetooth 4.0 BLE部分协议:
BLE中物理层physical layer的传输速率是1Mbps,除了这个外,数据传输速率与包大小、CPU处理时间相关。
1.总体结构:
preamble(1 Byte)&#43; Access Address(4 Bytes)&#43; PDU &#43; CRC(3 Bytes)
preamble =
Access Address = 0x8e89bedd6
PDU =&&Header(2 Bytes)&#43; 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) &#43; 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) &#43; 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)&#43; 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) &#43; 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) &#43; 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)&#43; Payload (34 Bytes)
Header:0101 - connect request by initiator
Payload&=InitA(6 Bytes)&#43; AdvA(6bytes)&#43; LLData(22 Bytes)
LLData 包含连接信息,详细结构参考bluetooth 4.0 协议。
4. LL 数据通道及控制包
PDU =&&Header(2 Bytes)&#43; Payload (27 Bytes max.)
Header:详细说明参考bluetooth 4.0 协议;
LL 数据通道
Payload &= 0~27 bytes
Payload = 1~23 Bytes
若只考虑蓝牙设备连接之后,评估数据传输速率
最大包长度:preamble(1 Byte)&#43; Access Address(4 Bytes)&#43; PDU(29 Bytes) &#43; CRC(3 Bytes)= 41 Bytes射频PHY传输速率 1Mbps
则传输有效payload 27字节耗时:41*8/1 = 328 us
一个27字节的传输周期 :328 &#43; 150 &#43; 80 &#43; 150 = 708 us,若能持续传输,即传输速度:38KB/s,这样显然功耗不会低,也不符合BLE协议规范,真正的传输速度受连接事件间隔和间隔内能传输数据包数目相关。
如果连接时间间隔设置到7.5ms(协议规定最小&#20540;),一个连接事件传输3个包,则传输速率大约是10.8kB/s,一个连接事件能传输几个包与连接设备密切相关,看到很多CC2540实测数据,时间间隔7.5ms和一个传输时间3个包以上很多都达不到,51内核是其重要原因之一,在&有5.9KB/s,也有在论坛看到有40ms间隔,2个包,即1.4KB/s成功的案例,以后有时间我再实测下速度
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16058次
排名:千里之外
原创:17篇
(1)(1)(2)(1)(2)(2)(2)(5)(3)(5)2488人阅读
iOS开发(102)
蓝牙BLE的最大特点就是低功耗,而低速率和简单的交互协议是降低功耗的重要组成部分。因此BLE一般应用于低速率的近场控制和数据交互,如智能家电、运动手环等等,小数量的控制和交互对传输速度没有要求,每秒1K字节就可以了,有时为了功耗可能会更低。但在某些场景下,可能要求BLE尽可能提高传输速率,如无线空中升级OTA、无线对讲语音传输等等。接下来,我们来分析如何提高BLE的速率来满足需求,并探讨BLE连接的稳定性。
一、BLE数据包分析
BLE包的结构是:
preamble(1 Byte)&#43; AccessAddress(4 Bytes)&#43; PDU &#43; CRC(3 Bytes)
1)preamble =
2)Access Address = 0x8e89bedd6
3)连接以后的数据传输的PDU是:Header(2 Bytes)&#43; Payload (27 Bytes max)&#43;MIC(4bytes),所以传输一个包的
最大长度是1&#43;4&#43;33&#43;3=41字节,有效数据最大是27字节。
二、自定义characteristic的最大长度
&&&&&& 从上面分析可见,通过WRITE或者NOTIFY characteristic发送一个包的最大长度是27字节。但是这个27字节指的是BLE底层的协议包&#26684;式。对于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毫秒一个单位。明显,这个数&#20540;越小,传输速度也高。
蓝牙BLE协议规定连接参数最小是5,即7.25毫秒;而手机规定连接参数最小是8,即10毫秒。规定是16,即20毫秒。
连接参数完全由主机决定,但从机可以发出更新参数申请,主机可以接受也可以拒绝。Android手机一部接受,而ios比较严&#26684;,拒绝的概率比较高。
一般场景,连接参数设置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米,稳定性也有保证。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:30893次
排名:千里之外
原创:37篇
转载:78篇
(6)(3)(1)(15)(2)(5)(28)(26)(1)(5)(1)(1)(2)(1)(1)(8)(7)(4)(1)}

我要回帖

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

更多推荐

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

点击添加站长微信