Board logo

标题: DMA双缓冲传输具体实现 [打印本页]

作者: yuyang911220    时间: 2015-6-23 11:17     标题: DMA双缓冲传输具体实现

双缓冲,也有人叫乒乓缓冲.因为一般情况下,串口的数据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的增大,并不能够很大程度的提升速度极限.




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0