1、输出占空比可变地PWM波形DSP原理及应用大作业 输出占空比可变的PWM波形 输出占空比可变的PWM波形任务目的1. 掌握CCS集成开发环境的调试方法;2. 掌握C/C+语言与汇编混合编程;3. 熟悉CCS集成开发环境,掌握工程的生成方法;4. 掌握如何输出占空比可变的PWM波形5. 了解PWM波形产生的原理和应用任务内容1. 通过学习课本和查询课外资料了解空间矢量PWM产生的原理;2. 利用CCS集成开发环境,建立工程,完成DSP汇编源文件的建立和编写,实现对称空间矢量PWM波形生成,在该程序中,利用定时器1ms中断来实现每隔1s改变1次CMPR1;3. 编译并且在片外区通过连接示波器运行得
2、出正确结果,利用示波器观察波形任务原理 1.PWM的原理 脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。例如,把正弦半波波形分成N等份,就可把正弦半波看成由N个彼此相连的脉冲所组成的波形。这些脉冲宽度相等,都等于 /n ,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序
3、列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形脉冲的中点和相应正弦等分的中点重合,且使矩形脉冲和相应正弦部分面积(即冲量)相等,就得到一组脉冲序列,这就是PWM波形。可以看出,各脉冲宽度是按正弦规律变化的。根据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。对于正弦的负半周,也可以用同样的方法得到PWM波形。在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交直交变频器中,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。根据上述原理,在给出了正弦波频率,幅值和半个周期内的脉冲数后,PWM波形各脉冲的宽度和间隔就可以准
4、确计算出来。按照计算结果控制电路中各开关器件的通断,就可以得到所需要的PWM波形。2.DSP的原理 数字信号处理前后需要一些辅助电路,它们和数字信号处理器构成一个系统。初始信号代表某种事物的运动变换,它经信号转换单元可变为电信号。例如声波,它经过麦克风后就变为电信号。 又如压力,它经压力传感器后变为电信号。电信号可视为许多频率的正弦波的组合。低通滤波单元滤除信号的部分高频成分,防止模数转换时失去原信号的基本特征。模数转换单元每隔一段时间测量一次模拟信号,并将测量结果用二进制数表示。数字信号处理单元实际上是一个计算机,它按照指令对二进制的数字信号进行计算。数模转换单元将处理后的数字信号变为连续时
5、间信号,这种信号的特点是一段一段的直线相连,调制后的数字信号,变成模拟信号后才能送往天线,通过天线就可以向外发射了。低通滤波单元有平均的作用,不平滑的信号经低通滤波后,可以变得比较平滑。平滑的信号经信号转换单元后,就变成某种物质的运动变化。例如扬声器,它可将电波变为声波。又如天线,它可将电流变为电磁波。电磁波是一种互相变化的电场和磁场,可以在空间中以波的形式快速移动。任务内容假设EVA的PMW1和PWM2引脚输出频率是1KHz的互补的PWM波形,波形的占空比每隔1s变化5%,变化范围是10%15%,从10%不断增加到90%,然后从90%不断减少到10%,如此循环,而且PMW1和PWM2具有死区
6、,间隔为4.27us。此处如果输出占空比固定的PWM,如是10%或者是90%,那解决的方法历城相同,关键此处要求占空比每隔1s变化。通过面前的学习知道,本例程需要使用定时器T1和比较单元1,所以也就是需要改变CMPR1的值,我们需要利用T1的周期中断来实现。定时器T1的时钟为37.5MHz,此例程使用定时器T1工作于连续增或减计数模式。由于PWM输出频率是1KHz,这样可以得出T1PR=18750,表示成十六进制就是0x493E。但是,由于频率是1KHz,周期是1ms,那如何利用定时器来实现每隔1ms改变1次CMPR1?这就需要在周期中断里面设置一个统计次数的变量intcount,每隔1次中断
7、,intcount就累加1次,当intcount等于1s时,正好过了1s,。这时就可以改变CMPR1的值。任务程序如下:初始化引脚/*文件名:DSP28_Gpio.c*功 能:2812通用输入输出口GPIO的初始化函数*/#include DSP28_Device.h/*名 称:InitGpio()*功 能:初始化Gpio,使得Gpio的引脚处于已知的状态,例如确定其功能是特定功能* 还是通用I/O。如果是通用I/O,是输入还是输出,等等。*入口参数:无*出口参数:无*/void InitGpio(void) EALLOW; / 将GPIO中和PWM相关的引脚设置为PWM功能 GpioMuxR
8、egs.GPAMUX.bit.T1PWM_GPIOA6=1; /设置T1PWM引脚 GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7=1; /设置T2PWM引脚 GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=1; /设置PWM1引脚 GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1=1; /设置PWM2引脚 GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=1; /设置PWM3引脚 GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3=1; /设置PWM4引脚 GpioMuxRegs.GPAM
9、UX.bit.PWM5_GPIOA4=1; /设置PWM5引脚 GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5=1; /设置PWM6引脚 GpioMuxRegs.GPBMUX.bit.T3PWM_GPIOB6=1; /设置T3PWM引脚 GpioMuxRegs.GPBMUX.bit.T4PWM_GPIOB7=1; /设置T4PWM引脚 GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0=1; /设置PWM7引脚 GpioMuxRegs.GPBMUX.bit.PWM8_GPIOB1=1; /设置PWM8引脚 GpioMuxRegs.GPBMUX.bit.P
10、WM9_GPIOB2=1; /设置PWM9引脚 GpioMuxRegs.GPBMUX.bit.PWM10_GPIOB3=1; /设置PWM10引脚 GpioMuxRegs.GPBMUX.bit.PWM11_GPIOB4=1; /设置PWM11引脚 GpioMuxRegs.GPBMUX.bit.PWM12_GPIOB5=1; /设置PWM12引脚 EDIS; /=/ No more./=外围设备初始化/*文件名:DSP28_InitPeripherals.c*功 能:对所使用到的2812的外设进行初始化*/#include DSP28_Device.h/*名 称:InitPeripherals(
11、)*功 能:此函数对各个外设进行初始化,调用了各个外设的初始化函数。此函数在DSP* 上电引导或者复位的时候执行 *入口参数:无*出口参数:无*/void InitPeripherals(void) #if F2812 / 初始化外部接口 / InitXintf(); #endif / 初始化Cpu定时器 / InitCpuTimers(); / 初始化Mcbsp / InitMcbsp(); / 初始化事件管理器EV InitEv(); / 初始化模数转换AD模块 / InitAdc(); / 初始化eCan / InitECan(); / 初始化Spi / InitSpi(); / 初始化
12、Sci / InitSci();/=/ No more./=主程序/*文件名:EvPwm01.c*功 能:EVA下面的T1PPWM、T2PWM、PWM1-6均输出频率为1KHz、占空比为40%的PWM波形。* T1PWM、T2PWM、PWM1-6输出的是不对称的PWM波形。EVB下面的T3PWM、T4PWM、* PWM7-12均输出频率为1KHz,占空比为40%的PWM波形。T3PWM、T4PWM、PWM7-12* 输出的是对称的PWM波形.*说 明:EVA的通用定时器T1和T2运行在连续增计数模式,EVB的通用定时器T3和T4运行* 在连续增/减计数模式,各全比较单元输出的PWM波形具有死区
13、,死区时间为* 4.27us。*/#include DSP28_Device.h#include DSP28_Globalprototypes.h/*名 称:main()*功 能:初始化系统和各个外设*入口参数:无*出口参数:无*/void main(void) InitSysCtrl(); /初始化系统函数 DINT; IER = 0x0000; /禁止CPU中断 IFR = 0x0000; /清除CPU中断标志 InitPieCtrl(); /初始化PIE控制寄存器 InitPieVectTable(); /初始化PIE中断向量表 InitGpio(); /初始化Gpio口 InitEv(
14、); /初始化EV EvaRegs.T1CON.bit.TENABLE=1; /使能定时器T1计数操作 EvaRegs.T2CON.bit.TENABLE=1; /使能定时器T2计数操作 EvbRegs.T3CON.bit.TENABLE=1; /使能定时器T3计数操作 EvbRegs.T4CON.bit.TENABLE=1; /使能定时器T4计数操作 while(1) 任务结果示波器初始情况(图一)以下图片演示示波器变化情况 结论 DSP这门课程需要硬件和软件两方面的能力,在硬件方面,需要对各类芯片管脚以及不同的器件的性质十分的熟悉,懂得器件之间如何搭配,使得电路效率最大化,价格最优化。在软
15、件方面,需要较强的思维逻辑性,对于一个设计要求,在程序设计时要有连贯性,能够巧妙的用较简洁的程序来解决问题,这个需要平时多加的训练以提高编程能力。不管怎样硬件与软件都是十分重要的,只有两方面都重视,才能在DSP的学习上有所前进,为以后自己的工作学习带来便捷。 虽然课设时间说长不长说短不短,但是却是让人收获颇多的。凭借着一股谦虚好学的劲头,问同学问老师,自己再回去钻研看书本,终于在编程上有多突破,自己也品尝到了些许成功的喜悦。但是不能放松心态,因为真正的实验调试结果还没有出来,需要我们理论到实验的过程了。但是自己定下心来,在多次失败之后逐渐掌握了编程的技巧,于是接下来很顺利的完成了实验。 总之不管怎么样,这次课程设计是对我们专业课程学习的一种检验,更是一种激励,它在一定程度上表明了光学书本上的知识是远远达不到真正掌握DSP的程度的,只有不断的自我学习,请教他人,吸取别人的优秀经验,自己敢于创新,才能在学习中立于不败之地。 参考文献1 手把手教你学DSP 顾立刚编著 北京航空航天大学出版社2 DSP原理及其运用 邹彦主编 电子工业出版社3 C语言程序设计 谭浩强主编 清华大学出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1