找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7416|回复: 13
收起左侧

F28335 SPWM源码分享

  [复制链接]
ID:232960 发表于 2017-9-13 20:54 | 显示全部楼层 |阅读模式
分享一个F28335 SPWM源码

源程序如下:
  1. #include "DSP2833x_Device.h"
  2. #include "DSP2833x_Examples.h"

  3. interrupt void EPwm1_isr();
  4. void InitEPwm1Example();
  5. void InitSpwm();

  6. #define N 400 //N:载波比
  7. Uint16 spwmcnt=0;    //对SPWM相位的计数
  8. unsigned int f_s=50; //f_s:调制信号频率,
  9. unsigned Period=0;              //计数器周期值计算方法
  10. long int ftime=150000000;       //CPU频率为150M=100 *100000
  11. const   float  M_ratio=0.8;    //SPWM调制比,可修改
  12. Uint16 CMPA_data[N];

  13. void main(void)
  14. {

  15.     Period=ftime/(f_s*N*2);  //对应EPwm1 频率为20Khz
  16.     InitSpwm();
  17.     InitSysCtrl();

  18.     DINT;

  19.     InitEPwm1Gpio();    //初始化EPwm的输出口
  20.     IER=0X0000;
  21.     IFR=0X0000;
  22.    
  23.     InitPieVectTable();

  24.     EALLOW;
  25.     PieVectTable.EPWM1_INT=&EPwm1_isr;
  26.     EDIS;

  27.     EALLOW;
  28.     SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
  29.     EDIS;
  30.     InitEPwm1Example();           //初始化EPwm的配置
  31.     EALLOW;
  32.     SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
  33.     EDIS;

  34.     PieCtrlRegs.PIEIER3.bit.INTx1=1;    //使能EPwm1中断

  35.     IER|=M_INT3;


  36.     EINT;
  37.     ERTM;

  38.     for(;;)
  39.     {
  40.     }
  41. }
  42. interrupt void EPwm1_isr()
  43. {
  44.     if(spwmcnt==N)
  45.     {
  46.         spwmcnt=0;
  47.     }
  48.     EPwm1Regs.CMPA.half.CMPA=CMPA_data[spwmcnt++];

  49.     EPwm1Regs.ETCLR.bit.INT=1;
  50.     PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;
  51. }


  52. void InitEPwm1Example()
  53. {
  54.     EPwm1Regs.TBCTL.bit.CTRMODE=2;    //设置为向上向下计数模式
  55.     EPwm1Regs.TBPRD=Period;     //周期
  56.     EPwm1Regs.TBCTL.bit.HSPCLKDIV=0;   //高速分频
  57.     EPwm1Regs.TBCTL.bit.CLKDIV=0;      //时基分频
  58.     EPwm1Regs.AQCTLA.bit.ZRO=AQ_SET;   //
  59.     EPwm1Regs.AQCTLA.bit.CAU=AQ_CLEAR;
  60.     EPwm1Regs.AQCTLA.bit.CAD=AQ_SET;

  61.     EPwm1Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;
  62.     EPwm1Regs.ETSEL.bit.INTEN=1;
  63.     EPwm1Regs.ETPS.bit.INTPRD=1;
  64. }

  65. void InitSpwm()
  66. {
  67.     int i=0;
  68.     float sin_table[N]={
  69.             0.000000,0.015747,0.031489,0.047224,0.062948,0.078655,0.094343,0.110008,0.125646,0.141252,
  70.             0.156823,0.172356,0.187845,0.203288,0.218681,0.234020,0.249300,0.264519,0.279672,
  71.             0.294755,0.309766,0.324699,0.339553,0.354322,0.369003,0.383593,0.398087,0.412483,
  72.             0.426776,0.440964,0.455042,0.469008,0.482857,0.496587,0.510193,0.523673,0.537023,
  73.             0.550240,0.563320,0.576261,0.589059,0.601710,0.614213,0.626563,0.638758,0.650794,
  74.             0.662669,0.674380,0.685923,0.697297,0.708497,0.719522,0.730368,0.741034,0.751515,
  75.             0.761810,0.771917,0.781831,0.791552,0.801077,0.810403,0.819528,0.828450,0.837166,
  76.             0.845675,0.853974,0.862062,0.869935,0.877593,0.885033,0.892254,0.899254,0.906030,
  77.             0.912582,0.918908,0.925005,0.930874,0.936511,0.941917,0.947088,0.952025,0.956726,
  78.             0.961189,0.965414,0.969400,0.973146,0.976650,0.979912,0.982930,0.985706,0.988236,
  79.             0.990522,0.992562,0.994356,0.995903,0.997204,0.998257,0.999062,0.999620,0.999930,
  80.             0.999992,0.999806,0.999372,0.998691,0.997761,0.996584,0.995161,0.993490,0.991573,
  81.             0.989410,0.987002,0.984349,0.981452,0.978311,0.974928,0.971303,0.967437,0.963332,
  82.             0.958987,0.954405,0.949586,0.944532,0.939243,0.933721,0.927968,0.921985,0.915773,
  83.             0.909334,0.902670,0.895782,0.888671,0.881341,0.873791,0.866026,0.858045,0.849851,
  84.             0.841447,0.832834,0.824015,0.814991,0.805765,0.796340,0.786716,0.776898,0.766887,
  85.             0.756686,0.746298,0.735724,0.724968,0.714032,0.702919,0.691632,0.680173,0.668545,
  86.             0.656752,0.644796,0.632680,0.620407,0.607980,0.595403,0.582678,0.569808,0.556797,
  87.             0.543648,0.530365,0.516949,0.503406,0.489737,0.475947,0.462040,0.448017,0.433884,
  88.             0.419643,0.405298,0.390852,0.376310,0.361674,0.346948,0.332136,0.317242,0.302270,
  89.             0.287222,0.272104,0.256917,0.241667,0.226358,0.210991,0.195573,0.180106,0.164595,
  90.             0.149042,0.133453,0.117831,0.102179,0.086502,0.070804,0.055088,0.039358,0.023619,
  91.             0.007874,-0.007874,-0.023619,-0.039358,-0.055088,-0.070804,-0.086502,-0.102179,-0.117830,
  92.             -0.133453,-0.149042,-0.164595,-0.180106,-0.195573,-0.210991,-0.226357,-0.241667,-0.256917,
  93.             -0.272103,-0.287222,-0.302270,-0.317242,-0.332136,-0.346948,-0.361673,-0.376309,-0.390852,
  94.             -0.405297,-0.419643,-0.433884,-0.448017,-0.462040,-0.475947,-0.489737,-0.503405,-0.516949,
  95.             -0.530364,-0.543648,-0.556797,-0.569808,-0.582677,-0.595403,-0.607980,-0.620407,-0.632680,
  96.             -0.644796,-0.656752,-0.668545,-0.680173,-0.691631,-0.702919,-0.714032,-0.724968,-0.735724,
  97.             -0.746298,-0.756686,-0.766887,-0.776898,-0.786716,-0.796339,-0.805765,-0.814991,-0.824015,
  98.             -0.832834,-0.841447,-0.849851,-0.858045,-0.866025,-0.873791,-0.881341,-0.888671,-0.895782,
  99.             -0.902670,-0.909334,-0.915773,-0.921985,-0.927968,-0.933721,-0.939243,-0.944532,-0.949586,
  100.             -0.954405,-0.958987,-0.963332,-0.967437,-0.971303,-0.974928,-0.978311,-0.981451,-0.984349,
  101.             -0.987002,-0.989410,-0.991573,-0.993490,-0.995161,-0.996584,-0.997761,-0.998691,-0.999372,
  102.             -0.999806,-0.999992,-0.999930,-0.999620,-0.999062,-0.998257,-0.997204,-0.995903,-0.994356,
  103.             -0.992562,-0.990522,-0.988236,-0.985706,-0.982931,-0.979912,-0.976650,-0.973146,-0.969400,
  104.             -0.965415,-0.961189,-0.956726,-0.952025,-0.947088,-0.941916,-0.936511,-0.930874,-0.925005,
  105.             -0.918908,-0.912582,-0.906030,-0.899254,-0.892254,-0.885034,-0.877593,-0.869935,-0.862062,
  106.             -0.853974,-0.845675,-0.837166,-0.828450,-0.819528,-0.810403,-0.801077,-0.791553,-0.781832,
  107.             -0.771917,-0.761811,-0.751515,-0.741034,-0.730368,-0.719522,-0.708497,-0.697297,-0.685924,
  108.             -0.674380,-0.662669,-0.650794,-0.638758,-0.626563,-0.614213,-0.601710,-0.589059,-0.576261,
  109.             -0.563320,-0.550240,-0.537023,-0.523673,-0.510193,-0.496587,-0.482857,-0.469008,-0.455043,
  110.             -0.440964,-0.426777,-0.412483,-0.398087,-0.383593,-0.369003,-0.354322,-0.339553,-0.324700,
  111.             -0.309766,-0.294755,-0.279672,-0.264519,-0.249300,-0.234020,-0.218681,-0.203289,-0.187845,
  112.             -0.172356,-0.156823,-0.141252,-0.125646,-0.110009,-0.094344,-0.078656,-0.062948,-0.047224,
  113.             -0.031490,-0.015747,0
  114.     };   // 50hz正弦波离散化

  115.     for(i=0;i<N;i++)
  116.     {
  117.         CMPA_data[i]=(0.5+0.5*M_ratio*sin_table[i])*Period; //规则采样计算公式 CMPA_data[i]=(0.5+0.5*M_ratio*sin_table[i])*Period

  118.     }
  119. }

