我在用F28M35H52C1的uDMA channel 20 和channel 21与EPI之间传输数据时,无法同时使能channel 20 和channel 21。我使用的是controlSUITE的API函数来使能的,我的部分代码如下:
#define UDMA_CHANNEL_EPIRX 20
#define UDMA_CHANNEL_EPITX 21
.........(uDMA通道传输配置代码,在该代码部分也将channel 20、channel 21 配置为EPI通道了)
uDMAChannelAttributeEnable(UDMA_CHANNEL_EPIRX, UDMA_ATTR_USEBURST); // step1
uDMAChannelAttributeEnable(UDMA_CHANNEL_EPITX, UDMA_ATTR_USEBURST); //step2
uDMAChannelEnable(UDMA_CHANNEL_EPIRX); //step3:使能channel 20
uDMAChannelEnable(UDMA_CHANNEL_EPITX); //step4:使能channel 21
我碰到的情况如下:
当执行step1、step2后DMAUSERBUSTSET 寄存器(offset 0x18)的值为0x00300000,与程序功能符合;当执行完step3后,DAMENASET(offset 0x28)寄存器为0x00100000,也与程序功能符合;可是当执行完step4之后,DAMENASET寄存器的值仍为0x00100000,同时DMAUSERBUSTSET也由0x00300000变为0x00100000。我也尝试通过直接操作寄存器来同时使能这两个通道,仍然会是相同结果。
如果按照step1、2、4、3的顺序执行,我发现执行step4后DAMENASET寄存器无变化,同时DMAUSERBUSTSET由0x00300000变为0x00100000;执行完step3的代码后,DAMENASET变为0x00100000。这是怎么回事呢?
请问你的uDMA的channel21连着EPI的TX端,uDMA通道的目的地址是怎样设定的?是否连着EPI的WFIFO?谢谢!