请教关于多通道DMA的问题,大家来看看
时间:10-02
整理:3721RD
点击:
小弟看了一些资料,对多通道DMA这个概念有些疑问,希望各位高手能给一些解答。
以一个8通道的DMA为例,我的理解是这个DMA最多允许8个外设发起DMA请求,然后DMA向CPU请求总线使用权,在获得总线使用权之后,DMA相应优先级最高的外设请求,发起DMA传输,至此,握手完成。
接下来就是数据传输部分,这里我有一些疑问:我看到ARM的DMA数据手册,说8个通道每一个通道内部都设置有1个FIFO,这个我就不大明白了,为什么不能8个通道共用1个FIFO呢?不都是一次DMA传输结束之后才开始下一笔DMA传输吗?是不是存在这样一种情况:当优先级低的通道进行数据传输的过程中,如果有优先级高的通道发出请求,那么DMA会暂停优先级低的通道的数据传输,转而去先处理优先级高的通道的数据传输,等到优先级高的通道的数据传输结束之后,再回头继续处理优先级低的通道的数据传输呢?
如果是这样的话,那么设置8个FIFO还有没有别的考虑呢?
谢谢大家啦。
以一个8通道的DMA为例,我的理解是这个DMA最多允许8个外设发起DMA请求,然后DMA向CPU请求总线使用权,在获得总线使用权之后,DMA相应优先级最高的外设请求,发起DMA传输,至此,握手完成。
接下来就是数据传输部分,这里我有一些疑问:我看到ARM的DMA数据手册,说8个通道每一个通道内部都设置有1个FIFO,这个我就不大明白了,为什么不能8个通道共用1个FIFO呢?不都是一次DMA传输结束之后才开始下一笔DMA传输吗?是不是存在这样一种情况:当优先级低的通道进行数据传输的过程中,如果有优先级高的通道发出请求,那么DMA会暂停优先级低的通道的数据传输,转而去先处理优先级高的通道的数据传输,等到优先级高的通道的数据传输结束之后,再回头继续处理优先级低的通道的数据传输呢?
如果是这样的话,那么设置8个FIFO还有没有别的考虑呢?
谢谢大家啦。
优先级都是带中断的,当然要每个通道都设置一个FIFO了
