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.

F28M35H52C1 M3核的uDMA channel使能不正常

Other Parts Discussed in Thread: CONTROLSUITE

我在用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。这是怎么回事呢?