DSP28335成功实现SPWM程序分享

5星 · 超过95%的资源 需积分: 43 7 下载量 157 浏览量 更新于2024-09-12 收藏 46KB DOC 举报
本文将介绍如何成功实现基于DSP28335微控制器的SPWM(正弦脉宽调制)程序。DSP28335是Texas Instruments公司生产的一款高性能浮点数字信号处理器,适用于各种实时控制应用,包括电机驱动、电力转换等,其内置的PWM模块能够方便地生成高质量的SPWM波形。 在SPWM技术中,通过改变脉冲宽度来模拟正弦波形,从而在开关型电源或逆变器中实现对交流电的调制。这种调制方式可以提高功率转换效率,减少谐波失真,并且可以实现电压或电流的连续可调。 在提供的代码片段中,可以看到以下几个关键部分: 1. 定义了定时器TBPRD的周期值,例如`#define EPWM1_TIMER_TBPRD 3750`,这决定了PWM周期的长度。这里的3750表示定时器的计数值,对应于PWM周期的时钟周期数。 2. 函数`InitEPwm1Example()`和`InitEPwm2Example()`用于初始化两个PWM通道,这些函数通常会配置PWM模块的工作模式、死区时间、极性以及比较值等参数。 3. `interrupt void epwm1_timer_isr(void)`和`interrupt void epwm2_timer_isr(void)`是中断服务例程,当PWM定时器达到预设的计数值时,会触发中断。中断服务例程通常用于更新比较值,以保持SPWM波形的连续性。 4. 变量`Uint32 TonC[400]`是一个存储不同时刻脉冲宽度的数组,包含了多个不同的PWM占空比,这些值是根据正弦波形计算出来的。数组中的每个元素代表了一个周期内正弦波的一个点,对应的PWM脉冲宽度,确保了SPWM波形的形状近似于正弦波。 5. `extern Uint32 k=0;`可能是一个计数器,用于跟踪PWM周期中的当前位置,以便在中断服务例程中更新比较值。 6. `extern Uint32 TonC[400]`数组中的值是按特定规律递减的,这是因为在SPWM中,正弦波的负半周对应着PWM脉冲宽度的减小。 整个程序的核心在于通过定时器中断,动态调整PWM的占空比,使其模拟出正弦波的形状。通过精确控制中断服务例程中的比较值更新,可以生成高质量的SPWM波形。在实际应用中,还需要考虑其他因素,如系统时钟频率、PWM频率、调制指数等,以确保SPWM性能满足具体应用需求。 总结来说,该资源提供了一种在DSP28335上实现SPWM的实例,展示了如何利用定时器中断和适当的数据结构来生成正弦波形的脉宽调制波形。这对于需要精确控制电力转换或电机驱动的工程设计具有重要的参考价值。