文章目录
- 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缓冲区接收数据