F28335 ePWM计数模块(CC)与 动作模块(AC)及其寄存器配置

您所在的位置:网站首页 em221cn是什么模块 F28335 ePWM计数模块(CC)与 动作模块(AC)及其寄存器配置

F28335 ePWM计数模块(CC)与 动作模块(AC)及其寄存器配置

2024-06-12 20:06| 来源: 网络整理| 查看: 265

1 计数比较模块 1.1 计数比较模块作用 计数比较模块是以时基计数器的值作为输入,与比较寄存器CMPA和CMPB不断进行比较的,当时基计数器的值等于其中之一时,就会产生相应的事件。 F28335就是通过对比这些值,来产生事件,与动作模块AC相配合来调节PWM的占空比以及频率。

补充:采用影子寄存器来更新比较值CMPA和CMPB 能够有效的防止在PWM周期内出现故障以及毛刺。

1.2 计数比较模块的关键信号

CTR=CMPA 时基计数器的值等于CMPA的值CTR=CMPB 时基计数器的值等于CMPB的值CTR=0 时基计数器的值等于0CTR=TBPRD 时基计数器的值等于周期寄存器的值

1.3 计数比较模块的特点

计数比较模块需要产生两个独立的比较事件,才能产生PWM波

对于向上递增或者向下递减计数模式来说,在一个PWM周期内,CTR和CMPA和CMPB比较事件只发生一次,所以就需要和0或PRD相对比。而增减模式,CTR和CMPA和CMPB比较事件发生两次,更加灵活。

计数比较模块需要与动作模块AC相互配合

以上每个关键信号的到来,都可以产生一个动作信号,这个动作信号可以是置高和置低,我们在设置的时候,灵活运用就可以产生不同的PWM。

1.4 计数比较器寄存器配置

计数比较寄存器 A与计数比较器B 在这里插入图片描述 在这里插入图片描述 配置方式:直接赋值

EPwm1Regs.CMPA.half.CMPA = 500; EPwm1Regs.CMPB = 0;

计数比较控制寄存器

在这里插入图片描述

在这里插入图片描述

采用影子寄存器来更新比较值CMPA和CMPB 能够有效的防止在PWM周期内出现故障以及毛刺。 一般对计数控制寄存器的配置主要是配置好影子寄存器。 配置方式:

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; //CMPA影子装载模式 EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; //CMPB影子装载模式 EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; //CTR=0 影子寄存器A装载 EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //CTR=0 影子寄存器B装载

2 动作模块 AC 2.1 动作模块的作用 动作模块在PWM波形形成过程中起到关键作用,它决定了相应事件发生时间时应该输出什么电平。

根据计数比较器模块的关键信号(CTR=0,CMPA,CMPB和PRD)产生动作(置高,拉低,翻转)管理以上事件发生后PWM的输出极性针对时基计数器递增或者递减时提供独立的动作控制。

2.2 动作模块的关键信号 动作模块的关键信号就是计数比较寄存器和时基寄存器的比较结果,还有软件的强制信号software forced event

CTR=CMPA 时基计数器的值等于CMPA的值CTR=CMPB 时基计数器的值等于CMPB的值CTR=0 时基计数器的值等于0CTR=TBPRD 时基计数器的值等于周期寄存器的值软件强制信号 由AQSFRC和 AQCSF两个寄存器处理。

2.3 动作模块事件的优先级 动作模块区别于其他模块的一个很大特性就是它具有优先级。 这是因为动作模块在同一时刻有可能会收到2个到2个以上的事件,这个就需要优先级控制他的动作顺序。 增减模式下优先级表 在这里插入图片描述 增计数模式下优先级表 在这里插入图片描述 减计数模式下优先级表 在这里插入图片描述

2.4 动作模块寄存器的配置

动作控制寄存器 在这里插入图片描述 在这里插入图片描述 **配置方式:**根据不同的计数比较器的信号来输出动作

如下是一个增计数模式下,AQCTL的配置

EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // CTR上升至CMPA值 置1 ePWMA输出高 EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // CTR下降至CMPA值 置0 ePWMA输出低 EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // CTR上升至CMPB值 置1 ePWMB输出高 EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // CTR下降至CMPB值 置0 ePWMB输出低

3 典型的波形配置例子 以下的程序内只包括计数模式寄存器,计数比较器寄存器和动作控制寄存器这三个关键点的代码 3.1 单边不对称波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP; //计数模式 EPwm1Regs.TBPRD = 1000; EPwm1Regs.CMPA.half.CMPA = 500; EPwm1Regs.CMPB = 200; EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // CTR=0 置0 ePWMA输出低 EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // CTR上升至CMPA值 置1 ePWMA输出高 EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR; // CTR=0 置0 ePWMB输出低 EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // CTR上升至CMPB值 置1 ePWMB输出高

在这里插入图片描述

3.2 双边对称波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP_DOWN; //计数模式 EPwm1Regs.TBPRD = 1000; EPwm1Regs.CMPA.half.CMPA = 200; EPwm1Regs.CMPB = 500; EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // CTR上升至CMPA值 置1 ePWMA输出高 EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // CTR减少至CMPA值 置0 ePWMA输出低 EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // CTR上升至CMPB值 置1 ePWMB输出高 EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; // CTR减少至CMPB值 置1 ePWMB输出低

在这里插入图片描述

3.3 双边沿不对成波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP_DOWN; //计数模式 EPwm1Regs.TBPRD = 1000; EPwm1Regs.CMPA.half.CMPA = 400; EPwm1Regs.CMPB = 800; EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // CTR上升至CMPA值 置1 ePWMA输出高 EPwm1Regs.AQCTLA.bit.CBD = AQ_CLEAR; // CTR减少至CMPB值 置0 ePWMA输出低 EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR; // CTR=0 置0 ePWMB输出低 EPwm1Regs.AQCTLB.bit.PRD = AQ_SET; // CTR=PRD值 置1 ePWMB输出高

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3