你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

两个hc05蓝牙无线通信的一些疑问

[复制链接]
赵怡彬 提问时间:2017-1-2 11:18 /
我是用两块stc12c5a60s2来测试蓝牙的,现在已经调通,可以正常通信,不过有一些问题没想通,能否帮我解答一下?
1.蓝牙之间的波特率叫做无线传输速率。单片机串口波特率是数据收发速率。两者没什么联系,是不同的概念。--这是我网上找到的。
但是我试了一下,一定要设置蓝牙之间的波特率和单片机串口波特率相同才能无线收到数据,真的是这样吗?这样一来,蓝牙之间传送速度不是很大程度上受到单片机的芯片影响。蓝牙之间传送最大速度远大于单片机uart可设置的最大波特率。
2.两个蓝牙波特率不同是否可以通信???理论上来说是不行的,但是我可以实现,主蓝牙4800,从蓝牙9600,可以实现通信,而且如果我设置成一样了,把从蓝牙设置成4800反而通信有问题,延迟非常大,我改变主蓝牙发送的数据,从蓝牙通过串口显示到电脑上,发现延迟的速度也是有变化,一开始延迟2-3秒更新,过了一分钟后大概要延迟6-7秒更新,我切断主蓝牙电源,从蓝牙还是会有数据发送一会儿才停止,而我把从蓝牙设置成9600或115200就不会出现此问题,几乎没延迟。主蓝牙断电,从蓝牙也停止发送数据了,请问这是为什么呢?
3.两个单片机用蓝牙之间通信。与主蓝牙连接的单片机叫主设备,从蓝牙连接的单片机叫从设备。主设备的发送代码是:
while(1)
        {
                Data_TX_X=(GetADCResult(3));       
                Data_TX_Y=(GetADCResult(1));       
                SBUF=Data_TX_X;
                while(TI==0);
                TI=0;
                SBUF=Data_TX_Y;
                while(TI==0);
                TI=0;
        }

从设备的接收代码是:
while(1)
        {       
                while(RI==0);
                Data_RX_X=SBUF;
                RI=0;
                Data_X=Data_RX_X;
                while(RI==0);
                Data_RX_Y=SBUF;
                RI=0;
                Data_Y=Data_RX_Y;

         }
我发现,不同的上电时间,匹配不同,有时候Data_RX_X=Data_TX_X,但是有时候是Data_RX_X=Data_TX_Y。就是两个数据错位了,这也好理解,因为一个在不停的发送,一个在接受,不同上电的时间,可能刚好接到的是对应的,有时候是错位。因为上电开关的话是人按下去,肯定时间间隔会不同,现在能否优化代码,就是我一定要两个对应起来,从设备X接收到的一定是主设备的X,从设备的Y接收到的一定是主设备的Y。?

收藏 1 评论7 发布时间:2017-1-2 11:18

举报

7个回答
jackten 回答时间:2017-1-2 18:18:56
看看先                              
五哥1 回答时间:2017-1-2 20:21:40
一般这个问题,最终是你自己解决的
andypanfan 回答时间:2017-1-3 09:08:14
:):):):):):)
赵怡彬 回答时间:2017-1-3 22:50:54
五哥1 发表于 2017-1-2 20:21
一般这个问题,最终是你自己解决的

最后一个问题该怎么解决?
小小超 回答时间:2017-1-4 08:29:39
估计你把蓝牙与单片机通信的波特率跟蓝牙的通信波特率搞混了。都不是相同的概念。还是先看看相关的书吧
海迹天涯 回答时间:2017-1-4 08:49:19
蓝牙好东西
斜阳 回答时间:2017-1-4 08:55:25
帮顶            

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版