目录
以上,当A2端口超过阈值,信号会连接到CMPSS---EPWM-BAR---DC模块---TZ模块,已达到过流/过压封波的功能。
贴个代码,代码由SysCfg工具导出,生成的代码在Board_init()中,在while(1)中写了一个占空比一直滑动的程序,并且建立了两个中断函数接口TZ/ADC。
STM32现在开发流行使用STM32CUBEMX来完成初始化,极大得节省了配置单片机时间,也让配置变得更加简单可靠。Ti的C2000也随之推出自己的System Configuration Tool工具用来对C2000初始化。
图1:ePWM模块与其他外设关系
图2:ePWM内部子模块之间关系
打开CCS最新版,任意导入一个F28002X工程(建议简单的GPIO工程),点击左侧C2000.syscfg会弹出Ti的System Configuration Tool,添加一个EPWM,在EPWM模块下找到Time Base子模块配置栏。
-
一、ePWM---时基模块TB
计划配置一对中心对称且互补的PWM,频率为100Khz,那么TimeBase作为定时器将它定义为向上向下计数方式,TimeBasePeriod=999。
-
二、ePWM---计数器比较子模块CC
设置比较器CMPA,CMPB初始值=0,这里不再赘述比较简单。
-
三、 ePWM---动作限定模块AQ
AQ模块内部图
这里AQ模块仅需要更改ePWMxA部分,TB计数等于COMPA时的变化来输出 互补中心对称PWMxA/PWMxB,为什么无需配置ePWMxB部分,接下来说到DB模块会讲到。
-
四、ePWM---死区发生器模块DB
DB模块内部图
选择Active High Complementary(AHC), 即互补带死区输出模式。由DB模块内部图可知,OUTA/OUTB可以由AQ模块输出的ePWMxA为信号源,在ePWMxA基础上叠加死区延时和反向器完成了互补带死区输出方式,其中Rising/Falling Edge Delay Value分别为OUTA/OUTB的死区延时值10,10=10*TBclk,由之前配置的TBclk=主频100M/(1*1),可知10这里延时为100ns。
-
五、ePWM---高分辨模块HRPWM
因为是中心对称PWM,那么MEP作用于上升沿和下降沿。
上图为参考文档翻译下来的,由此可知,当使用HRPWM时且Period=1000时,那么普通比较值CMPA只能在3~997之间,即占空比为0.3%~99.7%。
设置比较器值时使用
HRPWM_setCounterCompareValue(EPWM1_BASE,HRPWM_COUNTER_COMPARE_A,X);
来调制占空比,X值为CMPA<<8+CMPAHR,由Period(1000<<8=25600)和范围限制可知X范围为:768~255232(0.3%~99.7%)。
计算分辨率EPWMclk=100Mhz,