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可以分享一下呢?
Chris Meng:
你好,
设置的FIFO深度和EDMA配置的搬移数据的个数是否匹配?
你现在是在Linux下驱动么?
chen wei:
回复 Chris Meng:
FCR[0]=0,FIFO是禁止了的。
DMA aCnt=1,cCnt=1,bCnt=我要发的数据字节数,相当于我设置成了DMA一次拷一个字节。
不是linux驱动,是自己写的驱动,驱动是实现在8148的DSP端。
可能是哪儿的问题呢? 有成功的UART DMA示例代码可以参考吗?
chen wei:
回复 Chris Meng:
在吗?为什么只能发一次数,后面就再也不能发了呢?我在论坛搜,看到别人也遇到过同样的问题,但是不知道怎么解决的
yiping xiao:
回复 chen wei:
问一下你的问题解决了吗?我用AM4377 uart dma现象跟你类似,但fifo是否使能现象都是一样的没有影响(trigger设置=1)。rx现在是正常的,tx时是只第一次dma成功后面bcnt就不递减了,此时手工写THR寄存器发1个字节,则后续又能使用1次dma;或者直接使用人工触发dma ESR也可以(仅测试用),说明tx fifo空并没有触发event(读txLevel是空的)