增强型脉宽调制ePWM实验
增强型脉宽调制ePWM实验
1 PWM简介
2 F28335的ePWM介绍
3 PWM输出配置步骤
4 硬件设计
5 软件设计
#include "epwm.h"
#include "leds.h"void EPWM1_Init(Uint16 tbprd)
{EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Disable TBCLK within the ePWMSysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1EDIS;InitEPwm1Gpio();EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Stop all the TB clocksEDIS;// Setup SyncEPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // Pass through// Allow each timer to be sync'edEPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;EPwm1Regs.TBPHS.half.TBPHS = 0;EPwm1Regs.TBCTR = 0x0000; // Clear counterEPwm1Regs.TBPRD = tbprd;EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count upEPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;EPwm1Regs.TBCTL.bit.CLKDIV=TB_DIV1;// Setup shadow register load on ZEROEPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// Set Compare valuesEPwm1Regs.CMPA.half.CMPA = 0; // Set compare A valueEPwm1Regs.CMPB = 0; // Set Compare B value// Set actionsEPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // Set PWM1A on ZeroEPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Clear PWM1A on event A, up countEPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // Set PWM1B on ZeroEPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // Clear PWM1B on event B, up countEPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero eventEPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INTEPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st eventEALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Start all the timers syncedEDIS;
}void EPwm1A_SetCompare(Uint16 val)
{EPwm1Regs.CMPA.half.CMPA = val; //设置占空比
}
void EPwm1B_SetCompare(Uint16 val)
{EPwm1Regs.CMPB = val; //设置占空比
}void EPWM6_Init(Uint16 tbprd)
{EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Disable TBCLK within the ePWMSysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1; // ePWM6EDIS;InitEPwm6Gpio();// Setup SyncEPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // Pass through// Allow each timer to be sync'edEPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE;EPwm6Regs.TBPHS.half.TBPHS = 0;EPwm6Regs.TBCTR = 0x0000; // Clear counterEPwm6Regs.TBPRD = tbprd;EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count upEPwm6Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;EPwm6Regs.TBCTL.bit.CLKDIV=TB_DIV1;// Setup shadow register load on ZEROEPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// Set Compare valuesEPwm6Regs.CMPA.half.CMPA = 0; // Set compare A valueEPwm6Regs.CMPB = 0; // Set Compare B value// Set actionsEPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // Set PWM1A on ZeroEPwm6Regs.AQCTLA.bit.CAU = AQ_SET; // Clear PWM1A on event A, up countEPwm6Regs.AQCTLB.bit.ZRO = AQ_CLEAR; // Set PWM1B on ZeroEPwm6Regs.AQCTLB.bit.CBU = AQ_SET; // Clear PWM1B on event B, up countEPwm6Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero eventEPwm6Regs.ETSEL.bit.INTEN = 1; // Enable INTEPwm6Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st eventEALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Start all the timers syncedEDIS;
}void EPwm6A_SetCompare(Uint16 val)
{EPwm6Regs.CMPA.half.CMPA = val; //设置占空比
}
void EPwm6B_SetCompare(Uint16 val)
{EPwm6Regs.CMPB = val; //设置占空比
}
#ifndef EPWM_H_
#define EPWM_H_#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件void EPWM1_Init(Uint16 tbprd);
void EPwm1A_SetCompare(Uint16 val);
void EPwm1B_SetCompare(Uint16 val);void EPWM6_Init(Uint16 tbprd);
void EPwm6A_SetCompare(Uint16 val);
void EPwm6B_SetCompare(Uint16 val);#endif /* EPWM_H_ */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File#include "leds.h"
#include "time.h"
#include "epwm.h"/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{int i=0;unsigned char fx=0;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();// LED_Init();EPWM6_Init(500);while(1){if(fx==0){i++;if(i==300){fx=1;}}else{i--;if(i==0){fx=0;}}EPwm6A_SetCompare(i); //i值最大可以取499,因为ARR最大值是499.EPwm6B_SetCompare(300-i); //i值最大可以取499,因为ARR最大值是499.DELAY_US(10*1000);}
}
增强型脉宽调制ePWM实验相关推荐
- 【DSP】EPWM寄存器
一. EPWM寄存器介绍 增强型脉宽调制器(ePWM)外设是控制商业和工业设备中许多电力电子系统的关键元件.这些系统包括数字电机控制.开关模式电源控制.不间断电源(UPS)和其他形式的电源转换.ePW ...
- 北京科技大学计算机控制大作业,北京科技大学计算机控制系统实验报告
北京科技大学计算机控制系统实验报告 (23页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 17.90 积分 计算机控制技术课程计算机控制技术课程 实验报告 ...
- 存储器块清零c语言版,存储器块清零实验报告.doc
存储器块清零实验报告 篇一:实验1 存储器块清零 实验一 存储器块清零 一.实验目的 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二.实验设备 1.伟福Lab6000增强型开放式通用实验/ ...
- 模型机设计计算机组成原理报告,计算机组成原理 实验报告四 基本模型机设计与实现...
计算机组成原理 实验报告四 基本模型机设计与实现 计算机组成原理实验报告学院:计算机科学与信息 专业: 班级:姓名 学号 实验组实验时间 指导教师 成绩实验项目名称 实验四.基本模型机设计与实现实验目 ...
- 三相锁相 c 语言 程序,轻松玩转DSP——基于TMS320F2833x(Word+PDF+ePub+PPT)
作者:马骏杰(作者),尹艳浩(作者),王旭东(作者)&0更多 出版:机械工业出版社; 第1版 (2018年12月5日) 服务:人工校对0错代录+录完后精校排版 此为收费服务:会收取文档代录之人 ...
- TMS320F28034PNT 德州TI 具有 60MHz 频率、128KB 闪存的 C2000™ 32 位 MCU
TMS320F28034 的特性 FAE:13723714318 高效 32 位 CPU (TMS320C28x) 60MHz(16.67ns 周期时间) 16 × 16 和 32 × 32 MAC ...
- F280049C Crossbar X-BAR
文章目录 X-BAR 9.1 输入X-BAR 9.2 ePWM.CLB和GPIO输出X-BAR 9.2.1 ePWM X-BAR 9.2.1.1 ePWM X-BAR架构 9.2.2 CLB X-BA ...
- F280049C Buffered Digital-to-Analog Converter (DAC)
目录 DAC 15.1 Introduction 15.1.1 Features 15.1.2 Block Diagram 15.2 Using the DAC 15.2.1 Initializati ...
- SPWM脉宽调制技术综合实验
目录 实验目的 实验电路及原理 实验步骤 实验数据 实验分析及结论 实验目的 掌握系统方案的比较与分析确定方法: 掌握各环节电路或子程序的设计过程与方法: 掌握PCB版图设计.电子系统制 ...
最新文章
- [LeetCode]题解(python):108-Convert Sorted Array to Binary Search Tree
- 对话吴恩达:AI火得还不够,997都满足不了我
- Android 自动生成表格
- django:bootstrap table加载django返回的数据
- pycharm远程连接服务器(docker)调试+ssh连接多次报错
- python api测试框架_python api 测试框架
- 实验一 分治与递归—全排列 java算法
- Mysql知识总结(二)
- 关于DOS和命令行的故事
- CISCO ASA防火墙ASDM配置
- root 帐户无法登陆解决办法
- 阿斯加德心灵危机java,雷神的姐姐在阿斯加德不灭的情况下能不能刚灭霸
- 群晖Docker部署MySQL服务
- 使用Cesium创建3dtiles管线(视频)
- 计算机网络状态机,计算机网络之七:TCP协议(1)
- uni-app设置页面的背景图片
- 大时代已过,小机会可期
- C语言 队列 的基本功能和详细代码(含详细注释)
- 如何在阿里云服务器构建discuz论坛(快速lamp架构)
- [29期] 一个乞丐的故事,什么叫职业人?