EDMA结构图:
上图很清晰的说明了EDMA的工作流程:
- 触发:三种触发方式:事件触发、通道链触发、CPU触发
- 参数装载:加载配置好的通道ram中的参数
- 提交传输请求:准备就绪后,向外部接口(例如EMIF)提交传输请求,开始数据传输。
每个通道都对应一个参数ram,如上图所示,用来配置EDMA所有的需要的传输参数。
EDMA中几个重要的寄存器
首先应该清楚,CIPR和通道号之间没有对应关系,只要TCINT=1,一旦传输完成,CIPR中的TCC位置位;对于CCER,只有TCC取8-11,且CCER对应的位置位才能开始新通道的传输,同时CIPR挂起中断。
- CCER——通道链使能寄存器。用于指定下一个被触发的通道,只对应8-11通道,TCINT=1,TCC=n时,如果当前通道传输完成,一旦n通道允许被链接,则开始n通道的传输。
- CIPR——通道中断挂起寄存器。用于挂起传输完成时的标志。TCINT=1,TCC=n时,如果当前通道传输完成,CIPR[n]被置位。如果响应中断服务程序,则服务程序应先进行CIPR的清除,这里就要注意CIPR的清除是写1而不是写0,写0没效果。
- CIER——通道中断使能寄存器。决定是否产生EDMA_INT中断信号。当CIPR[n]和CIER[n]都为1时,产生EDMA_INT信号。