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.

[参考译文] CCS/TMS320F28069:旧版 Piccolo 器件的替代方法

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/743827/ccs-tms320f28069-alternate-approach-for-older-piccolo-devices

器件型号:TMS320F28069

工具/软件:Code Composer Studio

大家好、

我正在使用比较器模块和跳闸区域进行迟滞控制配置、并正在寻找类似于以下内容的器件:

EPwm1Regs.AQTSRCSEL.bit.T1SEL = 0x1;//选择 DCAEVT2作为 T1事件源
EPwm1Regs.AQTSRCSEL.bit.T2SEL = 0x3;//选择 DCBEVT2作为 T2事件源 EPwm1Regs.AQCTLA2.bit.T1AQ
= 0x3;//将 DCBEVT2设置为 EPwm1u;EPT1.T1LA=EPT1.T1LA1.T1LAG=1 = 1
//发生 T2事件时清除 PWM1A 

适用于 F2806x 系列。 如果有任何帮助,我们将不胜感激:)

此致、

Gautam

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

    Gautam、

    您是否需要异步跳闸?

    使用 DCxEVTy 和使用 TZ 控制输出会怎么样? 或者、如果您想使用跳闸区域子模块的 CBC 或 OSHT 行为、您可以将比较器信号从器件中移出、并使用 TZ 1-3将其回 PWM。

    此致、
    Cody  

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

    正在添加到 Gautam 的输入...

    [引用 user="Cody Watkins"]您是否需要异步跳闸?

    是的、要求与馈送到比较器的外部信号异步。 另一个 Comp 输入来自 DAC。 需要根据一个比较器设置输出、并根据另一个比较器清除输出。

    这是当前正在尝试的代码。 无法将两个事件分配给同一个 PWM。 如果我错过了一些东西,请告知我们...

    EPwm1Regs.TBPRD = 6000; //设置计时器周期
    EPwm1Regs.TBPHS.Half.TBPHS = 0;//将相位寄存器设置为零
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//非对称模式
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//在 Zer 上设置 PWM1A
    
    
    //
    //根据 TZ1和 TZ2定义事件(DCAEVT1)
    //
    
    //
    // DCAH =比较器1输出
    //
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT;
    EPwm1Regs.DCTRIPSEL.bit.DCALCOMPSEL = DC_COMP2OUT;
    
    //
    // DCAEVT1 = DCAH 低电平(随着比较器输出变为低电平将变为有效)
    //
    // EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;
    EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;//COMP1
    EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_FCAL_LOW;//COMP2
    
    //
    // DCAEVT1 = DCAEVT1 (未过滤)
    //
    EPwm1Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1;
    EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2;
    
    EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_异 步;//采用异步路径
    EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//采用异步路径
    
    //
    //启用 DCAEVT1和 DCBEVT1是一次性触发源
    //注意:DCxEVT1事件可定义为单次触发。
    // DCxEVT2事件可被定义为逐周期事件。
    //
    EPwm1Regs.TZSEL.bit.DCAEVT1 = 1;
    EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;
    
    //
    // DCAEVTx 事件会强制 EPWMxA
    // DCBEVTx 事件会强制 EPWMxB
    //
    EPwm1Regs.TZCTL.bit.DCAEVT1 = TZ_FORCE_LO; // EPWM1A 将变为高电平
    EPwm1Regs.TZCTL.bit.DCAEVT2 = TZ_FORCE_HI; // EPWM1A 将变为高电平 

     

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

    更多信息、我也尝试了另一种方法...、但我还无法获得所需的逻辑... PFA 代码片段..

    EPwm1Regs.TBPRD = 6000; //设置计时器周期
    EPwm1Regs.TBPHS.Half.TBPHS = 0;//将相位寄存器设置为零
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//非对称模式
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//在 Zer 上设置 PWM1A
    
    
    //
    //根据 TZ1和 TZ2定义事件(DCAEVT1)
    //
    
    //
    // DCAH =比较器1输出
    //
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT;
    EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = DC_COMP2OUT;
    
    //
    // DCAEVT1 = DCAH 低电平(随着比较器输出变为低电平将变为有效)
    //
    // EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;
    EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI;//COMP1
    EPwm1Regs.TZDCSEL.bit.DCBEVT2 = TZ_DCBH_LOW;//COMP2
    
    //
    // DCAEVT1 = DCAEVT1 (未过滤)
    //
    EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2;
    EPwm1Regs.DCBCTL.bit.EVT2SRCSEL = DC_EVT2;
    
    EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//采用异步路径
    EPwm1Regs.DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//采用异步路径
    
    //
    //启用 DCAEVT1和 DCBEVT1是一次性触发源
    //注意:DCxEVT1事件可定义为单次触发。
    // DCxEVT2事件可被定义为逐周期事件。
    //
    EPwm1Regs.TZSEL.bit.DCBEVT2 = 1;
    EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;
    
    //
    // DCAEVTx 事件会强制 EPWMxA
    // DCBEVTx 事件会强制 EPWMxB
    //
    EPwm1Regs.TZCTL.bit.DCAEVT2 = TZ_FORCE_LO; // EPWM1A 将变为高电平
    EPwm1Regs.TZCTL.bit.DCBEVT2 = TZ_FORCE_HI; // EPWM1A 将变为高电平
    

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

    *通过比较、跳闸和同步寄存器的组合。