找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5182|回复: 10
打印 上一主题 下一主题
收起左侧

STM32蓝牙接收乱码

[复制链接]
跳转到指定楼层
楼主
120黑币
程序是STM32蓝牙串口程序,单片机接收数据,然后返回给手机该数据。
现象:
1)不连接蓝牙模块,XCOM正常接收


2)连接蓝牙后,电脑串口发送字符 a XCOM返回数据中,一部分是正常的 a , 一部分是乱码(红线内1序号处)

3)手机app发送a,电脑串口助手XCOM接收乱码(红线外2序号处)

分析:
(1)波特率设置正确,均为4800
(2)蓝牙连接USB-TTL后,手机app发送数据,串口助手XCOM可正常接收,证明蓝牙硬件没问题
   单片机连接USB-TTL后,电脑发送数据,可返回相同的数据
(3)百度了一下,在众多回答中,注意到:蓝牙和单片机的时序不对。但是我对这方面的知识很迷茫,不敢妄下结论

STM32蓝牙demo.7z (194.19 KB, 下载次数: 9)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:367934 发表于 2021-7-16 08:56 | 只看该作者
蓝牙和单片机都是串口通讯的话没啥时序对不对的问题。只有波特率对不对。串口通讯出现乱码很大可能是波特率不对。蓝牙模块的波特率。单片机的波特率。
回复

使用道具 举报

板凳
ID:277550 发表于 2021-7-16 09:55 | 只看该作者
蓝牙模块,本身要设置波特率的。
四者的波特率,都要对应的
手机端 ------ 蓝牙模块  ----- 单片机   -------- 电脑端
回复

使用道具 举报

地板
ID:891306 发表于 2021-7-16 10:19 | 只看该作者
devcang 发表于 2021-7-16 09:55
蓝牙模块,本身要设置波特率的。
四者的波特率,都要对应的
手机端 ------ 蓝牙模块  ----- 单片机   --- ...

手机端。。可以设置波特率吗?
回复

使用道具 举报

5#
ID:891306 发表于 2021-7-16 10:20 | 只看该作者
适得府君书 发表于 2021-7-16 08:56
蓝牙和单片机都是串口通讯的话没啥时序对不对的问题。只有波特率对不对。串口通讯出现乱码很大可能是波特率 ...

单片机程序波特率为4800,蓝牙我用USB-TTL测试后,也是4800
回复

使用道具 举报

6#
ID:377268 发表于 2021-7-16 14:20 | 只看该作者
大概看了下,提出几个疑问:
1,这个代码项目是要用单片机做桥梁,实现串口助手和手机蓝牙助手的通信吗?
2,如果要实现双向通信,蓝牙模块和电脑串口助手得各自分别占用一个串口,我看你代码只开了串口1,只能是单向通信:即PA9接蓝牙PA10接USB-TTL,实现电脑发,单片机收,并转发给蓝牙模块(也就是转发给手机);二是反过来接,传输方向相反。
3,串口中断服务函数中没进行中断标志位的清除,会造成程序死在中断。
结论:你的(2)图电脑发送a之后,进入中断并且无法退出,则不停执行printf(“%c”,receivedata);所以a之后会有乱码, 那是接收寄存器里的随机数据。至于蓝牙发送后电脑收到????,大概率是接线错误,收到了非显示字符,串口软件自动填充成了?。
如果数据线都接的正常, 建议检查下供电。单片机3.3还真不一定行。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:81196 发表于 2021-7-16 17:11 | 只看该作者
1.首先你的串口不只是有比特率,还有校验位,停止位,都确定无误;
回复

使用道具 举报

8#
ID:891306 发表于 2021-7-16 17:57 | 只看该作者
1105730718 发表于 2021-7-16 14:20
大概看了下,提出几个疑问:
1,这个代码项目是要用单片机做桥梁,实现串口助手和手机蓝牙助手的通信吗?
2 ...

非常感谢大佬回复,对于你的疑问,我解释一下:
(1)代码项目是手机app发送一个字符,单片机返回给手机该字符
(2)这个代码是用洋桃电子的例程修改的,在我不连接蓝牙模块时,单片机是可以在串口助手上返回数据,乱码是发生在连接蓝牙后。。。
(3)蓝牙和单片机的rx,tx交叉连接,应该没问题
(4)蓝牙模块要求5V供电,单片机是连接数据线供电
(5)经过多天的调试,发现在有些时候,蓝牙和单片机可以正常传输数据;但在大部分时候是乱码
回复

使用道具 举报

9#
ID:891306 发表于 2021-7-16 17:58 | 只看该作者
shumivan 发表于 2021-7-16 17:11
1.首先你的串口不只是有比特率,还有校验位,停止位,都确定无误;

蓝牙的校验位这些设置是默认出厂设置,代码的是8位数据位,1位停止位,均无误
回复

使用道具 举报

10#
ID:891306 发表于 2021-7-16 18:39 | 只看该作者
会不会是串口1时钟频率太高,单片机接收补刀手机发来的数据,有没有这种可能?
回复

使用道具 举报

11#
ID:917614 发表于 2021-7-16 21:15 | 只看该作者
https://blog.csdn.net/xiaolong11 ... e/details/116707684  

可以看看这个 我觉得遇到问题你一个一个排除,,先看看硬件的连接和蓝牙模块是否有问题,,
再去看你的程序,,我觉得问题在于你的程序。。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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