面对MSP430上使用DMA通过UART进行数据传输的困难

时间:2016-02-13 20:00:08

标签: uart msp430 dma

我通过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个字节。很多时候它的尺寸小于定义的尺寸。

0 个答案:

没有答案