当前位置: 代码迷 >> 综合 >> 关于 ping-pong buff
  详细解决方案

关于 ping-pong buff

热度:75   发布时间:2024-01-20 09:11:22.0

文章目录

  • ping-pong (乒乓)buff
    • 介绍 :什么是pingpong ?
    • 使用场景:什么时候需要pingpong?
    • 程序实现步骤

ping-pong (乒乓)buff

介绍 :什么是pingpong ?

ping-pong buffer 也叫双缓存 double buffer, (必须是两个)就是一个缓存在写入的时候, 另一个缓存同时在处理的结构. 用来提高计算机运行速度, 在显示数据处理中常常用到。

一句话描述:
pingpong是一种数据缓存的手段,通过pingpong操作可以提高数据传输的效率。

使用场景:什么时候需要pingpong?

一般情况下,串口数据DMA传输到buff1(内存上的一片连续的缓冲区)的过程中,是不建议对buff1进行操作的,但由于串口数据是一个连续的过程,cpu在处理数据的同时,串口源源不断接收数据,此时会造成数据丢失,而乒乓缓冲就完美解决这个问题。

过程:
当串口buff1满了时,DMA的目标地址迅速切换到buff2 中,此时可以处理buff1的数据;
当串口buff2满了时,DMA的目标地址迅速切换到buff1 中,此时可以处理buff2的数据;
如此一致循环下去,就像打乒乓球一样,你推我挡,简称“乒乓缓冲”

程序实现步骤

  • 定义2个buff缓冲区
  • buff1缓冲区接收数据,buff2等待
  • buff1 缓冲区数据写满,切换缓冲区,buff2缓冲区接收数据
  • buff2 缓冲区数据写满,切换缓冲区,buff1缓冲区接收数据