//###########################################################################
//
// FILE : Example_281xEvPwm.c
//
// TITLE: EV-A --- PWM波形程序
//
//ASSUMPTIONS:
//
//As supplied, this project is configured for "boot to H0" operation.
//Other then boot mode pin configuration, no other hardware configuration is required.
//
//###########################################################################
# include "DSP281x_Device.h" // DSP281x Headerfile Include File
# include "DSP281x_Examples.h"// DSP281x Examples Include File
void init_eva(void);
void main(void)
{
InitSysCtrl();
// InitGpio();配置IO口功能为PWM模式
EALLOW;
GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins
EDIS;
DINT; //关CPU总中断
InitPieCtrl(); //初始化PIE控制寄存器
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE中断向量表
init_eva(); //初始化EV-A
EvaRegs.T1CON.bit.TENABLE=1;//手工启动定时器
EINT; // 使能INTM(全局中断)
ERTM;// Enable Global realtime interrupt DBGM
for(;;);
}
//EV-A初始化
void init_eva(void)
{
EvaRegs.T1PR = 37500;//周期值--连续增减时,PWM频率=TCLK/(2*T1PR)---频率设为1K, PWM=75M/(2*37500)
EvaRegs.T1CMPR = 0x3C00; // Compare Reg--比较值
EvaRegs.T1CNT = 0x0000; //计数器初值
//连续增/减模式,x/1分频,内部时钟,使能比较,使用自己的周期,禁止定时器启动(等初始化全部完成后手工启动)
EvaRegs.T1CON.all = 0x0802;
EvaRegs.GPTCONA.bit.TCMPOE = 1; //通过逻辑产生T1 PWM
EvaRegs.GPTCONA.bit.T1PIN = 1; //GP定时器1比较时低有效
//使能比较产生1--6 PWM波 1个比较单元控制2路互补的PWM输出,控制PWM占空比
//连续增减--低有效时:PWM占空比=CMPR1/T1PR,高有效时:PWM占空比=(T1PR-CMPR1)/T1PR
EvaRegs.CMPR1 = 15000;//第一路PWM占空比设为0.4,0.4=15000/37500
EvaRegs.CMPR2 = 0x3C00;
EvaRegs.CMPR3 = 0xFC00;
// output pin 1 CMPR1 - 高有效,output pin 2 CMPR1 - 低有效
//output pin 3 CMPR2 - 高有效,output pin 4 CMPR2 - 低有效
// output pin 5 CMPR3 - 高有效,output pin 6 CMPR3 - 低有效
EvaRegs.ACTRA.all = 0x0666; //比较方式控制寄存器,控制PWM引脚的 高/低 有效
EvaRegs.DBTCONA.all = 0x0000; //静止死区
EvaRegs.COMCONA.all = 0xA600; //比较控制寄存器--禁止空间矢量PWM模式
}
总结:PWM波形产生流程
1):将I/O口设置为PWM引脚模式
2):设置装载TxCON,决定计数方式,启动比较操作
3):设置装载TxPR,决定PWM波形周期
4):初始化EvaRegs.CMPR1--3的值,每个比较单元控制2路互补的PWM输出,控制PWM占空比
5):EvaRegs.ACTRA比较方式控制寄存器,控制PWM引脚的 高/低 有效
6):EvaRegs.DBTCONA死区时间的设置
7):EvaRegs.COMCONA设置比较控制寄存器
附:
EvaRegs.DBTCONA.bit.DBT=5; //死区定时器周期为5
EvaRegs.DBTCONA.bit.EDBT1=1; //死区定时器1使能
EvaRegs.DBTCONA.bit.DBTPS=3; //死区定时器预定标因子,死区时钟为HSPCLK/8
分享到:
相关推荐
DSP技术 TMS320F2812产生PWM波程序 用以控制电机
TMS320F2812的PWM程序中文解释 TMS320F2812的PWM程序中文解释
TMS320F2812完整的工程文件,包括TI库文件,仿真器XDS100V1配置,可以下载直接使用 TMS320F2812 complete engineering documents, including TI library files, emulator XDS100V1 configuration, you can download ...
用于TI公司DSP TMS320F2812生成PWM波形的源程序。
TMS320F28335的PWM波形输出程序(内有丰富的中文注释)
TMS320F2812 DSP的PWM输出程序代码
TI公司DSP处理器TMS320F2812的各个资源的源程序,A/D,CAN,CPUTIMER,DAC,FLASH,GPIO,MCBSP,PWM,RTC,RTC_2812,SCI,SPI,TIMER,USB等源程序。
研旭TMS320F28335开发板的外设开发示例程序-高精度PWM波部分,F28335的初学者做参考很不错!可以参考代码中的寄存器配置和工程构建方式。
基于TMS320F2812的PWM波形输出的c语言源程序。
DSP2812例程包含流水灯,AD-DC,PWM波,SPI通信,串口通信,flash,内存读写等基础;例程
TMS320F28335 pwm 发生程序,附带产生4路PWM,互补、死区可调。产生ePWM1和ePWM2中断,中断频率与PWM开关频率相同,为50Khz。
基于TMS320F28335的三相PWM整流器设计与实现
基于TMS320F28335的PWM波产生程序
这是本人基于dsp编写的利用各种方法产生PWM,看了这些程序,将对DSP中PWM所有思路完全掌握。这可是本人辛苦的结晶
[lab20-pwm.rar] - tms320f2812pwm示例程序 [ucos2812.rar] - ucos操作系统在dsp2812上的移植 [event_pwm.rar] - TMSP320F2812 关于事件管理器和PWM输出的源程序 [sci.rar] - 基于dsp2812用vc开发的sci的测试...
基于CCS6.0开发环境,并且基于TMS320F28335平台,一个简单的BUCK闭环程序。 实现了程序的搬移。
开发环境为CCS,适用的DSP型号为TI公司的TMS320F28335,针对其他型号的DSP程序也可以借鉴。程序实现同步bbuck电路的电压电流双闭环控制,电压外环和电流内环均采用PI调节器。为了提升控制系统的动态性能,采用双更新...
TMS320F28335的PWM模块设置程序,最基本的PWM设置模板
基于TMS320F2812无刷直流电机控制系统软件设计,采用中断方式编程,包含一个主程序和一个中断服务程序,包括显示程序,SPI D/A程序,位置采样程序,速度计算程序,控制算法程序,电流采样及PWM输出程序
本程序是在TI DSP TMS320F280049基础上,配置PWM相关寄存器,可以用于PWM及移相测试。欢迎下载