您好!
使用 DMA 控制器的通道链接功能时遇到一些问题。 我们必须具有的功能是能够对 DMA 传输编程一次、并且一旦传输启动、就不需要任何 CPU 干预(包括无中断)。 我想使用 DMA 的通道0将任意数量的16位字数据传输到 Mibspi 缓冲区、以便通过 SPI 进行传输。 mibspi TX RAM 缓冲区的长度为128字节。 我的假设是将数据分为128字节的块、并以链式传输方式发送任何剩余数据。
例如、假设我需要发送500个字节。 我会首先配置 DMA 通道0以发送3 * 128 = 384字节。 通道1配置为发送剩余的116个字节并链接到通道0。 因此、假设通道0传输结束后将触发通道1传输。 然而、最后116个字节的传输在通道0传输到 Mibspi 缓冲区的第一个帧完成后立即启动、因此数据的第一个块会被覆盖。
看起来、链式传输是在传输的第一个帧完成后触发的、而不是在给定通道的所有数据传输完成后触发的。
我的问题是、是否可以配置链通道、以便在传输触发通道中的所有数据后启动其传输?