This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8148的串口DMA模式怎么配置才能正常工作?

Other Parts Discussed in Thread: AM4377

DM8148的串口DMA模式:

现在唯一可以触发DMA工作的配置是:UART2配成不要FIFO,loopback mode, no-auto RTS/CTS, DMA mode 1,并且每次发数都需要写SYSC寄存器reset UART,才能每次都成功触发DMA工作,如果不reset,只能触发一次DMA工作,以后DMA都不工作了。

但是只要使能了FIFO,无论怎么配置,DMA都不工作,DMA收不到UART的dma request。

请问正确的应该怎么配置? 8148的串口部分文档写得太不清楚了。

有没有8148的UART DMA的DEMO可以分享一下呢?

  • 你好,

    设置的FIFO深度和EDMA配置的搬移数据的个数是否匹配?

    你现在是在Linux下驱动么?

  • FCR[0]=0,FIFO是禁止了的。

    DMA aCnt=1,cCnt=1,bCnt=我要发的数据字节数,相当于我设置成了DMA一次拷一个字节。

    不是linux驱动,是自己写的驱动,驱动是实现在8148的DSP端。

    可能是哪儿的问题呢? 有成功的UART DMA示例代码可以参考吗?

  • 在吗?为什么只能发一次数,后面就再也不能发了呢?我在论坛搜,看到别人也遇到过同样的问题,但是不知道怎么解决的

  • 问一下你的问题解决了吗?我用AM4377 uart dma现象跟你类似,但fifo是否使能现象都是一样的没有影响(trigger设置=1)。rx现在是正常的,tx时是只第一次dma成功后面bcnt就不递减了,此时手工写THR寄存器发1个字节,则后续又能使用1次dma;或者直接使用人工触发dma ESR也可以(仅测试用),说明tx fifo空并没有触发event(读txLevel是空的)