TI E2E 英文论坛海量技术问答的中文版全新上线,可点击相关论坛查看,或在站内搜索 “参考译文” 获取。

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28376S:创建互补高分辨率 PWM 信号分离

Guru* 92700 points
Other Parts Discussed in Thread: C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/969793/tms320f28376s-create-complementary-high-resoultion-pwm-singlags

器件型号:TMS320F28376S
主题中讨论的其他器件:C2000WARE

尊敬的先生:

我们正在基于 C2000 28376S 开发电机控制 器,我们需要 每相创建互补 PWM 信号(共3相)

2.每个相位将连接到 PWM 模块(1、2、3),信号 A 将用于高侧 MOSFET ,信号 B 将用于低侧 MOSFET (信号通过适当的栅极驱动器连接)

PWMXA 和 PWMXB 应是具有适当死区时间的互补信号,我们可以成功配置  

我们的问题是将 THHSE 信号设为高分辨率 PWM 互补信号  

我的问题是,是否可以实现此类配置(互补高分辨率 PWM 信号)?

下面是用于进行高分辨率 PWM 信号的排印的代码片段

EALLOW;

EPwmRegHandle->TBPRD = ePWM_TIMER_TBPRD;//设置定时器周期
EPwmRegHandle->TBCTL.bit.PHSEN =TB_ENABLE;//启用相位加载

EPwmRegHandle->TBCTL.bit.PHSDIR = TB_UP;//同步后向上计数
EPwmRegHandle->TBCTL.bit.PRDLD = TB_SHADOW;
EPwmRegHandle->TBCTL2.bit.PRDLDSYNC=0;// PRD ON CTR=0且同步
EPwmRegHandle->TBPHS.bit.TBPHS = 0;//相位始终为0°
EPwmRegHandle->TBCTR = 0x0;//清除计数器
EPwmRegHandle->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//递减计数
EPwmRegHandle->TBCTL.bit.HSPCLKDIV = TB_DIV1;//高速时钟与 SYSCLKOUT 的比率
EPwmRegHandle->TBCTL.bit.CLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
EPwmRegHandle->TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//输出同步连接到输入同步
EPwmRegHandle->CMPCTL.bit.SHDWAMODE = CC_SHADODE;//使用影子模式
EPwmRegHandle->CMPCTL.bit.SHDWBMODE = CC_SHADOW;//使用影子模式

EPwmRegHandle->CMPCTL.bit.LOADAMODE = CC_CTR_zero_PRD;//每零或每周期加载一次寄存器
EPwmRegHandle->CMPCTL.bit.LOADBMODE = CC_CTR_zero_PRD;//每零或每周期加载一次寄存器

/*高分辨率 PWM */

EPwmRegHandle->CMPA.bit.CMPAHR = 0;
EPwmRegHandle->CMPB.bit.CMPBHR = 0;
EPwmRegHandle->TBPHS.bit.TBPHSHR = 0x0;

/*清除高分辨率配置*/
EPwmRegHandle->HRCNFG.ALL = 0x0;

/*启用高分辨率 CH-A */
EPwmRegHandle->HRCNFG.bit.EDGMODE = HR_REP;
EPwmRegHandle->HRCNFG.bit.CTLMODE = HR_CMP;
EPwmRegHandle->HRCNFG.bit.HRLOAD = HR_CTR_zero_PRD;

//*启用高分辨率 CH-B (如果使用死区)
EPwmRegHandle->HRCNFG.bit.EDGMODEB = HR_FEP;
EPwmRegHandle->HRCNFG.bit.CTLMODEB = HR_CMP;
EPwmRegHandle->HRCNFG.bit.HRLOADB = HR_CTR_zero_PRD;

EPwmRegHandle->HRPCTL.bit.TBPHSHRLOADE = 1;
EPwmRegHandle->HRPCTL.bit.HRPE = 0;//必须禁用占空比控制
EPwmRegHandle->HRMSTEP.bit.HRMSTEP = 32;


