硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3997|回复: 7
收起左侧

串口打印乱码各种情况解决办法汇总(2021-06-05)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-6-5 09:36:43 | 显示全部楼层 |阅读模式
编码问题:
1、编码问题,注意自己工程中打印的是UTF-8还是GBK编码,然后上位机串口软件也要做对应的匹配,否则中文显示就是乱码。

波特率问题:
1、首先,肯定要上位机和板子端的波特率一致。
2、注意程序中宏定义HSE_Value大小务必要和自己板子上实际晶振大小一致。然后就是PLL配置,也要基于这个HSE_Value大小下配置的。

硬件问题排查:
1、先测试串口线好坏,将2脚和3脚短接,电脑端上位机串口软件自收发,看看这个线是否有问题,如果没问题,基本锁定是板子端了。
2、板子端也可以做回环测试,将RX和TX短接,做个自首发看看是否正常。
回复

使用道具 举报

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
发表于 2021-7-12 10:18:46 | 显示全部楼层
1.串口数据位停止位奇偶校验位设置的是否一致。
2.如果板子和电脑端回传测试都没问题,可能是串口线交叉了,或者串口线没有供地,这种问题在长期使用串口线过程中会经常碰到。
3.新板子到手的时候务必检查 适中主频是否正确,有可能晶振喊错 或者虚焊 造成主频不准确,可以看我这个帖子查看主频配置是否正确
查看系统时钟的方法
  http://www.armbbs.cn/forum.php?m ... 0&fromuid=18397
  (出处: 硬汉嵌入式论坛)
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2021-7-13 00:59:11 | 显示全部楼层
雷鹏 发表于 2021-7-12 10:18
1.串口数据位停止位奇偶校验位设置的是否一致。
2.如果板子和电脑端回传测试都没问题,可能是串口线交叉了 ...

谢谢补充。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2021-11-7 21:24:48 | 显示全部楼层
请问大佬,我用的案例  V7-051_串行SPI Flash W25QXX读写例程(中断方式)  直接编译打印出来,中文是乱码,英文是正常的。这个问题我一直是忽略的,请问有没有什么解决办法呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2021-11-8 01:12:06 | 显示全部楼层
wangxiaoer 发表于 2021-11-7 21:24
请问大佬,我用的案例  V7-051_串行SPI Flash W25QXX读写例程(中断方式)  直接编译打印出来,中文是乱码 ...

貌似是你串口软件编码问题,如果你是用的我们V7板子,加我好友QQ 512464265, 帮你解决下。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2021-11-12 21:34:18 | 显示全部楼层
谢谢老哥,就是使用的你们的板子
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2021-11-13 08:54:38 | 显示全部楼层
wangxiaoer 发表于 2021-11-12 21:34
谢谢老哥,就是使用的你们的板子

好的,联系我
回复

使用道具 举报

3

主题

63

回帖

72

积分

初级会员

积分
72
发表于 2021-11-13 10:11:50 | 显示全部楼层
我用GD32F405RG测试过串口,经过RS232转换后,GD收到的数据总是乱码,最后分析一通,发现是GD对起始位的要求比较严格,没有ST那么宽容,导致原来的硬件环境换GD直接用不了。
GD也来人了,但他不是技术,一直强调这是小问题拉个群让技术帮我看下,结果一直没动静。我个人认为,识别起始位这种是硬件处理的,芯片如果没有一些后门更改设置,那就根本没办法搞。
问题的根源是:RS232转换芯片MAX3232,对上升沿和下降沿的延时不同,下降沿延时大,上升沿延时小。下降沿多出来的延时导致GD在后续一个字节里的采样全部不对,甚至还影响到后面再次识别起始位。
这不能算GD的问题,只能说它的容错性对比ST稍弱,如果不用232直接TTL,是完全正常的。
放两张图片,有兴趣的可以研究研究

局部

局部

全局

全局

接收错误分析

接收错误分析

ST起始位说明

ST起始位说明
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 10:04 , Processed in 0.199667 second(s), 36 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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