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.

[参考译文] TMS320F28379D:使用 ePWM、DMA 和 DAC 生成正弦波

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1500778/tms320f28379d-sinewave-generation-using-epwm-dma-and-dac

部件号:TMS320F28379D

工具/软件:

您好:

我有一个包含正弦波的 uint16_t 值的20元素查找表。

我将 EPWM6配置为200kHz、将 EPWM6 SOCB 配置为触发 DMA。

对于 DMA、我将触发源设置为 DMA_TRIGGER_EPWM6SOCB。

如果我将 DMA 突发大小设置为1U 并将传输大小设置为20U、则 可以看到传输结束中断以10kHz 的频率生成、这正是我预期的那样。

但是、DAC 输出不正确。  它看起来不像在整个表中迭代。  我怀疑问题出在突发/传输/绕回设置中的某个位置。

这是我的设置:

uint16_t lookup_table[20];

const void * src =(void *) lookup_table;
const void * dst=(void *)(DACA_BASE + DAC_O_VALS);

DMA_configAddresses (DMA_CH1_BASE、dst、src);
DMA_configBurst (DMA_CH1_BASE、1U、1、0);
DMA_configTransfer (DMA_CH1_BASE、20U、0、0);
DMA_configWrap (DMA_CH1_BASE、20U、065535U、0);
DMA_configMode (DMA_CH1_BASE、DMA_TRIGGER_EPWM6SOCB、DMA_CFG_OneShot_disable | DMA_CFG_CONTINUAL_ENABLE | DMA_CFG_SIZE_16BIT);

有什么建议我可能做错了?  

谢谢!

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

    我现在已经按照 TRM 图5-5中的流程图对此进行了说明、以更好地指导如何配置 DMA 设置。