[技术问答]

HC32F460 串口数据异常(已解决)

[复制链接]
4121|35
手机看帖
扫描二维码
随时随地手机跟帖
长江一道浪|  楼主 | 2023-3-8 10:12 | 显示全部楼层 |阅读模式
本帖最后由 长江一道浪 于 2023-5-17 15:16 编辑

我使用官方串口代码,ESP32传输到HC32(串口四),HC32(串口1或用串口2)做串口转发到上位机串口助手,串口数据有中英文,不同的环境上位机显示发生了改变,默认波特率115200。第一种:HC32不用串口中断,在主循环里做串口转发,串口助手显示ESP32数据不乱码。
第二种:HC32在串口接收中断做转发,开启了串口接收错误中断,串口助手显示ESP32数据部分乱码(自己用两个串口助手做数据转发,数据正常)。
第三种:ESP32的串口直接到串口助手,HC32不做转发,串口助手软件此时两种情况:1.使用大虾的SSCOM助手,串口数据正常。2.使用我同事的串口助手软件数据部分乱码,然后同事调了串口助手软件空闲接收数据时间,调到100ms,串口数据显示正常,但是偶尔也会部分乱码。

不得不承认大虾的串口助手软件牛X,然后请问大佬们这个串口代码该怎么优化才好呀,我使用的空闲中断,ESP32数据完全断层。已解决!!!


使用特权

评论回复
wubangmi| | 2023-3-8 22:44 | 显示全部楼层
从描述的现象来看,出现乱码的原因大概率是因为串口助手对中文字符的解析问题造成的,也就是字体转化的问题。

使用特权

评论回复
袁胜富| | 2023-3-8 23:53 | 显示全部楼层
编码格式一样吗?

使用特权

评论回复
袁胜富| | 2023-3-8 23:54 | 显示全部楼层
keil一般是gb2312,es32一般是utf-8

使用特权

评论回复
评论
长江一道浪 2023-3-9 09:59 回复TA
请问这种情况应该怎么优化呢?不同的编码格式文件。 
长江一道浪|  楼主 | 2023-3-9 09:59 | 显示全部楼层
wubangmi 发表于 2023-3-8 22:44
从描述的现象来看,出现乱码的原因大概率是因为串口助手对中文字符的解析问题造成的,也就是字体转化的问题 ...

像这种情况一般怎么解决呢?

使用特权

评论回复
朝生| | 2023-3-9 13:54 | 显示全部楼层
感觉是ESP32发送的串口时序有问题。

使用特权

评论回复
LLGTR| | 2023-3-9 13:55 | 显示全部楼层
挺奇怪的,串口中断转发就会出现乱码?

使用特权

评论回复
天天向善| | 2023-3-9 13:55 | 显示全部楼层
HC32时钟不稳定?还是串口中断外设有问题?不懂呀。

使用特权

评论回复
wubangmi| | 2023-3-9 19:42 | 显示全部楼层
长江一道浪 发表于 2023-3-9 09:59
像这种情况一般怎么解决呢?

别用中文,就算用拼音,也不用汉字。貌似这个问题没好的办法
编译器都是国外的,你用中文外国人也不认识,就是这个道理。
好的串口助手为什么能显示正常,因为他肯定刚刚自带了你所用的编码格式。

使用特权

评论回复
liuyuxiier| | 2023-3-10 10:34 | 显示全部楼层
我看你说道串口接收中断做转发,是在接收的中断函数里调用发送函数吗?不知你用的发送是不是要等待发送完成的 ,如果是这种情况,有可能会长时间在接收中断里,导致下一次接收数据丢失哦

使用特权

评论回复
长江一道浪|  楼主 | 2023-3-13 09:43 | 显示全部楼层
liuyuxiier 发表于 2023-3-10 10:34
我看你说道串口接收中断做转发,是在接收的中断函数里调用发送函数吗?不知你用的发送是不是要等待发送完成 ...

作中断接收的情况:在接收中断里直接调用串口发送函数,没有用等待发送完成,直接串口中断转发还是不行。

使用特权

评论回复
woai32lala| | 2023-3-20 08:34 | 显示全部楼层
感觉像是波特率不一致的问题啊

使用特权

评论回复
tpgf| | 2023-4-11 13:17 | 显示全部楼层
检查一下地线有没有可靠接通

使用特权

评论回复
aoyi| | 2023-4-11 13:34 | 显示全部楼层
这个波特率应该是可以接受的 是不是每次发送没有时间间隔啊

使用特权

评论回复
qcliu| | 2023-4-11 13:53 | 显示全部楼层
用中断接收的话  每包数据能自动判定是否接收完成吗

使用特权

评论回复
磨砂| | 2023-4-11 14:33 | 显示全部楼层
qcliu 发表于 2023-4-11 13:53
用中断接收的话  每包数据能自动判定是否接收完成吗

应该是不能的  我记得我都是自己写数据包的包头和包尾的

使用特权

评论回复
晓伍| | 2023-4-11 14:51 | 显示全部楼层
长江一道浪 发表于 2023-3-13 09:43
作中断接收的情况:在接收中断里直接调用串口发送函数,没有用等待发送完成,直接串口中断转发还是不行。 ...

另一个芯片如何知道当前芯片是否发送完成了呢

使用特权

评论回复
八层楼| | 2023-4-11 15:43 | 显示全部楼层
楼主有没有开启其他的中断使能 如果有 考虑有没有干扰

使用特权

评论回复
woai32lala| | 2023-4-26 09:58 | 显示全部楼层
学习

使用特权

评论回复
长江一道浪|  楼主 | 2023-5-10 14:15 | 显示全部楼层
已解决!!!

使用特权

评论回复
评论
yutingle 2023-8-30 15:48 回复TA
怎样解决的? 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

47

帖子

1

粉丝