dsp28335epwm时基模块
时间: 2023-09-03 07:16:16 浏览: 65
DSP28335EPWM时基模块是德州仪器(Texas Instruments)推出的一种用于数字信号处理器(DSP)控制电机的模块。EPWM代表扩展型脉冲宽度调制(Enhanced Pulse Width Modulation),是一种用于产生高精度PWM信号的技术。
该模块具有多个功能,包括:
1. 高分辨率PWM生成:通过调整PWM的占空比和频率,可以精确控制电机的速度和转矩。
2. 正交编码器接口:可以读取电机的位置反馈信号,实现闭环控制。
3. 事件捕获:可以捕获外部事件,如输入捕获器的上升沿或下降沿,以触发特定操作。
4. 死区发生器:用于防止H桥驱动器中的上下桥臂同时导通,防止电流冲突。
5. 相位补偿:通过控制PWM信号的相位,可以实现电机的高效运行。
使用DSP28335EPWM时基模块,您可以实现对电机的精确控制和监测,适用于各种工业应用中的电机驱动和控制系统。
相关问题
dsp28335 epwm
DSP28335的EPWM模块是其重要的外设接口之一,它提供了多通道、高分辨率、高精度的PWM输出,常被用于驱动电机、控制电源变换器等应用中。DSP28335的EPWM模块提供了6个独立的PWM通道,每个通道都可以配置为不同的工作模式,并且可以通过多种方式触发,例如软件触发、硬件触发、外部同步触发等。此外,EPWM模块还提供了多种保护机制,例如死区保护、过流保护等,以保证系统的稳定性和安全性。
dsp 28335 epwm 中心对齐模式demo
以下是DSP 28335 EPWM中心对齐模式的Demo代码,可以用来生成中心对齐PWM波形:
```c
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
void epwm_init(void);
void main()
{
InitSysCtrl(); // 初始化系统控制寄存器
InitPieCtrl(); // 初始化中断控制器
IER = 0x0000; // 禁用中断
IFR = 0x0000;
InitPieVectTable(); // 初始化 PIE 向量表
epwm_init(); // 初始化 EPWM 模块
EINT; // 使能全局中断
ERTM; // 使能全局中断响应
while(1);
}
void epwm_init(void)
{
EPwm1Regs.TBPRD = 15000; // 设置 PWM 周期为 15000
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 设置计数器为上升下降模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁用相位补偿
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 开启周期寄存器的阴影寄存器功能
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 禁用同步
EPwm1Regs.CMPA.half.CMPA = 7500; // 设置占空比的一半为 50%
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 开启比较器寄存器 A 的阴影寄存器功能
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // 在计数器为 0 时加载比较器寄存器 A
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 当计数器向上计数到 CMPA 时,设置 EPWM1A 为高电平
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 当计数器向下计数到 CMPA 时,设置 EPWM1A 为低电平
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // 当计数器向上计数到 CMPB 时,设置 EPWM1B 为高电平
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; // 当计数器向下计数到 CMPB 时,设置 EPWM1B 为低电平
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; // 在 A 端口上启用死区
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // 死区时间为高电平
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // 在 A 和 B 端口上启用死区
EPwm1Regs.DBRED = 50; // 设置死区时间为 50 个时钟周期
EPwm1Regs.DBFED = 50;
EPwm1Regs.TZSEL.bit.OSHT1 = 1; // 在允许的情况下禁用输出保护
EPwm1Regs.TZCTL.bit.TZA = TZ_NO_CHANGE;
EPwm1Regs.TZCTL.bit.TZB = TZ_NO_CHANGE;
EPwm1Regs.TBCTR = 0; // 将计数器清零
}
```
在这个Demo代码中,我们使用EPwm1模块来生成中心对齐PWM波形。我们将PWM周期设置为15000个时钟周期,并将计数器设置为上升下降模式。然后,我们将占空比的一半设置为7500,并在计数器为0时加载比较器寄存器A。最后,我们在AQCTLA和AQCTLB寄存器中设置了相应的动作,以使EPWM1A和EPWM1B输出中心对齐PWM波形。