串口通信接受存储方式

本文介绍了串口通信中处理数据的几种方法,包括单一缓存的中断处理、乒乓缓存和环形队列缓存。第一种方式可能在高数据速率下丢失数据,适合低速或应答式通信。第二种乒乓缓存通过交替处理两个缓冲区来避免丢失。第三种环形队列结合DMA,允接收和处理并行进行,但实现复杂。作者提到还计划尝试第四种方法——使用消息队列,并提及信号量在嵌入式系统中的应用。

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

串口通信的接受,处理数据的方法:

  1. 设置一个接受缓存,串口接受中断处,将寄存器的值给接受缓存。接受超时(用定时器做超时或者别的方式,定时超时和波特率有关)后,去处理这包数据,有效性校验,校验成功后,去应用这包数据。

分析:这种方式,处理包数据的时候,是关闭了接受中断,这样会丢失数据。但是如果接受数据速率低,或者是应答式的,就可以使用这种方式。

  1. 设置两个缓存,就是乒乓缓存,A缓存接受数据的时候,去处理B缓存里的数据。B缓存接受数据的时候,去处理A缓存里的数据。
  2. 设置环形队列缓存,这种方式可以用DMA方式接受数据,使用共享环形队列,一端接受数据,一端处理数据。这种方式比较难实现,也还存在回溯和同步问题。一般使用消息队列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值