S3C2440-DMA

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/01/15/6142721.aspx

S3c2440A 支持位于系统总线和外设总线之间的4 个通道的控制器。每个DMA 控制器通道
无限制地执行系统总线上的设备或外设总线上的设备之间数据搬移。换句话说,就是每个
通道都操作一下四种情况:
(1)源和目的设备都在系统总线上
(2)源设备在系统总线上,目的设备在外设总线上
(3)源设备在外设总线上,目的设备在系统总线上
(4)源设备和目的设备都在外设总线上
DMA 的主要有点就是其传输数据不需要CPU 的干涉。DMA 操作可由软件或来自内设或外
部请求引脚来初始化。
DMA每次传送2个字节,放到FIFO中,IIS就播放,FIFO空,导致DMA被再次触发,直到传输计数器为0,产生DMA中断,CPU进入中断处理程序。在DMA传送的时候,CPU可以处理其他事情。提高了系统效率。

下面的程序使用IIS播放声音同时跑流水灯。如果不用DMA,直接用上一篇的IIS程序,会发现声音断断续续,因为IIS和流水灯一起分CPU的时间。如果使用DMA,则IIS需要的数据由DMA负责传送,而CPU可以执行流水灯程序,互相不耽误。当传输计数器为0时,产生DMA中断,CPU进入中断处理程序。其他时候,CPU可以执行流水灯。这样就实现了流水灯和IIS放音同时执行。

你可能感兴趣的:(Blog,J#,UP,IIS)