增强型脉宽调制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);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

民间借贷利息多少才合法?

一、民间借贷利息多少才合法?民间借贷利率是否合法是要根据法律的相关规定来判断,事实上,就借贷利息本身而言,其实不存在合法不合法之说,只能说利率受不受法律保护。而且我国不同时期对民间借贷利率的保护界限也不一样…

ADC模数转换实验

ADC模数转换实验 1 AD 转换原理介绍 2 F28335的ADC介绍 3 ADC配置步骤 4 硬件设计 5 软件设计 #include "adc.h"void ADC_Init(void) {// Specific clock setting for this example:EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK 1; // ADCEDIS…

战狼5天票房10亿,吴京抵押房产贷款赚大了

近几天要数最火的是什么,肯定是2017阅兵和《战狼2 》的火爆观影潮,一声“开火”引爆了这个夏天的热情。由吴京导演和主演的《战狼2》上映5天,累计票房已经超过10个亿!单日票房超过3.5个亿。一举打破了国产电影的单日最高票房&…

微型嵌入式操作系统对比

GPL(General Public License),即GNU通用公共许可证 1、 uCos-II(ucos ii):商业和GPL双许可。μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。…

多相滤波器

前言 多相滤波器解决的是:多速率问题。 通过降采样、插值来改变信号的输出速率(主要利用Nyquist采样定理,保证不混叠),从而降低数据率,多相滤波器为这类操作提供了实现框架。在满足采样定理的前提下&#x…

RS232通信实验

RS232通信实验 1 通信的基本感念 2 F28335的SCI介绍 3 SCI配置步骤 4 硬件设计 5 软件设计 #include "uart.h"void UARTa_Init(Uint32 baud) {unsigned char scihbaud0;unsigned char scilbaud0;Uint16 scibaud0;scibaud37500000/(8*baud)…

贷款为什么要查看征信?

大家都是知道,绝大多数贷款机构在申请贷款的时候都是需要提供个人征信报告,那为什么申请贷款,需要查询个人征信报告呢?大家不要小看一张征信报告那么简单,其实它包含了借款人很多的信息,通过查看个人征信报告&#xf…

GPS NMEA 0183 4.10协议/GPS Linux串口驱动

NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。现在已经成为GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。 下图为GYM-1010-B…

欠条和借条傻傻分不清?小心借出的钱要不回!

在民间接贷中,经常会涉及到两个名词,一个是借条,另一个是欠条,两者到底有什么关系,又有什么区别呢?其实欠条和借条有相同的地方,但是也有很大的区别,如果把两者混了,可能…

TCL基础知识

TCL基础知识 置换 TCL解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换 TCL置换分为以下三类 变量置换 $ 命令置换 [] 反斜杠置换 \ 用 $ 表示变量置换 TCL解释器会将认为 $后面为变量名,将变量置换成它的值 用[]表示命令置换 []内是一…

ARM AMBA 外围设备 的datasheet

可以去网页地址在线浏览对应的datasheet: http://infocentre.arm.com/help/index.jsp?topic/com.arm.doc.set.primecell/index.html 也可以去其中的网址中,下载对应的pdf版本的datasheet: ------------------------------------------------…

芝麻信用很高,为什么贷款还是被拒了?

之前见过这样一个朋友,他的芝麻信用680以上,借呗额度是2万,但是去申请贷款的时候还是被拒了。看到这很多人可能觉得为什么芝麻信用这么高,贷款还是会被拒了呢?其实芝麻信用不能等同于个人信用,就目前情况来…

Synopsys TCL

Synopsys TCL TCL在EDA工具中的扩展与应用 通过对设计的案例的分析,了解和学习DC获取电路并进行解析的方法 综合软件当中TCL的常见指令 语法格式:get_ports portsName 指令功能:返回design中对应的ports object 语法格式:ge…

只有房子没有工作能贷款吗?

通常来说抵押贷款需要满足几个基本的条件,有可供抵押的房产,有稳定的工作和收入来源,信用良好,如果借人只有房产,没有工作一般是比较难贷到款的。原因是没有工作就没有收入来源,对还款就没有保障。可能有的…

总线及数据传输技术【待完善】

作者:桂。 时间:2017-08-05 14:41:36 链接:http://www.cnblogs.com/xingshansi/p/7290224.html 前言 最近的工作内容涉及硬件,三个高频词汇:总线、接口、协议,例如I2C、PCIe、RS-232C、RapidIO&#xff0…

初识TCL

初识TCL 安装TCL编辑器 如果你的电脑上装有编写TCL脚本的软件(Vivado等),执行在命令串口输入tcl,点击就行 输入expr 2 2 每一条命令都由一个或多个“单词”组成,单词之间用空格或制表符(即空白字符&…

如何看透借款人的隐形负债?

借款人的负债有两种情况,一种是显性负债,另一种是隐性负债。显性负债比较好判断,而隐性负债则比较难以判断。因此如何全面的掌握借款人真实负债是每个信贷员和风控人员都必须掌握的功课。一、显性负债显性负债就是通过材料可以直接看出的负债…

【C++设计技巧】C++中的RAII机制

随笔- 427 文章- 0 评论- 4作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概念 Resource Acquisition Is Initialization 机制是Bjarne Stroustrup首先提出的。要解决的是这样一个问题: 在C中,如果在这个程序段结束时需要…

PHP的表单获取与HHTP请求方式

PHP获取表单数据的方法PHP获取表单数据的方法主要有GET、POST和REQUEST三种方式。 注意,提交表单的方法只有POST和GET两种。POST和GET都可以向Web服务器传输数据。 GET与POST对比 对比GETPOST附加形式URL之后HTML HEADER参数处理方式URL编码无URL编码传输数据的大小…

产生脉冲之间的延迟

产生脉冲之间的延迟 题目要求 FPGA产生两个输出脉冲,要求这两个脉冲之间的延迟为0.5ns,请描述你的实现方案 题目分析 1 使用计数器延迟不太可能,FPGA内部逻辑没有一个专用的delaybuffer。 2 IOB (input output block) iodelay。去实现小分辨…