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.

[参考译文] TMS570LC4357:链接 DMA 配置设置不起作用

Guru**** 2455490 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1203859/tms570lc4357-chaining-dma-configuration-settings-doesnt-work

器件型号:TMS570LC4357

您好!

我需要一个 DMA 来交换。 我按如下所示设置两个 DMA 通道。

void dma_setup (void);

Uint32 dummy_1[2]={0xDEADC0DE};
uint32 dummy_2[2]={0xFAFAFAFAFAFA};

int main()

dma_setup();
dmaEnable();

while (1)

INT TIMEOUT = 0x0FFF;

dmaSetChEnable (DMA_CH0、DMA_SW);

while (timout---)


}
}


void dma_setup (void)

g_dmaCTRL g_dmaCTRLPKT ={0};
g_dmaCTRLPKT.Sadd =(uint32)&dummy_1[0];/*源地址*/
G_dmaCTRLPKT.DADD =(UINT32)&dummy_1[1];/*目标地址*/
G_dmaCTRLPKT.CHCTRL = 2;/*链接通道1 */
g_dmaCTRLPKT.FRCNT = 1;/*帧计数*/
G_dmaCTRLPKT.ELCNT = 1;/*元素计数*/
G_dmaCTRLPKT.ELDOFFSET = 4;/*元素目标偏移*/
G_dmaCTRLPKT.ELSOFFSET = 0;/*元素目标偏移*/
G_dmaCTRLPKT.FRDOFFSET = 0;/*帧目标偏移*/
G_dmaCTRLPKT.FRSOFFSET = 0;/*帧目标偏移*/
G_dmaCTRLPKT.PORTASGN = PORTA_READ_PORTA_WRITE;/* mem-to-mem */
G_dmaCTRLPKT.RDSIZE = ACCESS_32_BIT;/*读取大小*/
G_dmaCTRLPKT.WRSIZE = ACCESS_32_BIT;/*写入大小*/
g_dmaCTRLPKT.tType = FRAME_TRANSMIT;/*传输类型*/
G_dmaCTRLPKT.ADDMODERD = ADDR_FIXED;/*地址模式读取*/
G_dmaCTRLPKT.ADDMODEWR = ADDR_FIXED;/*地址模式 WRITE */
G_dmaCTRLPKT.AUTOINIT = AUTOINIT_OFF;/* autoinit */

dmaSetCtrlPacket (dma_CH0、g_dmaCTRLPKT);


g_dmaCTRL g_dmaCTRLPKT2 ={0};
g_dmaCTRLPKT2.Sadd =(uint32)&dummy_2[0];/*源地址*/
G_dmaCTRLPKT2.DADD =(uint32)&dummy_2[1];/*目标地址*/
G_dmaCTRLPKT2.CHCTRL = 0;/*链接通道1 */
g_dmaCTRLPKT2.FRCNT = 1;/*帧计数*/
G_dmaCTRLPKT2.ELCNT = 1;/*元素计数*/
G_dmaCTRLPKT2.ELDOFFSET = 4;/*元素目标偏移*/
G_dmaCTRLPKT2.ELSOFFSET = 0;/*元素目标偏移*/
G_dmaCTRLPKT2.FRDOFFSET = 0;/*帧目标偏移*/
G_dmaCTRLPKT2.FRSOFFSET = 0;/*帧目标偏移*/
G_dmaCTRLPKT2.PORTASGN = PORTA_READ_PORTA_WRITE;/* mem-to-mem */
G_dmaCTRLPKT2.RDSIZE = ACCESS_32_BIT;/*读取大小*/
G_dmaCTRLPKT2.WRSIZE = ACCESS_32_BIT;/*写入大小*/
g_dmaCTRLPKT2.tType = FRAME_TRANSMIT;/*传输类型*/
G_dmaCTRLPKT2.ADDMODERD = ADDR_FIXED;/*地址模式读取*/
G_dmaCTRLPKT2.ADDMODEWR = ADDR_FIXED;/*地址模式 WRITE */
G_dmaCTRLPKT2.AUTOINIT = AUTOINIT_OFF;/* autocinit */

dmaSetCtrlPacket (dma_CH1、g_dmaCTRLPKT2);
}

第一个 DMA 通道(DMA_CH0)正在工作、但 DMA_CH1未被 DMA_CH0触发。

可以帮帮我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    DMA 通道1未启用。 请使用以下命令启用 DMA_CH1:

    dmaSetChEnable (DMA_CH1、DMA_HW);