HC32L110的LPUART低功耗串口无校验时接收不稳定
HC32L110,无外部高速、低速晶振。RCH用的内部4M晶振,RCL使用内部38.4k,LPUART使用工作模式1(无校验时)或工作模式3(有校验)。MCU上电初始化后进入低功耗状态,在低功耗状态下LPUART接收。
目前的问题现象:
使用SSCOM发送一帧数据,LPUART 2400/9600带奇偶校验接收无问题,每个字节都会产生中断。
如果改成无校验模式,SSCOM发送一帧数据,只有最后一个字节会产生中断,前面的字节都接收不到(有的时候也会不丢数据)。如果SSCOM发送时停止位改成2位,或者每次只发送1个字节,接收也没问题。
似乎是HC32L110无校验的情况下还是当成了有校验? 有没有用过深度睡眠下LPUART无校验接收的?如果用过没问题,那我只能找找自己的软硬件问题。如果硬件本身不支持这么用,那就不在这上面浪费时间了 king00star 发表于 2024-6-4 15:12
有没有用过深度睡眠下LPUART无校验接收的?如果用过没问题,那我只能找找自己的软硬件问题。如果硬件本身不 ...
你代码写的有问题,仔细检查代码的问题。
给你的建议是:
1、需要加载内部38400的校准值。
2、模式1和模式3不要混了。模式1为无校验,模式3为有校验。 怀疑是和内部时钟精度有关系,建议楼主还是用外部时钟。 有可能是硬件故障 串口通讯速率设置可能过高,或者写入数据缓存区的数据量过大,导致数据处理不及时。 兼容性问题 串口接收缓冲区溢出可能会导致不稳定 在无校验模式下,如果SSCOM发送的数据速率过快,可能会导致串口接收缓冲区溢出,从而导致前面的字节丢失 其实你可以尝试增加串口接收缓冲区的大小,或者减慢SSCOM发送数据的速率,以避免缓冲区溢出 在无校验模式下,如果串口接收中断的优先级设置不正确,可能会导致前面的字节被后面的字节覆盖 建议你检查中断优先级设置是否正确,确保串口接收中断的优先级高于其他中断 串口接收中断处理函数逻辑错误,在无校验模式下,如果串口接收中断处理函数的逻辑错误,可能会导致前面的字节被丢失 其实可以检查串口接收中断处理函数的逻辑是否正确,确保每个字节都能够正确接收和处理。这样就可以解决了 串口硬件配置错误,在无校验模式下,如果串口硬件配置错误,可能会导致前面的字节被丢失。你可以检查串口硬件配置是否正确,包括波特率、数据位、停止位等参数是否设置正确 可以通过打印调试信息、查看错误码等方式来定位具体的问题所在 你也可以参考HC32L110芯片的开发文档、LPUART的相关文档和社区资源来解决你的需求 是时钟变化影响的吗 还没定位出来。
前面大家提到的应该都不是问题。
单个字节发每次都没问题。如果是发多字节数据帧,不管多长,只有最后一个字节产生了接收中断,前面什么反应也没有,感觉是硬件的停止位判断出错了一直未完成字节接收,而最后1个字节停止位肯定足够长。时钟用的内部38.4k,启动的时候也校准过了,时钟应该是对的。 是不是硬件干扰问题
页:
[1]
2