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.

[参考译文] TM4C1294NCPDT:UDMA 和定时器之间的数据传输

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1064777/tm4c1294ncpdt-data-transfer-between-udma-and-timer

器件型号:TM4C1294NCPDT

大家好、

客户想知道如何配置 UDMA 以在循环中传输内存 ToPerihal、将存储器中一个阵列的值一次传递到 TIMER2A 的匹配寄存器、在每个计数结束时传输以生成具有不同占空比的 PWM 波形。 该代码当前配置如下:

//定时器配置:

SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2);
TimerConfigure (TIMER2_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PWM);
TimerLoadSet (TIMER2_base、timer_A、61);
TimerControlLevel (TIMER2_base、timer_A、true);
TimerDMAEventSet (TIMER2_base、TIMER_DMA_TIMEOUT_A);
TimerEnable (TIMER2_base、TIMER_A);

//uDMA 配置:

uint8_t pui8ControlTable[1024];
SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
uDMAEnable();
uDMAControlBaseSet (pui8ControlTable);
uDMAChannelAttributeDisable (uDMA_SEC_CHANNEL TMR2A_4、UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIOR| UDMA_ATTR_REQMASK);
uDMAChannelSelectSecondary (UDMA_DEF_USBEP3RX_SEC_TMR2A);
uDMAChannelAssign (UDMA_CH4_TIMER2A);
uDMAChannelAttributeEnable (UDMA_SEC_CHANGE_TMR2A_4、UDMA_ATTR_USEBURST);
uDMAChannelControlSet (UDMA_SEC_CHANNEL_TMR2A_4 | UDMA_PRI_SELECT、UDMA_SIZE 32 | UDMA_SRC_INC_32 | UDMA_DST_INC_NONE | UDMA_ARC_4);
uDMAChannelTransferSet (UDMA_SEC_CHANGE_TMR2A_4 | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、缓冲器、
(void *)(TIMER2_base + TIMER_O_TAMATCHR)、num);
uDMAChannelEnable (UDMA_SEC_CHANGE_TMR2A_4);

在调试期间、发现寄存器的值仍然是缓冲区数组的最后一个值。 是否有办法解决这个问题?

您可以帮助检查此案例吗? 谢谢。

此致、

樱桃