找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 6011|回復(fù): 10
收起左側(cè)

STM32藍(lán)牙接收亂碼

[復(fù)制鏈接]
ID:891306 發(fā)表于 2021-7-15 22:06 | 顯示全部樓層 |閱讀模式
120黑幣
程序是STM32藍(lán)牙串口程序,單片機(jī)接收數(shù)據(jù),然后返回給手機(jī)該數(shù)據(jù)。
現(xiàn)象:
1)不連接藍(lán)牙模塊,XCOM正常接收
屏幕截圖 2021-07-15 214935.png

2)連接藍(lán)牙后,電腦串口發(fā)送字符 a ,XCOM返回?cái)?shù)據(jù)中,一部分是正常的 a , 一部分是亂碼(紅線內(nèi)1序號(hào)處)
屏幕截圖 2021-07-15 21121803.png
3)手機(jī)app發(fā)送a,電腦串口助手XCOM接收亂碼(紅線外2序號(hào)處)

分析:
(1)波特率設(shè)置正確,均為4800
(2)藍(lán)牙連接USB-TTL后,手機(jī)app發(fā)送數(shù)據(jù),串口助手XCOM可正常接收,證明藍(lán)牙硬件沒問題
   單片機(jī)連接USB-TTL后,電腦發(fā)送數(shù)據(jù),可返回相同的數(shù)據(jù)
(3)百度了一下,在眾多回答中,注意到:藍(lán)牙和單片機(jī)的時(shí)序不對(duì)。但是我對(duì)這方面的知識(shí)很迷茫,不敢妄下結(jié)論

STM32藍(lán)牙demo.7z (194.19 KB, 下載次數(shù): 9)

回復(fù)

使用道具 舉報(bào)

ID:367934 發(fā)表于 2021-7-16 08:56 | 顯示全部樓層
藍(lán)牙和單片機(jī)都是串口通訊的話沒啥時(shí)序?qū)Σ粚?duì)的問題。只有波特率對(duì)不對(duì)。串口通訊出現(xiàn)亂碼很大可能是波特率不對(duì)。藍(lán)牙模塊的波特率。單片機(jī)的波特率。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2021-7-16 09:55 | 顯示全部樓層
藍(lán)牙模塊,本身要設(shè)置波特率的。
四者的波特率,都要對(duì)應(yīng)的
手機(jī)端 ------ 藍(lán)牙模塊  ----- 單片機(jī)   -------- 電腦端
回復(fù)

使用道具 舉報(bào)

ID:891306 發(fā)表于 2021-7-16 10:19 | 顯示全部樓層
devcang 發(fā)表于 2021-7-16 09:55
藍(lán)牙模塊,本身要設(shè)置波特率的。
四者的波特率,都要對(duì)應(yīng)的
手機(jī)端 ------ 藍(lán)牙模塊  ----- 單片機(jī)   --- ...

手機(jī)端。。可以設(shè)置波特率嗎?
回復(fù)

使用道具 舉報(bào)

ID:891306 發(fā)表于 2021-7-16 10:20 | 顯示全部樓層
適得府君書 發(fā)表于 2021-7-16 08:56
藍(lán)牙和單片機(jī)都是串口通訊的話沒啥時(shí)序?qū)Σ粚?duì)的問題。只有波特率對(duì)不對(duì)。串口通訊出現(xiàn)亂碼很大可能是波特率 ...

單片機(jī)程序波特率為4800,藍(lán)牙我用USB-TTL測(cè)試后,也是4800
回復(fù)

使用道具 舉報(bào)

