HC32F460 串口数据异常(已解决)
本帖最后由 长江一道浪 于 2023-5-17 15:16 编辑我使用官方串口代码,ESP32传输到HC32(串口四),HC32(串口1或用串口2)做串口转发到上位机串口助手,串口数据有中英文,不同的环境上位机显示发生了改变,默认波特率115200。第一种:HC32不用串口中断,在主循环里做串口转发,串口助手显示ESP32数据不乱码。
第二种:HC32在串口接收中断做转发,开启了串口接收错误中断,串口助手显示ESP32数据部分乱码(自己用两个串口助手做数据转发,数据正常)。
第三种:ESP32的串口直接到串口助手,HC32不做转发,串口助手软件此时两种情况:1.使用大虾的SSCOM助手,串口数据正常。2.使用我同事的串口助手软件数据部分乱码,然后同事调了串口助手软件空闲接收数据时间,调到100ms,串口数据显示正常,但是偶尔也会部分乱码。
不得不承认大虾的串口助手软件牛X,然后请问大佬们这个串口代码该怎么优化才好呀,我使用的空闲中断,ESP32数据完全断层。已解决!!!
从描述的现象来看,出现乱码的原因大概率是因为串口助手对中文字符的解析问题造成的,也就是字体转化的问题。 编码格式一样吗? keil一般是gb2312,es32一般是utf-8 wubangmi 发表于 2023-3-8 22:44
从描述的现象来看,出现乱码的原因大概率是因为串口助手对中文字符的解析问题造成的,也就是字体转化的问题 ...
像这种情况一般怎么解决呢? 感觉是ESP32发送的串口时序有问题。 挺奇怪的,串口中断转发就会出现乱码? HC32时钟不稳定?还是串口中断外设有问题?不懂呀。 长江一道浪 发表于 2023-3-9 09:59
像这种情况一般怎么解决呢?
别用中文,就算用拼音,也不用汉字。貌似这个问题没好的办法
编译器都是国外的,你用中文外国人也不认识,就是这个道理。
好的串口助手为什么能显示正常,因为他肯定刚刚自带了你所用的编码格式。 我看你说道串口接收中断做转发,是在接收的中断函数里调用发送函数吗?不知你用的发送是不是要等待发送完成的 ,如果是这种情况,有可能会长时间在接收中断里,导致下一次接收数据丢失哦 liuyuxiier 发表于 2023-3-10 10:34
我看你说道串口接收中断做转发,是在接收的中断函数里调用发送函数吗?不知你用的发送是不是要等待发送完成 ...
作中断接收的情况:在接收中断里直接调用串口发送函数,没有用等待发送完成,直接串口中断转发还是不行。 感觉像是波特率不一致的问题啊 检查一下地线有没有可靠接通 这个波特率应该是可以接受的 是不是每次发送没有时间间隔啊 用中断接收的话每包数据能自动判定是否接收完成吗 qcliu 发表于 2023-4-11 13:53
用中断接收的话每包数据能自动判定是否接收完成吗
应该是不能的我记得我都是自己写数据包的包头和包尾的 长江一道浪 发表于 2023-3-13 09:43
作中断接收的情况:在接收中断里直接调用串口发送函数,没有用等待发送完成,直接串口中断转发还是不行。 ...
另一个芯片如何知道当前芯片是否发送完成了呢 楼主有没有开启其他的中断使能 如果有 考虑有没有干扰 学习 已解决!!!
页:
[1]
2