我在英文版论坛里面发布了一个关于C6748 SPI DMA传输的问题,TI工程师回复了两次后有一周多没有新的回复了,想看看中文版这边有没有可以解决这个问题的工程师。
下面是在英文版论坛的问题链接:
https://e2e.ti.com/support/processors/f/791/t/911746
Tony Tang:
你的edma参数配置用的link,在当前EMDA完成时,在触发中断的同时,自动将Link参数放入了传输队列,并开始执行传输,同时中断响应并进入call back 去pause SPI。这时是没办法精确控制在当前edma完成后产即停止edma的。
这里不用link试一下。
Yellen:
回复 Tony Tang:
不用link是可以的,但是传输完成到edma产生中断之间隔的时间太长了,达不到实时性的要求。
是不是无法在spi传输完成后edma立即产生中断?
Tony Tang:
回复 Yellen:
我觉得你可以用McBSP或者McASP, 利用其FIFO,这样只要用AB-sync触发一次就将数据(比如依照你的需要4×16)从内存搬到接口的FIFO, 这个速度很快,不需要等接口往外送一个数后再A-sync触发EDMA将一个数据送到SPI data register, 一次4次触发才产生emda complete interrupt. 而是一个event后就产生edma complete interrupt.
如果不了解McBSP或者McASP, 你简单理解它是I2S或多通道的I2S就好了。
Yellen:
回复 Tony Tang:
McASP我用过,用burst模式应该可以。
主要用来与spi接口的ADC传输数据,需要发送和接受同步。
主要有一点疑问是,当传完4次数据后如何暂停mcasp触发edma传输,然后下次再人工使能触发传输?(主要是为了控制传输频率)