F28035 SPWM程序
时间: 2024-04-30 17:19:04 浏览: 183
F28035是德州仪器(Texas Instruments)推出的一款32位微控制器,支持实时控制以及数字信号处理。SPWM(正弦PWM)是一种常用于交流电机驱动的PWM技术,它可以将直流电转换为交流电,实现电机的转速控制。
下面是一个简单的F28035 SPWM程序示例:
```c
#include "DSP28x_Project.h"
#define PWM_FREQ 20000 // PWM频率为20kHz
#define PWM_DUTY_CYCLE 0.5 // PWM占空比为50%
void InitEPwm(void);
void main(void)
{
InitSysCtrl(); // 初始化系统控制
InitGpio(); // 初始化GPIO
InitEPwm(); // 初始化EPwm
while(1)
{
}
}
void InitEPwm(void)
{
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 设置EPwm1计数器模式为向上/向下计数
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 设置EPwm1时钟分频系数为1
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 设置EPwm1高速时钟分频系数为1
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 使能EPwm1周期寄存器影子寄存器
EPwm1Regs.TBPRD = (Uint16)(SYSCLKOUT / (PWM_FREQ * 2)); // 设置EPwm1周期寄存器值,注意要乘以2
EPwm1Regs.CMPA.half.CMPA = (Uint16)(EPwm1Regs.TBPRD * PWM_DUTY_CYCLE); // 设置EPwm1比较器A的值
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 设置EPwm1上升沿事件动作为设置输出
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 设置EPwm1下降沿事件动作为清除输出
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // 设置EPwm1上升沿事件动作为设置输出
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; // 设置EPwm1下降沿事件动作为清除输出
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // 使能EPwm1死区发生器
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // 设置EPwm1死区发生器输出极性为正极性
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; // 设置EPwm1死区发生器输入模式为DBA模式
EPwm1Regs.DBRED = 10; // 设置EPwm1死区发生器上升沿延时时间
EPwm1Regs.DBFED = 10; // 设置EPwm1死区发生器下降沿延时时间
}
```
上述程序中,我们初始化了EPwm1,并将其配置为SPWM模式。具体来说,我们设置了EPwm1的计数器模式、时钟分频系数、周期寄存器值、比较器A的值,以及上升沿/下降沿事件动作和死区发生器等参数。最后,在主函数中添加一个死循环,让程序一直运行下去,以保持EPwm1输出。
需要注意的是,上述程序只是一个简单的示例,实际应用中可能需要根据具体的需求进行修改。同时,为了使EPwm1输出正弦波形,我们还需要使用一些数学函数来生成正弦波的PWM波形,这里不再赘述。
阅读全文