主题中讨论的其他器件: MSP430WARE
工具/软件:Code Composer Studio
我将更改一些代码以在 UART Tx 上使用 DMA。 我在第一次传输时已经能够将数据传输到缓冲区、但没有数据输出、并且处理过程似乎不超过第一个字节。 我已按如下方式设置 UART:
P3SEL |= BIT4 + BIT5;为 UART0操作设置端口3引脚。
U0CTL = SWRST + CHAR; //将 UART 保持在复位状态、UART、8N1
U0TCTL |=(SSEL0 + SSEL1); //SMCLK 时钟源
U0RCTL = 0; //清除标志
U0MCTL = 0x00; //设置波特率
U0BR0 = 0x20; //
对于 230400、U0BR1 = 0x00;// br0 = 20h
ME1 = UTXE0; //rcv 在发送期间未启用(半双工)
U0CTL &=~SWRST; //释放 UART 状态机
当 DMA 运行完成时、如下所示:
DMA2SZ =大小;
DMACTL0 |= DMA2TSEL_4; // DMA2的 Txbuffer 标志触发器
DMA2SA =(无符号 int)数据;
DMA2DA =(无符号整型) U0TXBUF;
// DMA 源增量、字节到字节传输、单字节传输(重复)、电平敏感、启用 int
DMA2CTL = DMASRCINCR_3 + DMASBDB + DMADD_4 + DMALEVEL+ DMAIE + DMAEN;//运行 DMA
在调试中、一切看起来都是按预期设置的、单步执行最后一行显示 UTXIFG0标志变为零、这意味着一个字节已经被放入缓冲区中。
允许代码继续、Tx 端口上没有显示任何内容。 我还可以看到、控制485驱动器方向的引脚也被设置为传输(代码片段中未显示)。
我还在 DMA 的中断例程中设置了一个制动点、并且中断点从未命中。 我还尝试使用单独的步骤来启用 DMA、但没有看到任何更改。
我想我缺少一些非常简单的东西、但我无法弄清楚什么。