怎么输出两个交错的pwm波形,最大占空比比和...

怎么输出两个交错的pwm波,比如两个波的占空比和周期都相同,只是高电平出现的位置不同!_百度知道
怎么输出两个交错的pwm波,比如两个波的占空比和周期都相同,只是高电平出现的位置不同!
我有更好的答案
使用片运放两路脉宽信号用加器形式连接输交错波形假合输表现更宽波形具特殊情况
其他类似问题
占空比的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁实验4--PWM波形产生实验-博泰典藏网
典藏文档 篇篇精品
实验4--PWM波形产生实验
导读:实验名称PWM,实验仪器,实验日期,实验地点,指导教师验报告控制技术波形产生实验计算机,ICETEKCF28335-A实验设备一套自动化自控86,实验四PWM波形产生实验,一.实验目的,3.学会用程序控制产生不同占空比的PWM波形,二.实验设备,三.实验原理,每个事件管理器模块可同时产生多达8路的PWM波形输出,由3个带可编程死区控制的比较单元产生独立的3对PWM(即6 北京信息科技大学 自动化学院实课程名称
DSP实验名称
PWM实验仪器专
业班级/学号学生姓名实验日期实验地点成
绩指导教师
波形产生实验
计算机,示波器,
ICETEKCF28335-A实验设备一套 自动化
艾红 实验四
PWM波形产生实验 一.实验目的1. 了解 TMS320F28335A DSP 片内事件管理器模块的脉宽调制电路 PWM 的特性参数;2. 掌握 PWM 电路的控制方法;3. 学会用程序控制产生不同占空比的 PWM波形。 二.实验设备计算机,示波器,ICETEKCF28335-A 实验设备一套。 三.实验原理1.脉宽调制电路 PWM的特性:TMS320F28335A DSP片内有两个事件管理器模块,每个事件管理器模块可同时产生多达 8路的PWM波形输出。由3个带可编程死区控制的比较单元产生独立的3对PWM(即6个输出),以及由通用定时器比较器产生 2 个独立的 PWM 输出。PWM的特性如下:-16位寄存器;-有从 0 到 16m s的可编程死区发生器控制 PWM 输出对;-最小的死区宽度为 1 个 CPU 时钟周期;-对 PWM频率的变动可根据需要改变 PWM的载波频率;-在每个 PWM 周期内和以后可根据需要改变 PWM脉冲的宽度;-外部可屏蔽的功率驱动保护中断;-脉冲形式发生器电路,用于可编程对称、非对称以及空间矢量 PWM 波形产生;
-自动重装载的比较寄存器和周期寄存器。2.连接示波器:连接示波器探头的地线与实验箱左侧的测试点的 GND相连, 红表笔与测试点 PWM1~4相连。 四. 实验内容在 PWM1~PWM4 引脚输出不同频率占空比可变的 PWM脉冲。通过示波器可观察到 占空比变化的 PWM输出波形,其载波频率、占空比与程序中对控制寄存器的设置相关。五. 实验程序如下:#include &DSP2833x_Device.h&
// DSP2833x Headerfile Include File #include &DSP2833x_Examples.h&
// DSP2833x Examples Include Filetypedef struct{
volatile struct EPWM_REGS *EPwmRegHUint16 EPwm_CMPA_DUint16 EPwm_CMPB_DUint16 EPwmTimerIntCUint16 EPwmMaxCMPA;Uint16 EPwmMinCMPA;Uint16 EPwmMaxCMPB;Uint16 EPwmMinCMPB;}EPWM_INFO; // Prototype statements for functions found within this file.void InitEPwm1Example(void);void InitEPwm2Example(void);void InitEPwm3Example(void);interrupt void epwm1_isr(void);interrupt void epwm2_isr(void);interrupt void epwm3_isr(void);void update_compare(EPWM_INFO*); // Global variables used in this exampleEPWM_INFO epwm1_EPWM_INFO epwm2_EPWM_INFO epwm3_ // Configure the period for each timer#define EPWM1_TIMER_TBPRD
// Period register#define EPWM1_MAX_CMPA
1950#define EPWM1_MIN_CMPA
50#define EPWM1_MAX_CMPB
1950#define EPWM1_MIN_CMPB
50 #define EPWM2_TIMER_TBPRD
// Period register#define EPWM2_MAX_CMPA
1950#define EPWM2_MIN_CMPA
50#define EPWM2_MAX_CMPB
1950#define EPWM2_MIN_CMPB
50 #define EPWM3_TIMER_TBPRD
// Period register#define EPWM3_MAX_CMPA
950#define EPWM3_MIN_CMPA
50#define EPWM3_MAX_CMPB
1950#define EPWM3_MIN_CMPB
1050 // To keep track of which way the compare value is moving#define EPWM_CMP_UP
1#define EPWM_CMP_DOWN 0void main(void){// Step 1. Initialize System Control:// PLL, WatchDog, enable Peripheral Clocks// This example function is found in the DSP2833x_SysCtrl.c file.InitSysCtrl(); // Step 2. Initalize GPIO:// This example function is found in the DSP2833x_Gpio.c file and// illustrates how to set the GPIO to it's default state.// InitGpio();
// Skipped for this example // For this case just init GPIO pins for ePWM1, ePWM2, ePWM3// These functions are in the DSP2833x_EPwm.c fileInitEPwm1Gpio();InitEPwm2Gpio();InitEPwm3Gpio(); // Step 3. Clear all interrupts and initialize PIE vector table:// Disable CPU interruptsDINT; // Initialize the PIE control registers to their default state.// The default state is all PIE interrupts disabled and flags// are cleared.// This function is found in the DSP2833x_PieCtrl.c file.InitPieCtrl(); // Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000;IFR = 0x0000; // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR).// This will populate the entire table, even if the interrupt// is not used in this example.
This is useful for debug purposes.// The shell ISR routines are found in DSP2833x_DefaultIsr.c.// This function is found in DSP2833x_PieVect.c.InitPieVectTable(); // Interrupts that are used in this example are re-mapped to// ISR functions found within this file.EALLOW;
// This is needed to write to EALLOW protected registersPieVectTable.EPWM1_INT = &epwm1_PieVectTable.EPWM2_INT = &epwm2_PieVectTable.EPWM3_INT = &epwm3_EDIS;
// This is needed to disable write to EALLOW protected registers// Step 4. Initialize all the Device Peripherals:// This function is found in DSP2833x_InitPeripherals.c// InitPeripherals();
// Not required for this example// For this example, only initialize the ePWMEALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;EDIS;InitEPwm1Example();InitEPwm2Example();InitEPwm3Example();EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;EDIS;// Step 5. User specific code, enable interrupts:// Enable CPU INT3 which is connected to EPWM1-3 INT:IER |= M_INT3; // Enable EPWM INTn in the PIE: Group 3 interrupt 1-3PieCtrlRegs.PIEIER3.bit.INTx1 = 1;PieCtrlRegs.PIEIER3.bit.INTx2 = 1;PieCtrlRegs.PIEIER3.bit.INTx3 = 1; // Enable global Interrupts and higher priority real-time debug events:
// Enable Global interrupt INTMERTM;
// Enable Global realtime interrupt DBGM // Step 6. IDLE loop. Just sit and loop forever (optional):for(;;){
NOP&);}}interrupt void epwm1_isr(void){ // Update the CMPA and CMPB valuesupdate_compare(&epwm1_info); // Clear INT flag for this timerEPwm1Regs.ETCLR.bit.INT = 1; // Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;}interrupt void epwm2_isr(void){ // Update the CMPA and CMPB valuesupdate_compare(&epwm2_info); // Clear INT flag for this timerEPwm2Regs.ETCLR.bit.INT = 1; // Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;}interrupt void epwm3_isr(void){
// Update the CMPA and CMPB valuesupdate_compare(&epwm3_info); // Clear INT flag for this timerEPwm3Regs.ETCLR.bit.INT = 1; // Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;}void InitEPwm1Example(){ // Setup TBCLKEPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count upEPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD;
// Set timer periodEPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Disable phase loading
EPwm1Regs.TBPHS.half.TBPHS = 0x0000;
// Phase is 0EPwm1Regs.TBCTR = 0x0000;
// Clear counterEPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2;
// Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2; // 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 = EPWM1_MIN_CMPA;
// Set compare A value
EPwm1Regs.CMPB = EPWM1_MIN_CMPB;
// Set Compare B value// Set actionsEPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
// Set PWM1A on ZeroEPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
// Clear PWM1A on event A, up count
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
// Set PWM1B on Zero包含总结汇报、自然科学、计划方案、党团工作、经管营销、行业论文、医药卫生、外语学习、出国留学、高中教育、农林牧渔以及实验4--PWM波形产生实验等内容。本文共2页
相关内容搜索F2812各种PWM波形-怎样实现50%的占空比
F2812中的事件管理器(EV)模块给我们提供了众多的功能和特点,尤其在运动控制和电机控制的应用是特别有用的。F2812的EVA和EVB两个EV模块都是特定的外围设备,是为多轴运动控制应用而专门设计的。每个EV都具有控制三个半高桥的能力,当各个桥需要互补PWM控制时,EV可以提供这种能力。同时,每个EV还可以输出两个附加所谓PWM,而不是互补的PWM输出,下图是F2812生成PWM波的资源列表。
通过书本我们知道一些常见的PWM波形以及它们的实现方式,下面进行简单的回顾:
使用通用定时器Timer1/2/3/4产生PWM
选择连续计数模式可以产生如下图所示的非对称PWM波形
选择连续增/减计数模式可以产生中心或对称PWM波形,如下图所示
使用比较单元Compare1/2/3/4/5/6来产生PWM波形
同样,采用连续增计数模式可以产生一对带有死区的互补的非对称PWM波形
采用连续增/减计数模式可以产生一对带有死区的互补的对称PWM波形
上述的都是基本的波形,书本上和手册上都有详细的描述,大家可以参看资料。
大家在实际的使用过程中遇到的情况可能要比上述的波形复杂,那么都使用了什么样的PWM波形呢?你们都采用了哪些方法来实现的呢?欢迎大家积极讨论!
我们在做充电系统的时候需要输出一对下图所示的PWM波形,用于驱动半桥电路的上下桥臂,为了避免半桥电路逆变之后会产生直流分量,从而引起变压器偏磁和直流磁饱和,需要上下驱动波形不仅要互补,还需要占空比相同,请仔细对比一下图5,看看两者之间的区别。
实现的方法如下:
&&&采用通用定时器Timer1和Timer2产生两路PWM波形;
&&&为了产生对称波形,使两个定时器都工作于连续增/减计数模式;
&&&从上图可以看出,S1的上升延和S2的上升延始终相差半个Ts,及半个周期,为了实现相移,可以让T1先开始计时工作,当T1到达第一个周期中断的时候打开T2,让T2也开始工作,同时需要去使能T1中断,或者通过置标志位等方法使得以后T1周期中断的时候不会再去打开T2定时器。这样就可以使的T1和T2输出的波形满足上图的要求,即既是互补,又是导通时间对称的PWM波形,只要占空比不足50%,就相当于留有一段死区时间。可以参看下面的示意图。
当然,需要T1和T2的周期寄存器和比较寄存器的值应该分别相等的,而且在一开始的时候,T2的引脚应该输出的是低电平。
这是我们所想到的产生上述PWM波形的方法,大家有其他的方法的吗?
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。stm32的一个定时器可以输出两个pwm不同占空比可调但频率相同的波形不?求源程序_百度知道
stm32的一个定时器可以输出两个pwm不同占空比可调但频率相同的波形不?求源程序
我有更好的答案
按默认排序
TIM_SetCompare2(TIM4,duty2);TIM_SetCompare1(TIM4,duty2);
其他类似问题
占空比的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁本次实验将学习和了解uPSD3234A上ADC转换器和PWM波形发生器的使用,并且在此..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ADC的使用与PWM波形的生成
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 最大占空比 的文章

 

随机推荐