TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C28346的DMA中断

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

10#:

DMA中断可以设置是reansfer开始或结束时产生,默认为开始时。

数据搬运与中断本身没有关系,只要触发DMA的条件满足就开始搬运,所以应该是进中断时就启动。

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

BIN YAO1:

回复 10#:

那也就是说,在进入DMA中断的时候,我无法半段数据是否搬运完成,也没有办法校验搬运的数据是否正确咯?

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

10#:

回复 BIN YAO1:

如果是这样,那就取决于你需要搬运的数据有多少,如果能在进入中断前搬运完成,大概是16个cycles(http://processors.wiki.ti.com/index.php/Interrupt_FAQ_for_C2000#ISR_Latency),当然就可以校验,否则就会存在问题。

另外一点,我们讨论的是默认的情况,也即在数据搬运开始就进入中断,你完全可以设置为数据搬运结束产生中断,那这就不是问题了。

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

BIN YAO1:

回复 10#:

但是我试过设置在搬运完成后进入中断,但是实际效果好像和设置在开始时进入中断时一样的。

此外TI关于DMA的文档中提到过在用连续模式时,中断是在开始时进入;在非连续模式下,中断是在搬运完成之后进入的。这是不是说这就是既定的事实,无法更改?

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

10#:

回复 BIN YAO1:

第一点很容易可以测试一下,在搬运开始触发一个信号,进入中断再触发另一个信号,同时在示波器上抓出来对比一下,应该是有不同的。

后面的描述在手册的哪一段?

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

BIN YAO1:

回复 10#:

在文档的第六章 19页讲到3三种模式时,CHINTMODE那部分

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

10#:

回复 BIN YAO1:

那你说的对,但只有在ping-pong buffer scheme with continuous mode时才是,你确定也一定要使用这种模式吗?

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

BIN YAO1:

回复 10#:

这个模式是怎么使用的呢?  是不是为了使得DMA和CPU不冲突?  那如果不使用ping-pong buffer scheme的时候,CPU和DMA访问同一内存地址会如何?

在连续模式下,默认DMA中断在一个transfer的开始。请问DMA是进中断的同时启动数据的搬运,还是出了DMA中断之后再启动的?

10#:

回复 BIN YAO1:

是的,是为了两才不冲突,具体使用参考你上面提到的那一章节,就是使用active和shadow的Source/Destination Address Pointers和Source/Destination Begin Address Pointers.

如果不使用,CPU和DMA同时访问同一RAM,则DMA优先级高,具体参考4.2 For All Other Peripherals/Memories.

赞(0)
未经允许不得转载:TI中文支持网 » 关于C28346的DMA中断
分享到: 更多 (0)