DMA方式发送中,每次发送的字节都不大于16-byte,如何采用dma方式发送大于16-byte的数据,求解?
Shine:
可以看一下OMAP-L138 starterware中的uart-edma例程:OMAPL138_StarterWare_1_10_03_03\examples\evmOMAPL138\uart_edmahttp://www.ti.com/tool/starterware-dsparm
ka ka:
回复 Shine:
非常感谢,DMA的OPT选项我没有设置好,现在可以发送了,只是发送的时候第一个字节总是发送两遍,而且更新完程序的时候需要复位一下,才可以发送,还没有找到那里设置有问题
ka ka:
回复 Shine:
多谢shine的回复,现在可以发送大于16字节的数据了,还有一个问题是,我把uart配置成dma的事件发送,第一次的时候可以发送,没有问题,但是后面就无法发送了,程序如下:
dma和uart配置完成
EDMA3_Uart0TX(addr,256); EDMA3_SECR = (1<<9);
EDMA3_Uart0TX(addr,256);
第一个可以发送出去,第二个发送不了
Shine:
回复 ka ka:
你之前不是可以发送的吗? 改了什么地方?
看一下EDMA EER, ER寄存器有没有置1? UART FCR寄存器DMAMODE1有没有使能?
ka ka:
回复 Shine:
没有改别的地方,DMA也使能了。是这样的,复位以后的第一次发送可以完成,然后SER寄存器会置位,后面的发送就不成功。你帮我看看怎么回事,我现在在每次发送之前先把SER和EMR对应位清除,再通过PWREMU_MGMT的14位复位用来产生一次UTXEVT,这样的话倒是可以。可是例程里面并没有这个复位,不知道是哪里的问题,困惑!
Shine:
回复 ka ka:
看一下EDMA EER, ER寄存器有没有置1, TX event有没有产生? UART FCR寄存器DMAMODE1有没有使能?
qi smith:
您好,我最近在调试6747的串口DMA传输,但是却出现了发出来的数据是00 00的问题。我已经研究了一段时间,但是百思不得其解。想向您请教一下。 在调试时发现SER和EMR寄存器在传输完成之后均被置位,就我看芯片手册的理解看来,这种情况不应该出现的,想向您请教一下原因。期待您的答复。 还有就是问一下,您的程序方便发我一下参考一下吗?
tangdaowan:
回复 Shine:
您好,我想通过6747的UART定时的接收约50字节的数据进行处理,6747UART的FIFO只有16字节,这是说我只能在16字节以内设置门限触发中断,有没有方法可以一次接收完所有字节后触发cpu中断,谢谢!