我通过MSP430控制器从传感器收集2.4KB(600字节* 4)的数据。我正在使用dma通过UART将数据传输到我的Linux Processor.Transfer每100ms定时器发生一次。
我的DMA设置如下。
DMACTL0 = DMA0TSEL__UCA0TXIFG;
DMA0SA = &buff;
DMA0DA = &UCA0TXBUF;
DMA0SZ = 600; // Block size in bytes
DMA0CTL = DMADT_4 | DMASBDB| DMASRCINCR_3 | DMAIE| DMALEVEL_L; // Rpt, inc
DMA0CTL|= DMAEN;
我的DMA的ISR如下,
__interrupt void DMA_VECTOR_ISR(void)
{
DMA0CTL &= ~DMAIFG;
DMA_Doneflag = 1;
}
当我启动传输时,首先我会收到600个字节(我在IDE中使用断点来检查每个DMA触发器的大小)。如果我多次使用断点,它会有600个字节。当我从长远来看删除断点和Keep转移时,我注意到(从Linux机器上的日志文件中)数据每次都不会有600个字节。很多时候它的尺寸小于定义的尺寸。