牛卧堂MCU技术交流

标题: EPWM_AccumulatorINT_TriggerPDMA例程的疑问 [打印本页]

作者: 匿名    时间: 2023-11-1 18:59
标题: EPWM_AccumulatorINT_TriggerPDMA例程的疑问
EPWM_AccumulatorINT_TriggerPDMA例程的疑问
请问M480.M467例程,如果在PDMA例程中,要启动 发送 50000个脉冲的话,请问如何操作啊?

作者: chrishu    时间: 2023-11-2 10:19
本帖最后由 chrishu 于 2023-11-2 16:28 编辑

累加器计数到设定值,可以产生中断、停止输出、触发PDMA。
EPWM_EnableAcc(EPWM1, 0, 50, EPWM_IFA_ZERO_POINT);  //第三个参数设置累加器的计数个数
EPWM_EnableAccInt(EPWM1, 0);//使能CH0的累计器中断
EPWM_EnableAccStopMode(EPWM1, 0);//CH0 累加中断产生后停止
EPWM_EnableAccPDMA(EPWM1, 0);//使能CH0累加器触发PDMA(内存==>寄存器)
下面这段代码实现循环延时一段时间发送10个脉冲,可以参考一下。




作者: 匿名    时间: 2023-11-2 11:09
    EPWM_ConfigOutputChannel(EPWM0, EPWM_Axis, speed_cmd, 50);
    EPWM_EnableOutput(EPWM0, EPWM_CH_1_MASK);
    EPWM_EnableAcc(EPWM0, EPWM_Axis, pls, EPWM_IFA_ZERO_POINT);
    EPWM_EnableAccStopMode(EPWM0, EPWM_Axis);
//    EPWM_EnableAccPDMA(EPWM0, EPWM_Axis);       
    EPWM_Start(EPWM0, EPWM_CH_1_MASK);
这样的话,提前配置好PDMA,不使能ACCPDMA也可以?这是为什么?
作者: 匿名    时间: 2023-11-2 11:30
我的需求是,仅仅需要控制发送预设频率以及预设脉冲个数(小于2^16);是不是不用开启PDMA,也可以?甚至不用开启ACC中断也行?


作者: chrishu    时间: 2023-11-2 16:39
本帖最后由 chrishu 于 2023-11-2 16:40 编辑
游客 121.29.111.x 发表于 2023-11-2 11:30
我的需求是,仅仅需要控制发送预设频率以及预设脉冲个数(小于2^16);是不是不用开启PDMA,也可以?甚至不 ...

之前有说过累加器设定的计数时间到了后,可以产生中断、停止PWM、还可以触发PDMA搬运数据。
至于你希望用到哪些功能就使能哪些就好了。之前的回复里有给出使能每一种功能调用什么函数。

如果只需要累加停止功能可以参考例程EPWM_AccumulatorStopMode。前面回复的截图图片里也有给出循环延时一段时间发送10个脉冲的参考。


作者: 匿名    时间: 2023-11-2 18:56
chrishu 发表于 2023-11-2 16:39
之前有说过累加器设定的计数时间到了后,可以产生中断、停止PWM、还可以触发PDMA搬运数据。
至于你希望用 ...

谢谢!明白了!
很感谢您的耐心解答!




欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2