中微电钻/扳手开发板(CMS32M6534E+CMS130S040P56B)测评报告2:中微EPWM发波
[复制链接]
本帖最后由 仙景 于 2023-11-3 21:46 编辑
学习新的MCU,不得不深入学习一下芯片的PWM控制,中微的PWM做的特别好,该有的都有,功能真的很强大。
1、增强型PWM(EPWM)特性:
➢ 支持单次、连续 2 种波形输出。
➢ 支持独立、互补、同步、组控 4 种控制模式。
➢ 计数时钟可选择 1、 2、 4、 8、 16 分频。
➢ 支持边沿对齐、中心对齐 2 种计数模式。
➢ 支持 4 种加载更新方式。
➢ 可设置输出极性。
➢ 支持周期、向上比较、向下比较、零点中断。
➢ 故障刹车保护以及恢复功能。
➢互补的 PWM 中,支持可编程死区发生器。
➢PWM 边沿或周期可触发启动 AD 转换。
对于做电机控制来说,用得最多的是PWM控制,中央对齐模式,互补模式,PWM可编程死区,最重要的是PWM 边沿或周期可触发启动 AD 转换,还是双触发,爱了爱了。
我已经把它整理了一整张图,只需要看懂图片,就可以配置了。
2、实验环节:EPWM寄存器配置
独立,互补,带死区PWM输出
SYS_EnablePeripheralClk(SYS_CLK_EPWM_MSK); //64M
EPWM_ConfigRunMode( EPWM_COUNT_UP_DOWN | /*上下计数模式(中心对齐)*/
EPWM_OCU_SYMMETRIC | /*对称模式*/
EPWM_WFG_COMPLEMENTARYK | /*互补模式*/
EPWM_OC_INDEPENDENT); /*独立输出模式*/
EPWM_ConfigChannelClk( EPWM0, EPWM_CLK_DIV_1);//32M
EPWM_ConfigChannelClk( EPWM2, EPWM_CLK_DIV_1);
EPWM_ConfigChannelClk( EPWM4, EPWM_CLK_DIV_1);
//64M/16000/2 = 2000 周期
EPWM_ConfigChannelPeriod(EPWM0, 2000);
EPWM_ConfigChannelPeriod(EPWM2, 2000);
EPWM_ConfigChannelPeriod(EPWM4, 2000);
EPWM_ConfigChannelSymDuty(EPWM0, 500);
EPWM_ConfigChannelSymDuty(EPWM2, 1000);
EPWM_ConfigChannelSymDuty(EPWM4, 1500);
EPWM_EnableAutoLoadMode(EPWM_CH_0_MSK |EPWM_CH_2_MSK|EPWM_CH_4_MSK); /*自动加载*/
EPWM_EnableDeadZone(EPWM_CH_0_MSK|EPWM_CH_1_MSK|EPWM_CH_2_MSK|EPWM_CH_3_MSK|EPWM_CH_4_MSK|EPWM_CH_5_MSK,64); //死区 64*0.0156=1us
/*重映射端口与驱动对应关系*/
EPWM_EnableChannelRemap(EPWM0, IPG0);
EPWM_EnableChannelRemap(EPWM1, IPG2);
EPWM_EnableChannelRemap(EPWM2, IPG4);
EPWM_EnableChannelRemap(EPWM3, IPG1);
EPWM_EnableChannelRemap(EPWM4, IPG3);
EPWM_EnableChannelRemap(EPWM5, IPG5);
EPWM_EnableZeroInt(EPWM_CH_0_MSK); /*开启零点中断*/
EPWM_EnablePeriodInt(EPWM_CH_0_MSK); /*开启周期中断*/
NVIC_EnableIRQ(EPWM_IRQn);
NVIC_SetPriority(EPWM_IRQn,3); /*优先级0~3, 0最高、3最低*/
/*配置PWM输出口*/
SYS_SET_IOCFG(IOP01CFG, SYS_IOCFG_P01_EPWM0);
SYS_SET_IOCFG(IOP04CFG, SYS_IOCFG_P04_EPWM1);
SYS_SET_IOCFG(IOP05CFG, SYS_IOCFG_P05_EPWM2);
SYS_SET_IOCFG(IOP06CFG, SYS_IOCFG_P06_EPWM3);
SYS_SET_IOCFG(IOP07CFG, SYS_IOCFG_P07_EPWM4);
SYS_SET_IOCFG(IOP47CFG, SYS_IOCFG_P47_EPWM5);
EPWM_EnableOutput(EPWM_CH_0_MSK | EPWM_CH_1_MSK|
EPWM_CH_2_MSK | EPWM_CH_3_MSK|
EPWM_CH_4_MSK | EPWM_CH_5_MSK);
EPWM_Start(EPWM_CH_0_MSK | EPWM_CH_1_MSK|
EPWM_CH_2_MSK | EPWM_CH_3_MSK|
EPWM_CH_4_MSK | EPWM_CH_5_MSK);
通过示波器,可以看到25%,50%,75%的占空比PWM发波,请看图。
epwm-4
中微CMS32M6534E增强型EPWM分享完毕。
|