CC2540最多能传多少有效数据/s
目前我看到的demo最多20K bytes, 3.35 seconds。
这也太差了一点吧。我8个通道1k采样率的心电数据都传不了!
心电需要 1K 采样率吗?有研究表明1K 采样率不是必须的。另外TI 有高Data Rate的解决方案!比如BT, BLE都支持的CC2560。BLE主要用于低数据率的应用。
BLE 定位就是传感数据,周期性数据,不是用来传大量数据的.应用包最多23个字节一包,传手机,你可以选择WIFI,经典蓝牙,
传电脑,你可以试试CC2530,cc2544
我被1Mbps给蒙蔽了。唉奔驰设计宣告失败!
宣传广告坑爹呀,要知道大部分人都不是专家。不知道你的1Mbps究竟有多少水分!
抱歉!请Data Rate 跟实际Over the air的Throughput是有差别的。Data Rate主要由调制方式决定,Throughput跟协议, 通信环境等相关,。比如WiFi的无线路由器上所标明的Data Rate跟 Throughput是不一样的。以后选IC请考虑周全一点。
Peng He您好,感谢回复。 还想请教一个问题。
wiki上那个宣称5.9k/s的DataThroughput演示代码。 我经过实际测试发现。
只写一个 sendData();每7ms左右可以可靠传输20个有效字节。
而象demo代码那样,连着4个 sendData();写在一起,丢包严重。而且实际传输数据大约只是前者的1/4。
sendData();
sendData();
sendData();
sendData();
连续写几个sendData();不但不能提高有效发送数据量,而是减少,且丢包。
请问是我哪里没有搞对?还是那个demo本身就有问题?
反而减少发送间隔时间实测可以提高发送的有效数据量。将发送间隔时间设置成4ms每s实测可以可靠发送4140个bytes。到3ms则丢包。
刚才又测试了一下,连续发4个sendData();也能可靠发送数据。只是要把发送间隔调到16ms。实测每s可稳定传送4700个bytes。
求做过CC2540的高手,你所知道的或者你自己已经实现了的CC2540最高能传多少bytes/s。
请把测试环境,方法,Setup 描述清楚。最好拍张照片进行说明。
1. 测试环境
我的办公室,周围无强无线干扰。硬件采用TI的CC2540评估板。
2. 方法
使用TI的演示项目SimpleBLEPeripheral,将simpleBLEPeripheral.c换成wiki上的throughput_10ms_20byte_notifications演示代码。原演示代码发送1000个包停止发送。我改为了连续发送不停止。
使用我自己写的串口程序接收数据包(这个程序应该不会有问题,921.6k波特率2k采样率的心电数据接收都能搞定的)。包头为“04,0xFF,0x1C,0x1B,0x05,0x00,0x00,0x00,0x16,0x14,0x00”。识别到一次错误包头则“包头错误”+1。
每个包前16个字节为8通道虚拟的心电数据。后4个字节为包顺序号,每识别到一个错误的顺序号则“顺序号错误”+1。
3. 设置
连续发4个sendData();。发送间隔时间设置17ms(原设置为7ms,;经测试会导致我的数据大量出错)。
其它设置没有改变(我有改过Min和Max 连接间隔为6ms,没有发现有什么变化)。
ps.
原wiki上的demo,我觉得有个矛盾。他7ms发4次应该有80字节。那么就大约可以发11.1kbtye/s。但是他却说最大只能发5.9kbtye/s。我估计他就是丢包了。
还有USB Dongle上跑的是HostTestApp
上午看了一些E文的回答。都说可以在7.5ms间隔下发80Byte可以做到8-10kB/s。
为什么我只能做到4kB多一点呢。究竟问题出在哪里?
有个E文的回复,说是可以做更高的传输率的。只是CC2540的协议栈了为了省电而做了限制。
不知道TI的协议栈能否有提供一个接口让用户自己来配置省电和传输率之间的平衡?
Liao Wei 你好,
感谢你对2540的热衷 :)
有一点, 越短的connection interval, 越大的功耗.
事实是, 根据蓝牙协议栈的规定, 7.5ms是最小的connection interval. 这是BLE通信双方都必须遵从的规定. 最大是4s.
数据传输方面, 同时也要考虑到接收方的实际情况, 事实上是, 在实际产品中, 接收方也都是有限制的. 在一个connection interval里面, 一般也都只能接收3到4个包, 比如说iPhone.
如果无限制发包, 那就失去BLE的意义了.
个人感觉我的程序为什么1个连接间隔达不到3-4个包,很大的原因是51核跑得太慢。因为我仅仅把取模拟心电数据的代码屏蔽,每s就可以多传大约600个字节。
唉,不纠结这个问题了。和客户去解释为什么不能做1k的采样率吧。
1. 我实测下来差不多就是这个吞吐量。
2.还有,如果你只是做数据传输,数据是在interval之前就在buffer里的,跟内核太大的关系。
3. 我相信做BLE都是要和手机连接的。现在的手机支持的比较好的就是水果系列了。在这个平台里面,你只能40ms来一个interval。7.5ms只是个理论。。。。
WZ,你好。能具体说一下你每s传了多少个字节吗?
我做测试发现2ms就可以做完4个包的传输。为什么我的发送间隔时间只能设置到17ms以上才能保证数据正确。
我要求并不高,能8ms发送4个包就可以了。但是我为什么没有做到,在这个demo的基础上还需要做哪些修改才能达到呢?我现在想知道是我做不到还是CC2540做不到。
您好!请问CC2540可以用来传送文件吗?有没有这样的例程参考?我现在看到的基本是传送数据的例子。谢谢。。。。
BLE不太适合用于大数据【比如文件】的传输,如果实在需要,你得把文件拆分成一个个小包来发送
我们的实测
- 不用Notification : 2.6kbps
每个包的长度定在20 byte, 连续 20s 读数据
- 用Notification :
每个包的长度定在20 byte, 连续 20s 发数据, 发送间隔 :
- 10ms : 15.6kbps 无丢包,
- 8ms : 16.2kbps 有8%左右丢包
硬件 :CC2540 & Iphone 5S
你好,我正在用CC2540做心电采集。请问你有做好的模块在卖吗?方便留个联系方式吗?我的QQ454703288,看到请回复,谢谢!
请问你是怎么实现一次发20字节的,参考官网的sendData,不知道是怎么赋值给characteristic的,小白请赐教