/*操作限定符*/
EPwmRegHandle->AQCTLA.bit.CAU = AQ_SET;//在 CAU 上设置 PWM1A
EPwmRegHandle->AQCTLA.bit.CAD = AQ_CLEAR;//清除 CAD 上的 PWM1A
EPwmRegHandle->AQCTLB.bit.CBU = AQ_SET;//在事件 B 上设置 PWM1B,向上计数
EPwmRegHandle->AQCTLB.bit.CBD = AQ_CLEAR;//在事件 B 上清除 PWM1B,倒计数

/*禁用死区*/
EPwmRegHandle->DBCTL.bit.OUT_MODE = DB_DISABLE;

/*清除跳闸区域配置*/
EPwmRegHandle->TZCTL.All=0;
EPwmRegHandle->TZSEL.All=0;
EPwmRegHandle->TZDCSEL.All=0;
EPwmRegHandle->DCTRIPSEL.All=0;

/*如果启用则确保死区模块(相对于 ePWMxA 的 OUTA/OUTB 的死区时间+极性)*/
/*高分辨率死区时间*/
EPwmRegHandle->DBCTL.bit.out_mode = DB_full_enable;//fed+RED
EPwmRegHandle->DBCTL.bit.POLSEL =死区带极性;//与 CMD B 反相
EPwmRegHandle->DBCTL.bit.in_mode = DBA_ALL;//A 是下降沿和上升沿的源
EPwmRegHandle->DBCTL.bit.SHDWDBREDMODE = 1;
EPwmRegHandle->DBCTL.bit.SHDWDBFEDMODE = 1;
EPwmRegHandle->DBCTL.bit.LOADREDMODE = 0;//计数器上的加载= 0
EPwmRegHandle->DBCTL.bit.LOADFEDMODE = 0;//计数器加载= 0
EPwmRegHandle->DBCTL.bit.HALFCYCLE = 1;//需要高分辨率死区
EPwmRegHandle->DBRED.bit.DBRED = ePWM_DB_RED_DLY;//RE DELAY DBRED*TCLK/2
EPwmRegHandle->DBREDHR.bit.DBREDHR = 0x0;//val *256 (其中 val 是步数)
EPwmRegHandle->DBFED.bit.DBFED = ePWM_DB_FED_DLY;//FE 延迟 DBFED*TCLK/2
EPwmRegHandle->DBFEDHR.bit.DBFEDHR = 0x0;//val *256 (其中 val 是步数)
EPwmRegHandle->HRCNFG2.bit.EDGMODEPB = HR_BEP;//HR_BEP;// DBREDHR 和 DBFEDHR
EPwmRegHandle->HRCNFG2.bit.CTLMODEDBRED = 0;// ZRO 上的负载
EPwmRegHandle->HRCNFG2.bit.CTLMODEDBFED = 0;// ZRO 上的负载

EDIS;

在各种测试中,我仅在中成功地获得了高分辨率互补 PWM 信号  

1.设置通道 A 的边沿模式到上升边沿(例如 MEP 机制)

2.se针对通道 B 至下降沿的 t Edge 模式  

当我更新 PWM 命令时(如果我不更新 EPwm1Regs.CMPB.bit.CMPBHR  ,我会看到高分辨率的差异)

 EPwm1Regs.CMPA.bit.CMPA      <=粗分辨率  

EPwm1Regs.CMPA.bit.CMPAHR    <=精细分辨率  

EPwm1Regs.CMPB.bit.CMPBHR   <=微调

即使是很难,它也能正常工作,我在某些方面看到抖动和奇怪的行为  

