STM32
直播中

张浩

8年用户 1205经验值
私信 关注
[问答]

求助,关于stm32f103vct6 usart出错后的处理问题求解

一直有个疑问?usart有在单通道工作模式下可能会有四种错误。pe-校验错,fe-帧错误,ne-噪声标志,org-过载标志。
当如果usart工作的时候,出现以上一种或者多种错误的时候,我应该怎么配置可以让串口重新进入工作。这个再485通信当中特别重要。需要串口自恢复而不能直接报警。
而且出现错误是在所难免的。
根据文档介绍,对于这四种标志的去除有两种方式。
①直接清零,不过他建议是在多通道缓冲下也即使dma方式下。这是为什么????
②先读取一次状态位,然后在读取usart- gt;DR这个寄存器既可以完成标志的清楚。

加入串口工作出现异常,是不是就要清下标志位就可以立刻投入正常工作?

回帖(1)

王璐

2024-5-18 17:38:53
在STM32F103VCT6的USART通信中,确实可能会遇到PE(校验错误)、FE(帧错误)、NF(噪声标志)和ORE(过载标志)这四种错误。当出现这些错误时,需要采取一定的措施来恢复USART的正常工作。以下是一些建议:

1. 错误清除方法:
   - 方法①:直接清零。这种方法适用于DMA(Direct Memory Access,直接存储器访问)方式,因为DMA可以自动处理数据传输,不需要CPU干预。在这种情况下,清除错误标志可以确保DMA继续正常工作。
   - 方法②:先读取一次状态位,然后读取USART->DR寄存器。这种方法适用于非DMA方式,通过读取状态位和数据寄存器来清除错误标志。

2. 自恢复机制:
   为了实现USART的自恢复,可以在程序中添加错误处理逻辑。当检测到错误时,执行以下步骤:
   a. 清除错误标志(使用上述方法)。
   b. 检查USART的状态,确保它已经恢复到正常工作状态。
   c. 如果需要,重新发送数据或重新配置USART参数。
   d. 继续USART通信。

3. 485通信中的注意事项:
   在485通信中,由于通信距离较长,信号容易受到干扰,导致错误发生。为了实现自恢复,可以采取以下措施:
   a. 使用硬件或软件流控制,以减少冲突和错误。
   b. 在程序中实现错误检测和处理逻辑,确保USART能够在出现错误时自动恢复。
   c. 选择合适的波特率和校验方式,以减少错误发生的概率。

总之,为了实现USART在出现错误时的自恢复,需要在程序中添加错误处理逻辑,并根据实际情况选择合适的错误清除方法。在485通信中,还需要考虑信号干扰和冲突的问题,采取相应的措施来提高通信的可靠性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分