DMA双缓冲传输意义

来源:互联网 发布:qq农场白萝卜数据 编辑:程序博客网 时间:2024/05/17 04:21

双缓冲,也有人叫乒乓缓冲.因为一般情况下,串口的数据DMA 传输进BUF1 的过程中,是不建议对

  BUF1 进行操作的.但由于串口数据是不会等待的直传,所以你总不能等BUF1 满了,

  才往FLASH 上写,因为这时候串口数据依旧是源源不断.于是,使用双缓冲就变的理

  所当然了.当BUF1 满了的时候,就马上设置DMA的目标为BUF2,并且BUF1的数据

  往25F080上灌.当串口DMA写满了BUF2的时候,再设置DMA的目标为BUF1,此时

  再操作BUF2写进25F080.如此一直循环,就好像打乒乓球那样吧,所以就叫乒乓缓冲.

  用这个方法,你必须确保两点:

a.DMA 灌满了BUF1 的时候,会发生中断,此时切换DMA 的目标缓冲为BUF2,而且切换的过程必须在新的串口数据溢出之前完成.

b.在DMA的BUF1满之前,另外一个有数据的BUF2必须能全部写进25F080,其中包括了遇到新的扇区边界而要刷除扇区的操作时间!!

  可以看出,BUF的增大,并不能够很大程度的提升速度极限.


本文来自: 高校自动化网(Www.zdh1909.com) 详细出处参考(转载请保留本链接):http://www.zdh1909.com/html/stm32/10907_2.html

0 0
原创粉丝点击