DSP 28系列ePWM概要

基本概述

ePWM模块是一个能够输出两路PWM信号的ePWM通道:EPWMxA和EPWMxB。在一个芯片中包含了多个ePWM模块。如下图所示。每一个模块都独立的拥有一个外部扩展模块。
DSP 28系列ePWM概要_第1张图片
一些模块包括了一些外部扩展模块,这些外部扩展模块能够帮助PWM输出实现更高的精度。这个外部扩展模块被成为the high-resolution pulse width modulator(HRPWM)。DSP中的各个PWM模块均被编号。比如ePWM1表示第一个PWM模块,ePWM3表示第三个模块。

这些ePWM模块可以单独工作也可以协同工作。当需要协同工作的时候,这些模块通过一个时钟同步方案协同工作。另外,这个同步方案可以被扩展到eCAP模块。
每一个ePWM模块拥有一下特点:

  • 有一个专用的16位计数器,可以控制周期和频率
  • 有两路PWM信号输出(EPWMxA和EPWMxB),这两路信号可以这样被配置:
    两路信号独立输出,具有单边控制;
    两路信号独立输出,双边对称控制;
    协同输出,双边对称控制;
  • 通过软件实现异步控制
  • 可编程实现相位超前或者滞后(与其他模块相比较)
  • 周期内通过硬件实现同步锁相(同步)
  • 上升沿或者下降沿死区的独立控制
  • 可编程的单次或者周期同步联防设置
  • 同步联防触发后可以设置不同的pwm输出状态,包括高、低或者高阻态
  • 所有事件都可以触发CPU的中断或者ADC的采样
  • 可编程的事件预处理,可以减小CPU中断资源开销
  • 高频载波信号进行斩波,用于脉冲变压器的门级驱动
    DSP 28系列ePWM概要_第2张图片

每个ePWM模块主要包括以下部分:

  • 时基模块 TB
  • 比较计数模块 CC
  • 动作模块 AQ
  • 死区模块 DB
  • PWM斩波模块 PC
  • 事件触发模块 ET
  • 联防模块 TZ
  • 数字比较模块DC

每个模块各自作用如下:
TB :为输出PWM产生始终基准TBCLK,配置PWM的时钟基准计数器TBCTR,设置计数器的计数模式,配置硬件或软件同步时钟基准计数器,确定ePWM同步信号输出源;
CC:确定PWM占空比,以及ePWM输出高低电平切换时间;
AQ:确定计数器和比较寄存器匹配时产生动作,即ePWM 高低电平的切换;
DB:配置输出PWM上升沿或下降沿延时时间,也可以将A、B两通道配置成互补模式。死区时间可以编程确定;
PC:产生高频PWM载波信号;
TZ:当外部有错误信号产生时,对PWM输出进行相应处理,比如全置高,或拉低,或置为高阻态,从而起到保护作用。当然该功能也可以通过软件强制产生;
EZ:使能ePWM中断,使能ePWM触发ADC采样,确定事件产生触发的速度和清除相关事件标志位。
DC:使能比较模块的输出和TZ信号的产生,通过Input x-bar来产生事件和过滤事件。指定事件过滤选项来捕获TBCTR计数器,生成空白窗口,或在PWM输出或基于捕获值的时基计数器中插入延迟
DSP 28系列ePWM概要_第3张图片
DSP 28系列ePWM概要_第4张图片
DSP 28系列ePWM概要_第5张图片

引脚配置

ePWM的引脚配置。
在GPIO相关寄存器中设置

EALLOW;
 GpioCtrlRegs.GPAPUD.bit.GPIO12 = 1;    // Disable pull-up on GPIO12 (EPWM7A)
 GpioCtrlRegs.GPAPUD.bit.GPIO13 = 1;    // Disable pull-up on GPIO13 (EPWM7B)
 GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1;   // Configure GPIO12 as EPWM7A
 GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 1;   // Configure GPIO13 as EPWM7B
EDIS;

在MUX寄存器中,将相关引脚配置为EPWM模式。

TB模块的相关设置

TB模块中包括这几个需要配置的寄存器:

寄存器名 解释
TBCTL 时基控制寄存器
TBSTS 时基状态寄存器
TBSTS 时基状态寄存器
TBPHSHR HRPWM扩展相位寄存器
TBPHS 时基相位寄存器
TBCTR 时基计数器寄存器
TBPRD 时基周期寄存器

影子寄存器:
时基模块中有个周期影子寄存器,它可以实现其主寄存器随硬件进行同步更新。官方文件中称为 active register (活动寄存器)和 shadow register (影子寄存器)。在DSP中寄存器是直接控制硬件电路的,这是活动寄存器的功能,而影子寄存器不能直接控制硬件电路,他的作用是提供给活动寄存器一个存放状态和值的地址,在系统运行的时候,在软件配置寄存器和硬件不同步的时候,他可以把存放的状态传到活动寄存器,这样就可以防止因为软硬件不同步导致的系统崩溃。

EPwm7Regs.TBCTL.bit.HSPCLKDIV =0;       			// High-speed clock prescalar HSPCLKDIV: 0x0=1,0x1=2,0x2=4,0x3=6...0x7=14
EPwm7Regs.TBCTL.bit.CLKDIV = 0;         			// Timebase clock prescalar CLKDIV=2^N;													// TBCLK= SYSCLKOUT/(HSPCLKDIV*CLKDIV) =97656Hz
EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; 		// TB_COUNT_UPDOWN/TB_COUNT_UP/TB_COUNT_DOWN/TB_COUNT_FREEZE
EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP;                 //  TB_DOWN TB_UP. Phase Direction Bit.This bit is only used when the time-base counter is configured in the up-down-count mode.
EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE; 			// TB_DISABLE=Master module TB_ENABLE=Slave module
EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW;  			// TB_SHADOW/TB_IMMEDIATE
EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; 		// TB_CTR_ZERO/TB_CTR_CMPB/TB_SYNC_IN=Sync down-stream module; TB_SYNC_DISABLE=Sync disable

EPwm7Regs.TBPHS.bit.TBPHS = 0; 					    // Set Phase register
EPwm7Regs.TBPRD = PeriodLLCInit; 					// Period = TBPRD*TBCLK counts (for updown,additionaly*2); Switching frequency= PWMCLK/TBPRD

EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; 		// CC_SHADOW/CC_IMMEDIATE
EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;			// CC_SHADOW/CC_IMMEDIATE
EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; 		// CC_CTR_ZERO/CC_CTR_PRD/CC_CTR_ZERO_PRD/CC_LD_DISABLE
EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; 		// CC_CTR_ZERO/CC_CTR_PRD/CC_CTR_ZERO_PRD/CC_LD_DISABLE

你可能感兴趣的:(DSP 28系列ePWM概要)