串口通信时的问题

文章讨论了在串口和SPI通信中,如何避免长时间中断导致的数据帧错误和接收溢出问题。强调了在发送过程中中断不应过长,以免影响数据帧的完整性和接收时序,同时指出ORE错误在高负载系统中的常见性,并提示注意处理中断的优先级和响应时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

串口通信时的问题

1、串口发送数据帧时,尽量不要被长时间的其他中断打断

串口发送:CPU将待发送数据写入串口TDR,数据被转移到移位寄存器后,即使此刻出现其它中断,发送数据也不会出错,因为已经到硬件底层了。

在多个字节数据被写入TDR进行传输时,这个过程可能被其它中断打断,如果中断执行时间较长(超过串口当前波特率传输2个字节时间),则会出现帧字节间延时较长,**接收方则可能出现所谓断帧数据收不全的情况(尤其是采用DMA+空闲中断)。**所以传输时要注意这个环节!!!最好是采用示波器抓波形看看。

串口接收:因移位寄存器将RX线采集数据写入串口接收数据寄存器RDR,因为底层硬件将数据写入RDR,所以即使接收数据过程中出现其它中断,也不会导致接收数据本身错误,而只会稍微晚点接收,但如果晚的时间较长,则出现溢出错误ORE

同理SPI发送接收也类似,发送过程中不能被中断太久!!!

2、ORE错误

我们在MCU系统负载较重(串口收发频率高、多个中断存在(定时器中断、外部中断、DMA中断、串口接收中断等)),很容易出现串口溢出错误(ORE),这种错误的表现形式是:莫名其妙卡死在串口中断中。

接收方空闲中断:不可被高优先级中断长时间打断,否则会被认为是空闲中断;中断不可避免时,一定要缩短高优先级中断处理时间
(处理不同中断标志)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值