logo资料库

F28027的PWM模块中文资料.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
PWM 模块原理及使用 F28027 有 8 路 PWM(四个模块),4 路 HRPWM,特别对设计高精度电源提 供了方便,每个 PWM 模块中又包括以下几个子模块:时基(Time-base)模块、 计数比较(Counter-compare)模块、功能限定(Action-qualifier)模块、死区控 制(Dead-band)模块、斩波(PWM-chopper)模块、事件触发(Event-trigger) 模块、制动(Trip-zone)(不知道这样翻译恰当否)模块、数字比较(Digital Compare) 模块。从这些模块的命名上看,用它来做个电源,是再恰当不过的了。 一、时基子模块(TB) 每一个 ePWM 模块,都有自己的 TB,它产生 PWM 的所有定时事件,且有 同步逻辑,可以使多个 PWM 模块有序工作。 TBPRD:PWM 的计数周期寄存器。 TBPHS:相位控制寄存器,在多个 PWM 模块级联时,可以控制每路输出的 相位。当时基模块的同步脉冲到来时,使计数器从 TBPHS 设置的值开始计数(丢 弃当前计数值)。 TBCTL:TB 的控制寄存器,可以对相位方向(只在 up-down 时有用)控制, 决定是上计数时同步(PHSDIR=1)还是下计数时同步(PHSDIR=0);决定 TB 输入时钟的分频系数;向下一级输出的同步脉冲的输出方式;计数值重装方式、 计数方式、同步允许等控制。 TBCTR:计数寄存器。TB 模块的当前计数值。 TBSTS:TB 的状态寄存器。 二、计数比较子模块(CC) 此模块实现与 TB 的比较及控制。产生 CMPA、CMPB 比较事件;控制 PWM 的占空比。 CMPCTL:计数比较控制寄存器。决定是否使用影子寄存器及计数值的重装方法。 CMPA:计数比较值设定寄存器 A CMPAM:CMPA 的影子寄存器。 CMPB:计数比较值设定寄存器 B 三、功能限定子模块(AQ) 这个子模块主要对 TB 及 CC 模块产生的事件,作出相应的响应,如计数器 到达设定同期时、到达 0 时、到达 CMPA 时、到达 CMPB 时,相应的 EPWMxA、 EPWMxB 的输出状态。 EEWorld.com dontium
AQCTLA:设定 EPWMxA 在以上事件时的输出 AQCTLB:设定 EPWMxB 在以上事件时的输出 四、死区控制子模块(DB) 在同步整流及桥式电机驱动时,上下臂的控制开关(晶体管或 MOS 管)的 导通与关闭会出现一定的延时,这有可能导致上下臂开关的同时导能现象。DB 子模块可以有效地防止这种现象的发生。 DBCTL:DB 通用控制寄存器,主要产生死区控制的方法。 DBRED:上升沿延时控制寄存器,产生延迟的周期数。 DBFED:下降沿延时控制寄存器,产生延迟的周期数。 五、PWM 斩波模块(PC) 当 PWM 的周期较长,用高频变压器作驱动器,就会达不到目的,并有可能 烧坏器件。使用 PC 模块可以将 PWM 波经过“再调制”后的高频波作驱动就可 以解决这个问题。 PCCTL:PC 控制寄存器,实现“再调制”波的 duty 控制、“调制”频率控 制等。 六、制动子模块(TZ) TZ 模块是当系统出现问题,或者发出制动信号时,达到所期望的系统响应。 F28027 有 3 个 TZ 外部信号输入,TZ 信号可以连接到任意一个 PWM 模块。当 制动条件产生后,它可以使 EPWMxA 和 EPWMxB 产生:高电平输出、低电平 输出、高阻输出、不动作。可以一次性(one-shot)或逐周期(cycle-by-cycle) 控制。可以受 DC 子模块控制等 TZSEL:TZ 选择寄存器,用来选择 TZ 源 TZCTL:TZ 控制寄存器,用来 EPWMxA、EPWMxB 的输出。 TZEINT:TZ 中断允许寄存器。 TZDCSEL:数字比较事件选择寄存器。 七、事件触发子模块(ET) 它由 TB、CC、DC 子模块触发源输入,产生 CPU 中断及触发 ADC SOC(start of converter), ETSEL : 事 件 触 发 选 择 寄 存 器 , 选 择 触 发 源 ,SOC 、 中 断 允 许 控 制 , EPWMxSOCA、EPWMxSOCB 输出控制, ETPS:触发事件分频寄存器,控制由 n 次事件产生后引发中断或响应。 ETFRC:强制触发寄存器。用于强制产生某一响应。 EEWorld.com dontium
从以上可见,模块相互的作用及产生事件并不用 CPU 干预,这是实时控制 所需要的,因为这样可以尽快地作为响应。如 PWM 输出后的某一时间产生 ADC 转换,都是由模块自己协调的,CPU 只用设置好相应的寄存器就可以了。 八、程序示例 由 EPWM1A 和 EPWM1B 输出互补 PWM 波,并并使用 TZ1 及 TZ2 对它作 制动控制。例程中还用 timer1 控制 PWM 的占空比以作演示。 1、InitEPwm1Gpio(),对 IO 口初始化 …… GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // Configure GPIO0 as EPWM1A GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // Configure GPIO1 as EPWM1B 2、InitTzGpio(),TZ 口初始化 …… GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // Asynch input GPIO12 (TZ1) GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (TZ2) 3、PWM 模块设置 EPwm1Regs.TBPRD = 6000; // Set timer period EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 EPwm1Regs.TBCTR = 0x0000; // Clear counter // Enable TZ interrupt EPwm1Regs.TZEINT.bit.OST = 1; EDIS; // Enable TZ1 and TZ2 as one shot trip sources EALLOW; EPwm1Regs.TZSEL.bit.OSHT1 = 1; EPwm1Regs.TZSEL.bit.OSHT2 = 1; // What do we want the TZ1 and TZ2 to do? EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_HI; EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; // Setup TBCLK EEWorld.com dontium
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase // Count up EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; //loaded from its shadow EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every loading register SYSCLKOUT ZERO 置高 EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // Setup compare EPwm1Regs.CMPA.half.CMPA = 3000; // Set actions EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; //当计数值等于CMPA时,将PWM1A输出 EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero EPwm1Regs.AQCTLB.bit.PRD = AQ_SET; // 触发ADC SOC //EPwm1Regs.ETSEL.bit.SOCAEN = 1; …… 4、 ConfigCpuTimer(&CpuTimer1, 60, 1000);//设置Timer1 5、Timer1中断: interrupt void INT13_ISR(void) // INT13 or CPU-Timer1 { GpioDataRegs.GPATOGGLE.bit.GPIO3 = 1; EEWorld.com dontium
EPwm1Regs.CMPA.half.CMPA++; if ( EPwm1Regs.CMPA.half.CMPA > 5999 ) EPwm1Regs.CMPA.half.CMPA =1; //PieCtrlRegs.PIEACK.all |= ; } 九、编译运行 发现,接在 EPWM1A 和 EPWM1B 的两个 LED 由暗至亮交替。 EEWorld.com dontium
分享到:
收藏