完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是用两块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。? |
|
相关推荐
3个回答
|
|
1,必须蓝牙和串口波特率一样才可以通信。 蓝牙其实也没你想的那么快,STM32的串口,就比蓝牙快,只是你的51,可能性能太低了。
2, 当然可以,他们之间的传输,并不是串口。 3,做协议 |
|
|
|
什么叫做协议啊?自己写一个规范》?
|
|
|
|
有些买来的蓝牙模块波特率都设定好了的,你直接用好了,当然跟串口通讯的波特率要按说明书来了,不然读到的数据不对的
|
|
|
|
只有小组成员才能发言,加入小组>>
317浏览 1评论
433浏览 1评论
561浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
447浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
420浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 07:11 , Processed in 0.757541 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号