怎样使28335的epwm1和epwm2同步
时间: 2023-05-09 19:03:19 浏览: 186
要使Ti C2000系列芯片28335上的EPWM1和EPWM2同步,需要进行以下步骤:
1. 配置EPWM1和EPWM2的计数模式、计数周期、占空比等基本参数。
2. 设置EPWM1和EPWM2的时钟源和分频器,保证两个模块的时钟源和频率一致。
3. 选择EPWM1和EPWM2的同步模式,可以选择Master-Slave模式或者Complementary模式。
4. 如果选择Master-Slave模式,则需要将EPWM1配置为Master,EPWM2配置为Slave,然后将两个模块的时钟输入和同步信号输出连接,通过硬件触发同步。
5. 如果选择Complementary模式,则需要将EPWM1和EPWM2的计数周期相同,并将它们的输出互补,然后通过硬件电路保证两个PWM信号的触发时机一致。
值得注意的是,配置EPWM同步需要对DSP的硬件接口比较熟悉,对硬件电路也需要有一定的了解。另外,为了确保同步效果,可能需要通过示波器等工具进行实时检测和调试。
相关问题
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波形。