king00star 发表于 2024-6-3 11:34

HC32L110的LPUART低功耗串口无校验时接收不稳定

HC32L110,无外部高速、低速晶振。RCH用的内部4M晶振,RCL使用内部38.4k,LPUART使用工作模式1(无校验时)或工作模式3(有校验)。
MCU上电初始化后进入低功耗状态,在低功耗状态下LPUART接收。
目前的问题现象:
使用SSCOM发送一帧数据,LPUART 2400/9600带奇偶校验接收无问题,每个字节都会产生中断。
如果改成无校验模式,SSCOM发送一帧数据,只有最后一个字节会产生中断,前面的字节都接收不到(有的时候也会不丢数据)。如果SSCOM发送时停止位改成2位,或者每次只发送1个字节,接收也没问题。

似乎是HC32L110无校验的情况下还是当成了有校验?

king00star 发表于 2024-6-4 15:12

有没有用过深度睡眠下LPUART无校验接收的?如果用过没问题,那我只能找找自己的软硬件问题。如果硬件本身不支持这么用,那就不在这上面浪费时间了

wubangmi 发表于 2024-6-4 16:26

king00star 发表于 2024-6-4 15:12
有没有用过深度睡眠下LPUART无校验接收的?如果用过没问题,那我只能找找自己的软硬件问题。如果硬件本身不 ...

你代码写的有问题,仔细检查代码的问题。

给你的建议是:
1、需要加载内部38400的校准值。
2、模式1和模式3不要混了。模式1为无校验,模式3为有校验。

chenjun89 发表于 2024-6-5 07:47

怀疑是和内部时钟精度有关系,建议楼主还是用外部时钟。

classroom 发表于 2024-6-5 16:18

有可能是硬件故障

laocuo1142 发表于 2024-6-5 17:00

串口通讯速率设置可能过高,或者写入数据缓存区的数据量过大,导致数据处理不及时。

stormwind123 发表于 2024-6-5 19:00

兼容性问题

Annie556 发表于 2024-6-17 12:25

串口接收缓冲区溢出可能会导致不稳定

B1lanche 发表于 2024-6-17 13:31

在无校验模式下,如果SSCOM发送的数据速率过快,可能会导致串口接收缓冲区溢出,从而导致前面的字节丢失

Charlene沙 发表于 2024-6-17 14:35

其实你可以尝试增加串口接收缓冲区的大小,或者减慢SSCOM发送数据的速率,以避免缓冲区溢出

Belle1257 发表于 2024-6-17 16:07

在无校验模式下,如果串口接收中断的优先级设置不正确,可能会导致前面的字节被后面的字节覆盖

Emily999 发表于 2024-6-17 17:11

建议你检查中断优先级设置是否正确,确保串口接收中断的优先级高于其他中断

Allison8859 发表于 2024-6-17 18:12

串口接收中断处理函数逻辑错误,在无校验模式下,如果串口接收中断处理函数的逻辑错误,可能会导致前面的字节被丢失

Carina卡 发表于 2024-6-17 19:16

其实可以检查串口接收中断处理函数的逻辑是否正确,确保每个字节都能够正确接收和处理。这样就可以解决了

Betty996 发表于 2024-6-18 07:30

串口硬件配置错误,在无校验模式下,如果串口硬件配置错误,可能会导致前面的字节被丢失。你可以检查串口硬件配置是否正确,包括波特率、数据位、停止位等参数是否设置正确

alxd 发表于 2024-6-18 09:10

可以通过打印调试信息、查看错误码等方式来定位具体的问题所在

Betty1299 发表于 2024-6-18 11:02

你也可以参考HC32L110芯片的开发文档、LPUART的相关文档和社区资源来解决你的需求

亚瑟 发表于 2024-6-28 19:24

是时钟变化影响的吗

king00star 发表于 2024-6-29 16:24

还没定位出来。
前面大家提到的应该都不是问题。
单个字节发每次都没问题。如果是发多字节数据帧,不管多长,只有最后一个字节产生了接收中断,前面什么反应也没有,感觉是硬件的停止位判断出错了一直未完成字节接收,而最后1个字节停止位肯定足够长。时钟用的内部38.4k,启动的时候也校准过了,时钟应该是对的。

szt1993 发表于 2024-6-30 09:02

是不是硬件干扰问题
页: [1] 2
查看完整版本: HC32L110的LPUART低功耗串口无校验时接收不稳定