OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3634|回复: 3

两个HC05蓝牙之间通讯的一些小疑惑

[复制链接]

48

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2016-11-21
在线时间
64 小时
发表于 2017-1-2 11:17:20 | 显示全部楼层 |阅读模式
1金钱
我是用两块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。?

最佳答案

查看完整内容[请看2#楼]

1,必须蓝牙和串口波特率一样才可以通信。 蓝牙其实也没你想的那么快,STM32的串口,就比蓝牙快,只是你的51,可能性能太低了。 2, 当然可以,他们之间的传输,并不是串口。 3,做协议
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-1-2 11:17:21 | 显示全部楼层
1,必须蓝牙和串口波特率一样才可以通信。  蓝牙其实也没你想的那么快,STM32的串口,就比蓝牙快,只是你的51,可能性能太低了。
2, 当然可以,他们之间的传输,并不是串口。
3,做协议
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

48

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2016-11-21
在线时间
64 小时
 楼主| 发表于 2017-1-3 22:49:33 | 显示全部楼层
正点原子 发表于 2017-1-2 11:17
1,必须蓝牙和串口波特率一样才可以通信。  蓝牙其实也没你想的那么快,STM32的串口,就比蓝牙快,只是你的 ...

什么叫做协议啊?自己写一个规范》?
回复

使用道具 举报

29

主题

492

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2016-4-7
在线时间
123 小时
发表于 2017-1-4 10:42:35 | 显示全部楼层
有些买来的蓝牙模块波特率都设定好了的,你直接用好了,当然跟串口通讯的波特率要按说明书来了,不然读到的数据不对的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 13:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表