文号
t70309
阅读
14458
回复
6
收藏
4
测量蓝牙串口模块允许的最高通信速率
2015/03/01
IP:广东
今天调程序,需要用串口连续传输大量数据。设置波特率921600,模式8N1,数据发生部分丢失,遂查找原因。
一开始认为是单片机的程序bug,因为我是使用环形缓冲+DMA方式完成的串口通信。
后来发现不是这么回事:如果使用CH340这个USB转串口模块,就没有丢失数据的问题
PC端上位机是自己写的,开发环境Qt,串口接收缓冲已经设置为无穷大。
故推断数据丢失在蓝牙传输到PC的过程中。


随后我发现,只要在发送数据的过程中插入延时,就不会导致数据的丢失。试验过程如下:
image-0001.jpg image-0002.jpg
通过插入延时的方法,可以得知不丢失速率的最小延时数值。为了省时间我只测试了2600字符+10ms和15ms两种情况,没有做更多测试。
2600字符用921600波特率传输需要时间=22.6ms


加上延时15ms,可知平均波特率=553.2kbps
这就是蓝牙2.0无线串口模组BMX-03的最大传输速率
6
11年10个月前IP:天津
753394
1楼
大概因为蓝牙是以报文传送的吧
为了降低功耗,蓝牙应该采用和GSM或nRF24L01类似的突发方式发送数据,而它这样发送就只能以更高的速度将数据分段打包,然后突发发送,当连续发送的时候,数据量太大,可能缓冲区不够大,来不及把大量数据压制成报文来集中发送,所以就丢失数据了。
仅仅是经验推测,没有对照协议和相关资料。
引用
评论
11年10个月前IP:广东
753569
2楼
也就是说最快67KB的传输速度?
引用
评论
11年10个月前IP:天津
753585
3楼
引用 thinker:
也就是说最快67KB的传输速度?
如果是大批量连续的传送,看上去是的。
引用
评论
11年9个月前IP:广东
753646
4楼
引用 hwdz:
如果是大批量连续的传送,看上去是的。
串口这样的速度,电脑是呼啦啦的散热啊
引用
评论
11年9个月前IP:安徽
753669
5楼
蓝牙的传输速率与无线信道的信噪比有关,在不考虑干扰的情况下,距离越远速率越低。通常无误码的情况下蓝牙2.0的传输速率可以达到1.8Mbit/S
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的