复制代码



评分

参与人数 3黑币 +60 收起 理由
fhx9999 + 5 赞一个!
锦瑟年华722 + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:234805 发表于 2017-9-22 09:31 | 显示全部楼层
楼主好人一枚
回复

使用道具 举报

ID:234805 发表于 2017-9-22 09:32 | 显示全部楼层
楼主好人一枚
回复

使用道具 举报

ID:237562 发表于 2017-10-7 04:15 | 显示全部楼层
Looks retty good, i will try to use it on a F28379D
回复

使用道具 举报

ID:380348 发表于 2018-8-4 22:37 | 显示全部楼层
这个很给力,赞一个
回复

使用道具 举报

ID:430590 发表于 2018-11-21 15:32 | 显示全部楼层
楼主程序里的正弦表是怎么算的??
回复

使用道具 举报

ID:431166 发表于 2018-11-22 14:26 | 显示全部楼层
楼主一生平安~~感谢
回复

使用道具 举报

ID:325681 发表于 2019-2-18 08:36 | 显示全部楼层
maomao猫 发表于 2018-11-21 15:32
楼主程序里的正弦表是怎么算的??

正弦表可以用MATLAB计算啊,我是这样用的,
回复

使用道具 举报

ID:508567 发表于 2019-4-10 10:53 | 显示全部楼层
maomao猫 发表于 2018-11-21 15:32
楼主程序里的正弦表是怎么算的??

这个回答好像太晚,下载一个正弦表发生器或者用matlab采样都是可以的。
回复

使用道具 举报

ID:742944 发表于 2020-5-2 18:44 | 显示全部楼层
先下载下来看看
回复

使用道具 举报

ID:469861 发表于 2020-12-24 09:07 | 显示全部楼层
好棒,赞一个
回复

使用道具 举报

ID:575853 发表于 2021-4-19 10:10 | 显示全部楼层
这svpwm?
回复

使用道具 举报

ID:60645 发表于 2021-9-27 15:32 | 显示全部楼层
代码写得不太好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表