您能就此事提出建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、但必须通过 CMPxHR 和死区 HR 寄存器添加互补信号的高分辨率部分。

    如果 EPWMxA 输出的死区处于互补模式、使 EPWMxB 成为具有死区的反相版本、请确保将 CMPBHR 添加到与 CMPAHR 相同的值。  

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这意味着 CMPBHR = CMPAHR

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好、Nima  

    感谢您的快速响应,这就是 我所做的  

    要更新的命令  

     EPwm1Regs.CMPA.bit.CMPA      <=粗分辨率  

    EPwm1Regs.CMPA.bit.CMPAHR    <=精细分辨率  

    EPwm1Regs.CMPB.bit.CMPBHR   <=微调

    这将导致 CMPAHR   = CMPBHR   ,并且 MEP (边沿位置)的配置被配置  

    通道 A -后退边  

    通道 B -上升沿  

    只有此配置可以部分工作  

    在50%的 DC 上+一些分项 -工作

    2.changing 最美好的时光 + 40%的 DC +一些高分辨率工作(  包括 MEP Propropely aligned A、B)

    但问题在于 PWM 抖动的命令的某种值  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您正在使用向上/向下计数模式、对吧? 我在您的代码中看到它。

    对于您的操作、请设置要在 CMPAU 上设置的操作、在 CMPAD 上清除。 然后是两个边沿上的高分辨率。 将影子到活动事件加载为 CNTR_PRD_ZERO。

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Nima ,

    是 PWM 在向上向下计数器中工作  

    操作限定符  

    EPwmRegHandle->AQCTLA.bit.CAU = AQ_SET;//在 CAU 上设置 PWM1A
    EPwmRegHandle->AQCTLA.bit.CAD = AQ_CLEAR;//清除 CAD 上的 PWM1A
    EPwmRegHandle->AQCTLB.bit.CBU = AQ_SET;//在事件 B 上设置 PWM1B,向上计数
    EPwmRegHandle->AQCTLB.bit.CBD = AQ_CLEAR;//在事件 B 上清除 PWM1B,倒计数

    如您所见,对于通道 A (设置 CMP 匹配,清除向下比较匹配),通道 B 动作限制器不相关  

    加载阴影   


    在0和 PRD 上加载

    EPwmRegHandle->HRCNFG.bit.HRLOAD = HR_CTR_zero_PRD;

    EPwmRegHandle->HRCNFG.bit.HRLOADB = HR_CTR_zero_PRD;

    EPwmRegHandle->CMPCTL.bit.LOADAMODE = CC_CTR_zero_PRD;//每零或每周期加载一次寄存器
    EPwmRegHandle->CMPCTL.bit.LOADBMODE = CC_CTR_zero_PRD;//每零或每周期加载一次寄存器

    会将其更改为在周期和零上加载(可能是这是问题)

    EPwmRegHandle->DBCTL.bit.LOADREDMODE = 0;//计数器上的加载= 0
    EPwmRegHandle->DBCTL.bit.LOADFEDMODE = 0;//计数器加载= 0

    EPwmRegHandle->HRCNFG2.bit.CTLMODEDBRED = 0;// ZRO 上的负载
    EPwmRegHandle->HRCNFG2.bit.CTLMODEDBFED = 0;// ZRO 上的负载

    MEP

    将 MEP 改变到两个边线  ? 我想我已经尝试过它,它看起来更像是相移 ,数据表中也提到了这一点

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    两个边沿都不同于相移。 当处于占空比控制模式时、双边沿都会导致上升沿和下降沿更接近 PRD 事件、

    在相位控制模式下、两个边沿都右移。

    在这种情况下、您需要使用 MEP 控制两个边沿的占空比控制模式。

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Nima,

    我过去曾尝试过它 ,并以这种形式询问它(也许我会理解它), 但是 MEP 是基于延迟 的,这意味着它 只能延迟边沿 (因此,对于向上的定位 PWM ,设置两个边沿不会使边沿更接近 PRD)... 可能是因为我没有好好地做,但我会尝试一下。

    也来自数据表  

    边沿模式—可对 MEP 进行编程、以在上升沿(RE)上提供精确的位置控制、
    下降沿(FE)或两个沿(be)。 FE 和 RE 用于电源拓扑
    占空比控制(CMPA 或 CMPB 高分辨率控制)的应用、同时用于拓扑
    例如、相移全桥(TBPHS 或 TBPRD 高分辨率)的应用
    控制)。


    控制模式—MEP 被设定为由 CMPAHR/CMPBHR 寄存器控制
    如果是占空比控制或 TBPHSHR 寄存器(相位控制)。 RE 或 FE 控制模式
    应与 CMPAHR 或 CMPBHR 寄存器配合使用。 必须使用控制模式
    TBPHSHR 寄存器。 当 MEP 由 TBPRDHR 寄存器(周期控制)控制时
    占空比和相位也可通过各自的高分辨率寄存器进行控制。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我理解这种混淆、但 这是不正确的。 虽然主要与 TBPSHHR 配合使用、但在占空比控制模式下使用。

    MEP 是基于延迟的、但下面介绍了在两个边沿模式下用于占空比控制的情况。

    递增计数:CMPA + CMPAHR ->更接近 PRD

    递减计数:CMPA + CMPAHR ->更接近 PRD

    因此、占空比会缩短。

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Nima、

    我曾尝试过您的建议   

    将边沿模式更改为双边沿

    EPwm3Regs.HRCNFG.bit.EDGMODE = HR_BEP;
    EPwm3Regs.HRCNFG.bit.EDGMODEB = HR_BEP;

    将 DC 设置为50%  ,只需更改 比例即可  

    EPwm3Regs.CMPA.bit.CMPAHR =(dc_FRC* LOCAL_SFO)<<8 +0x080;

    EPwm3Regs.CMPA.bit.CMPBHR = (dc_FRC* LOCAL_SFO)<<8 +0x080;

    查看示波器,我没有看到任何变化  (我更改了 dc_FRC ,因此它将改变~6-7ns)

    在该配置中工作时

    EPwm3Regs.HRCNFG.bit.EDGMODE = HR_REP;
    EPwm3Regs.HRCNFG.bit.EDGMODEB = HR_FEP;

    查看示波器,将 DC 设置为50%  并更改比例,我能够看到变化(在信号边缘),但在互补模式下

    EPwm3Regs.CMPA.bit.CMPAHR =(dc_FRC* LOCAL_SFO)<<8 +0x080;

    EPwm3Regs.CMPA.bit.CMPBHR = (dc_FRC* LOCAL_SFO)<<8 +0x080;

    那么、当到达两个边缘时、为什么不起作用 呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这一点已经过验证。 下面是一个具有两个边沿控制和执行占空比控制的 ePWM 递增/递减计数示例。 可以试试吗?

    //########################################################################################################################
    //
    ////文件:HRPWM_ex3_prdupdown_SFS.c
    //
    //标题:HRPWM 周期控制。
    //
    //##########################################################################################################################
    //
    ////文件:HRPWM_ex4_Duty_updown_SFS.c
    //
    //标题:具有升压模式的 HRPWM 占空比控制。
    //
    //! \addtogroup driver_example_list
    //! 

    具有升压模式的 HRPWM 占空比控制

    //! //! 此示例调用以下 TI 的 MEP 比例因子优化器(SFO) //! 软件库 v8函数: //! //! b int \b SFO ();\n //! -使用 HRPWM 时动态更新 MEP_ScaleFactor //! -更新 HRMSTEP 寄存器(只存在于 EPwm1Regs 寄存器空间中) //! 具有 MEP_ScaleFactor 值 //! -如果错误:MEP_ScaleFactor 大于最大值255 // ! (在这种情况下、自动转换可能无法正常工作) //! -完成指定通道 时返回1 //! -如果指定通道的值未完成、则返回0 //! //! 本示例旨在说明 HRPWM 功能。 代码可以是 //! 针对代码效率进行了优化。 请参阅 TI 的数字电源应用 //! 示例和 TI 数字电源软件库以了解详情。 //! //! b 外部连接\n //! -监控示波器上的 ePWM1/2/3/4 A/B 引脚。 // //########################################################################################################################## //$TI 发行版:F2837xD 支持库 v3.10.00.00 $ //$发行 日期:星期二5月26日17:13:46 IST 2020 $ //版权所有: //版权所有(C) 2013-2020 Texas Instruments Incorporated - http://www.ti.com/ // 只要 满足以下条件,就允许以源代码和二进制形式重新分发和使用//修改或不修改//: // //重新分发源代码必须保留上述版权 //声明、此条件列表和以下免责声明。 // //二进制形式的再发行必须复制上述版权 //声明、此条件列表和// 分发随附的//文档和/或其他材料中的以下免责声明。 //// 未经 事先书面许可,不能使用德州仪器公司的名称或//其贡献者的名称来认可或推广源自此软件的产品//。 //// 本软件由版权所有者和贡献者提供 //“按原样”,不 承认任何明示或暗示的保证,包括但不限于//适销性和对//特定用途适用性的暗示保证。 在任何情况下、版权 //所有者或贡献者都不对任何直接、间接、偶然、 //特殊、模范、 或相应的损害(包括但不 限于采购替代产品或服务;丧失使用、 //数据或利润; 或业务中断)、无论 出于何种原因使用 本软件(即使被告知可能会造成此类损坏)、还是出于任何原因而产生的任何//责任理论(无论是合同、严格责任还是侵权行为)//(包括疏忽或其他)。 //$ //######################################################################################################################## // //包含的文件 // #include "driverlib.h" #include "device.h" #include "board.h" #include "SFO_v8.h" #define CHANGE_B_AS_ZRO_PRD_REF 0 #define EPWM_TIMER_TBPRD 100UL #define MIN_HRPWM_Duty_Percent 4.0/(((float32_t) ePWM_TIMER_TBPRD)* 100.0 // 定义 // #define LAST_ePWM_index_for_example 5 // 全局 //// float32_t dutyFine = 50.0; uint16_t status; int MEP_ScaleFactor;// SFO 库使用的全局变量 //结果可用于所有 HRPWM 通道 //此变量也被复制到 HRMSTEP //按 SFO ()函数注册。 volatile uint32_t ePWM[]= {0、myEPWM1_base、myEPWM2_base、myEPWM3_base、myEPWM4_base}; // //函数原型 // void initHRPWM (uint32_t period); void error (void); //__interrupt void epwm1ISR (void); //__interrupt void epwm2ISR (void); //_interrupt void epwm3ISR (void); //__interrupt void epwm4ISR (void); // Main // void main (void) { uint16_t i = 0; // //初始化设备时钟和外设 // device_init(); // //禁用引脚锁定并启用内部上拉。 // DEVICE_initGPIO(); // //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。 // interrupt_initModule(); // //使用指向 shell 中断的指针初始化 PIE 矢量表 //服务例程(ISR)。 // interrupt_initVectorTable(); // //将中断服务例程分配给 ePWM 中断 // //中断寄存器(INT_EPWM1、epwm1ISR); //中断寄存器(INT_EPWM2、epwm2ISR); //中断寄存器(INT_EPWM3、epwm3ISR); //中断寄存器(INT_EPWM4、epwm4ISR); // //初始化 ePWM GPIO 并使用 GPIO0更改 XBAR 输入 // Board_init(); // //调用 SFO ()使用校准的 MEP_ScaleFactor 更新 HRMSTEP 寄存器。 // HRMSTEP 必须在启用前填充比例因子值 //高分辨率周期控制。 // while (status =SFO_Incomplete) { 状态= SFO (); if (status =SFO_ERROR) { ERROR();//如果发生错误,SFO 函数返回2,MEP # } //步进/粗步进超过最大255。 } // //禁用同步(也冻结 PWM 的时钟) // SYSCTL_DisablePeripheral (SYSCTL_Periph_CLK_GTBCLKSYNC); SYSCTL_DisablePeripheral (SYSCTL_Periph_CLK_TBCLKSYNC); initHRPWM (ePWM_TIMER_TBPRD); // //启用到 PWM 的同步和时钟 // SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_TBCLKSYNC); //启用 ePWM 中断 // //中断_ENABLE (INT_EPWM1); //中断_ENABLE (INT_EPWM2); //中断_ENABLE (INT_EPWM3); //中断_ENABLE (INT_EPWM4); // //启用全局中断(INTM)和实时中断(DBGM) // EINT; ERTM; for (;;) { // //扫描 DutyFine // 对于(dutyFine = min_HRPWM_Duty_percent;dutyFine <(100.0-min_HRPWM_Duty_percent);dutyFine += 0.01) { DEVICE_DELAY_US (1000); 对于(i=1 <LAST_EPWM_INDEX_FOR_EXAMPLE; i++) { float32_t 计数=((100.0 - dutyFine)*(float32_t)(ePWM_TIMER_TBPRD << 8))/100.0; uint32_t compCount =(count); uint32_t hrCompCount =(compCount &(0x000000FF)); 如果(hrCompCount = 0) { // //添加1以使 CMPxHR = 0 // compCount |= 0x00000001; } HRPWM_setCounterCompareValue (ePWM[i]、HRPWM_COUNTER_COMPARE_A、COMPCount); #if channel_B_AS_ZRO_PRD_REF = 0 HRPWM_setCounterCompareValue (ePWM[i]、HRPWM_COUNTER_COMPARE_B、compCount); #endif } // //调用换算系数优化器库函数 SFO () //定期跟踪温度/电压引起的任何变化。 //此函数通过运行生成 MEP_ScaleFactor HRPWM 逻辑中的// MEP 校准模块。 该比例 //系数可用于所有 HRPWM 通道。 SFO () //函数也使用更新 HRMSTEP 寄存器 //比例因子值。 // STATUS = SFO ();//在后台,MEP 校准模块 //持续更新 MEP_ScaleFactor 如果(status =SFO_ERROR) { ERROR();// SFO 函数在发生错误时返回2 &# // MEP 步进/粗步进 } //超过最大255。 } } // epwm1ISR - ePWM 1 ISR //////_interrupt void epwm1ISR (void)//{// ePWM_clearEventTriggerInterruptFlag (EPWM1_base);// Interrupt_clearACKGroup (interrupt_ACK_ACK_3);//////// epwmisr/ interrupt_isr/ ePWM/ interr/ ePWM3 (void)/ePWM/ interrupt_interrupt_interrupt_interrupt_isr/ ePWM3)/ePWM3 (ep_interr/ ePWM3)/ePWM/ eep_interrupt_interrupt_interrupt_interrupt_interrupt_interrupt_isr/ eWmisr/ eWmisr/ eWmisr/ eWm/ ePWM3)/eWmisr/ eep_interrupt_interrupt_interr // Interrupt_clearACKGroup (interrupt_ACK_Group3); // //// epwm4ISR - ePWM 4 ISR // ////// interrupt void epwm4ISR (void) //// ePWM_clearEventTriggerInterruptFlag (EPWM4_base); // Interrupt_ACKGroup (void ) // interrupt_int_HRGroup3 (void)// interrupt_int_int_int_intgroup3 (void) uint16_t j; // 具有 HRPWM 的// ePWM 通道寄存器配置 // ePWMxA / ePWMxB 在上升沿和下降沿通过 MEP 控制切换为低电平/高电平 // 对于(j=1;j <

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际发生的情况是:

    您可以将所有寄存器的影子到活动加载设置为零和周期。

    例如、设置 CMPA/CMPAHR = 22.5

    PRD = 40

    在 CTR=ZERO 事件中、CMPA/CMPAHR 设置为22.5、因此上升沿必须在22之后延迟0.5、朝向 PRD=40。

    在 CTR=PRD 事件时、CMPA/CMPAHR 设置为22.5、HRPWM 在内部执行计算并知道、由于22.5比仅22更接近40、因此必须提前下降沿。 因此、它将使下降沿发生在早于 CMPA/CMPAHR = 22的情况下。  

    因此、减小占空比、而不进行相移。 如果您的范围中未看到此情况、则表示示波器的分辨率未显示小 HR 变化、或者存在另一个不正确的设置。

    上面的示例恰好做到了这一点、我们将在即将到来的2月版本中将其发布到 C2000Ware 中。

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Nima,

    感谢您的示例和 病人,但在示例中,通道 A 和通道 B 不能作为复杂模式工作   

    它们相互独立工作 (您可以将适当的行动放大器 设置为互补)。

    在我的实现方案中,它们使用死区机制作为复杂的工作,该机制 将 ePWMA 路由 到输出 A ,并将其反转到输出 B

    加上正确的红色时间,也许这就是原因?

    我将尝试您建议的示例

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您应该能够使用 CMPAU 来清除通道 B、使用 CMPAD 来设置通道 B、并且它们都应该使用边沿和占空比控制器。