DSP28335 EPWM

时钟信号经时基模块 TB 产生时基信号,可以设定 PWM 波形的周期,通过计 数比较模块 CC,可以对 PWM 波形的脉宽进行配置,再由动作模块 AQ 限定 PWM 输 出状态即脉冲波形的起落,经过死区模块 DB,可以将同组内的互补输出 PWM波形进行边沿延迟,进入死区模块及进行边沿延迟的原因后面在死区模块内会详细 介绍,接着可选择是否进入 PWM 斩波模块,进行第一个脉冲宽度设置和后级脉冲 占空比调整以适应基于脉冲变压器的门级驱动控制,若 PWM 波形输出后,功率器 件有错误响应,可以将错误信号引入错误联防模块,从而强制复位 PWM 的输出。 也可以通过事件触发模块配置触发一些事件,如 ADC 转换开始;;下面我们逐一介绍这几个模块。

每一组 ePWM 模块都包 含以下 7 个模块:时基模块 TB、计数比较模块 CC、动作模块 AQ、死区产生模块 DB、PWM 斩波模块 PC、错误联防模块 TZ、时间触发模块;

时基模块 TB

从时基模块内部结构图来了解里面的关键信号,时基模块内部结构 图如下所示

时基模块相关寄存器如下 所示:

计数比较模块 CC

计数器比较模块是以时基计数器的值作为输入,与比较寄存器 CMPA 和比较 寄存器 CMPB 不断进行比较,当时基计数器的值等于其中之一时,就会产生相应 的事件。计数比较模块 CC 的原理框图如下所示:

①CTR=CMPA:时基计数器的值与 CMPA 的值相同时,PWM 可以根据 AQ 动作。 ②CTR=CMPB:时基计数器的值与 CMPB 的值相同时,PWM 可以根据 AQ 动作。 ③CTR=PRD:时基计数器的值与周期寄存器的值相同,PWM 可以根据 AQ 动作。 CMPA 与 CMPB 可以根据相关影子寄存器的值进行更新。

动作模块 AQ

(1)动作限定模块功能

①动作模块根据下列事件产生动作(置高、拉低、翻转)。

--CTR=PRD:时基模块来的信号,时基计数器的值等于周期寄存器的值。

--CTR=ZERO:时基模块来的信号,时基计数器的值等于 0。

--CTR=CMPA:计数比较模块来的信号,时基计数器的值等于比较寄存器 A 的 值。 --CTR=CMPB:计数比较模块来的信号,时基计数器的值等于比较寄存器 B

②管理以上事件发生后 PWM 的输出极性。

③针对时基计数器递增或者递减时提供独立的动作控制

动作限定模块在 PWM 波形形成过程中起到了关键作用,它决定了相应事件发 生时应该输出什么样的电平,从而使 ePWMxA 和 ePWMxB 输出所需要的开关波形。 其原理框图如下:

初始化步骤

(1)使能 ePWM 外设时钟及失能时基模块时

    EALLOW;
	SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;   // Disable TBCLK within the ePWM要保证时基同步的话,首先在配置TB/CC寄存器时先把时钟关闭,即所有TBCLK停止,不产生。等全部配置后之后再打开,保证时钟同步
	SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;  // 开启ePWM1外设时钟
	EDIS;

(2)开启 ePWM 对应 GPIO 时钟及初始化配置

    InitEPwm6Gpio();//开启时钟,对应ePWM复用功能的开启

(3)初始化时基模块,即配置 TB 相关寄存器值

// Setup Sync
	EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;  // 禁止(即不使用(输出))ePWMxSYNCO信号
	// Allow each timer to be sync'ed
	EPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁止TBCTR加载相位寄存器TBPHS中的值
	EPwm6Regs.TBPHS.half.TBPHS = 0;//将相位寄存器中的值清零
	EPwm6Regs.TBCTR = 0x0000; // Clear counter时间基准计数寄存器设置为0
	EPwm6Regs.TBPRD = tbprd;//设定周期值
	EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;    // Count up向上计数模式
	EPwm6Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;//采用系统时钟作为TBCLK
	EPwm6Regs.TBCTL.bit.CLKDIV=TB_DIV1;//同样是配置TBCLK的时钟

(4)初始化比较模块,即配置 CC 相关寄存器

// Setup shadow register load on ZERO
	EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;// 使用影子寄存器
	EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;// 使用影子寄存器
	EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//CTR等于0时加载
	EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

	// Set Compare values
	EPwm6Regs.CMPA.half.CMPA = 0;    // Set compare A value
	EPwm6Regs.CMPB = 0;              // Set Compare B value

(5)初始化动作限定模块,即配置 AQ 相关寄存器值

// Set actions
	EPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR;            // Set PWM1A on Zero
	EPwm6Regs.AQCTLA.bit.CAU = AQ_SET;          // Clear PWM1A on event A, up count
	EPwm6Regs.AQCTLB.bit.ZRO = AQ_CLEAR;            // Set PWM1B on Zero
	EPwm6Regs.AQCTLB.bit.CBU = AQ_SET;          // Clear PWM1B on event B, up count

(6)初始化事件触发模块,即配置 ET 相关寄存器

当需要事件触发输出控制,就需要对 ET 相关寄存器配置。比如计数器计数 到 0 时,同时使能事件触发中断,每发生一次触发事件就输出 PWM。相关配置代 码如下:、

    EPwm6Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // Select INT on Zero event
	EPwm6Regs.ETSEL.bit.INTEN = 1;  // Enable INT
	EPwm6Regs.ETPS.bit.INTPRD = ET_1ST;           // Generate INT on 1st event每发生一次事件产生中断信号EPWM6_INT

(7)初始化死区模块、斩波模块,即配置 DB、PC 相关寄存器值

(8)使能时基计数器时钟

EALLOW;
	SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;         // Start all the timers synced
	EDIS;

软件设计:

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值