ID:377268 發(fā)表于 2021-7-16 14:20 | 顯示全部樓層
大概看了下,提出幾個(gè)疑問:
1,這個(gè)代碼項(xiàng)目是要用單片機(jī)做橋梁,實(shí)現(xiàn)串口助手和手機(jī)藍(lán)牙助手的通信嗎?
2,如果要實(shí)現(xiàn)雙向通信,藍(lán)牙模塊和電腦串口助手得各自分別占用一個(gè)串口,我看你代碼只開了串口1,只能是單向通信:即PA9接藍(lán)牙PA10接USB-TTL,實(shí)現(xiàn)電腦發(fā),單片機(jī)收,并轉(zhuǎn)發(fā)給藍(lán)牙模塊(也就是轉(zhuǎn)發(fā)給手機(jī));二是反過來接,傳輸方向相反。
3,串口中斷服務(wù)函數(shù)中沒進(jìn)行中斷標(biāo)志位的清除,會(huì)造成程序死在中斷。
結(jié)論:你的(2)圖電腦發(fā)送a之后,進(jìn)入中斷并且無法退出,則不停執(zhí)行printf(“%c”,receivedata);所以a之后會(huì)有亂碼, 那是接收寄存器里的隨機(jī)數(shù)據(jù)。至于藍(lán)牙發(fā)送后電腦收到????,大概率是接線錯(cuò)誤,收到了非顯示字符,串口軟件自動(dòng)填充成了?。
如果數(shù)據(jù)線都接的正常, 建議檢查下供電。單片機(jī)3.3還真不一定行。

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:81196 發(fā)表于 2021-7-16 17:11 | 顯示全部樓層
1.首先你的串口不只是有比特率,還有校驗(yàn)位,停止位,都確定無誤;
回復(fù)

使用道具 舉報(bào)

ID:891306 發(fā)表于 2021-7-16 17:57 | 顯示全部樓層
1105730718 發(fā)表于 2021-7-16 14:20
大概看了下,提出幾個(gè)疑問:
1,這個(gè)代碼項(xiàng)目是要用單片機(jī)做橋梁,實(shí)現(xiàn)串口助手和手機(jī)藍(lán)牙助手的通信嗎?
2 ...

非常感謝大佬回復(fù),對(duì)于你的疑問,我解釋一下:
(1)代碼項(xiàng)目是手機(jī)app發(fā)送一個(gè)字符,單片機(jī)返回給手機(jī)該字符
(2)這個(gè)代碼是用洋桃電子的例程修改的,在我不連接藍(lán)牙模塊時(shí),單片機(jī)是可以在串口助手上返回?cái)?shù)據(jù),亂碼是發(fā)生在連接藍(lán)牙后。。。
(3)藍(lán)牙和單片機(jī)的rx,tx交叉連接,應(yīng)該沒問題
(4)藍(lán)牙模塊要求5V供電,單片機(jī)是連接數(shù)據(jù)線供電
(5)經(jīng)過多天的調(diào)試,發(fā)現(xiàn)在有些時(shí)候,藍(lán)牙和單片機(jī)可以正常傳輸數(shù)據(jù);但在大部分時(shí)候是亂碼
回復(fù)

使用道具 舉報(bào)

ID:891306 發(fā)表于 2021-7-16 17:58 | 顯示全部樓層
shumivan 發(fā)表于 2021-7-16 17:11
1.首先你的串口不只是有比特率,還有校驗(yàn)位,停止位,都確定無誤;

藍(lán)牙的校驗(yàn)位這些設(shè)置是默認(rèn)出廠設(shè)置,代碼的是8位數(shù)據(jù)位,1位停止位,均無誤
回復(fù)

使用道具 舉報(bào)

ID:891306 發(fā)表于 2021-7-16 18:39 | 顯示全部樓層
會(huì)不會(huì)是串口1時(shí)鐘頻率太高,單片機(jī)接收補(bǔ)刀手機(jī)發(fā)來的數(shù)據(jù),有沒有這種可能?
回復(fù)

使用道具 舉報(bào)

ID:917614 發(fā)表于 2021-7-16 21:15 | 顯示全部樓層
https://blog.csdn.net/xiaolong11 ... e/details/116707684  

可以看看這個(gè) 我覺得遇到問題你一個(gè)一個(gè)排除,,先看看硬件的連接和藍(lán)牙模塊是否有問題,,
再去看你的程序,,我覺得問題在于你的程序。。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表