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.

[参考译文] 编译器/TMS320F28075:TMS320F28075

Guru**** 2589280 points
Other Parts Discussed in Thread: TMS320F28075

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661681/compiler-tms320f28075-tms320f28075

器件型号:TMS320F28075

工具/软件:TI C/C++编译器

您好!

 我正在使用 TMS320F28075微控制器。 我  通过 ADC A2进行直流电压检测。 也使用了 PWM1A、1B。 当直流电压 ADC 计数超过3500时、我想使两个 PWM 跳闸(低电平)。 为此,我使用了比较模块。 我已针对同一个进行了以下编码。   

// CMPSS 初始化  

Cmpss1Regs.COMPCTL.bit.ASYNCHEN = 0;//高比较器同步跳变

Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = 3;//对高比较器使用滤波和锁存跳闸
Cmpss1Regs.COMPCTL.bit.COMPHINV = 0;//高比较器的值大于 DAC 时跳闸
Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0;//比较高比较器的 DAC 值

Cmpss1Regs.COMPHYSCTL.bit.COMPHYS = 1;//比较器的典型迟滞

Cmpss1Regs.COMPSTSCLR.bit.HSYNCCLREN = 0;// PWMSYNC 不会复位高电平比较器的锁存
Cmpss1Regs.COMPSTSCLR.bit.HLATCHCLR = 1;//立即清除高电平比较器的锁存

Cmpss1Regs.COMPDACCTL.bit.SWLOADSEL = 0;//在 SYSCLK 上更新 DAC 值
Cmpss1Regs.COMPDACCTL.bit.SELREF = 0;// VDDA 用作 DAC 基准
Cmpss1Regs.COMPDACCTL.bit.DACSOURCE = 0;//未使用斜坡发生器

Cmpss1Regs.DACHVALS.bit.DACVAL = 4000;  

// Cmpss1Regs.CTRIPLFILCTL.bit.FILINIT = 1;//将过滤器中的所有数据初始化为输入值
// Cmpss1Regs.CTRIPLFILCTL.bit.THRESH = PAGE_MAJ;//跳闸窗口中的高采样数
// Cmpss1Regs.CTRIPLFILCTL.bit.SAMPWIN = POST_WIN;//投票窗口中的样本数= SAMPWIN+1
// Cmpss1Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 0;//未使用 SYSCLK 的预分频

cmps1Regs.CTRIPHFILCTL.bit.FILINIT = 1;//将过滤器中的所有数据初始化为输入值
cmps1Regs.CTRIPHFILCTL.bit.THRESH = PALIT_MAJ;//跳闸窗口中的高采样数
cmps1Regs.CTRIPHFILCTL.bit.SAMPWIN = POST_WIN;//投票窗口中的样本数= SAMPWIN+1

Cmpss1Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0;//未使用 SYSCLK 的预分频

 Cmpss1Regs.COMPLOCK.bit.CTRIP = 1;//锁定跳闸寄存器
 Cmpss1Regs.COMPLOCK.bit.DACCTL = 1;//锁定 DACCTL 寄存器
 Cmpss1Regs.COMPLOCK.bit.COMPHYSCTL = 1;//锁定 COMPHYSCTL 寄存器
 Cmpss1Regs.COMPLOCK.bit.COMPCTL = 1;//锁定 COMPCTL 寄存器

// PWM 初始化
EPwm1Regs.TZSEL.bit.DCBEVT2 = TZ_ENABLE;// DCBEVT1上的单次触发
EPwm1Regs.TZSEL.bit.DCAEVT2 = TZ_ENABLE;// DCAEVT1上的单次触发

EPwm1Regs.TZCTL.bit.DCBEVT2 = TZ_FORCE_LO;//在 DCBEVT1上强制为低电平
EPwm1Regs.TZCTL.bit.DCAEVT2 = TZ_FORCE_LO;//在 DCAEVT1上强制为低电平

EPwm1Regs.DCBCTL.bit.EVT2SRCSEL = DC_EVT2;// DCB 的 EVT1源
EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2;// DCA 的 EVT1源

EPwm1Regs.DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//事件的异步使用
EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//事件的异步使用

EPwm1Regs.TZDCSEL.bit.DCBEVT2 = TZ_DCBH_HI;// DCBH->高电平上的事件
EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI;// DCAH->高电平上的事件

EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0;//跳闸组合上的 DCBH
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 0;// DCAH on TRIP 组合
EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;

EPwm1Regs.DCAHTRIPSEL.bit.TRIPINPUT4 = 1;//使用跳闸4 (相位过流)

通过此设置、即使直流电压较低、我始终将 PWM 设为低电平。PWM 和 CMPSS 的初始化是否正确

此致、

Sagar

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

    萨加尔

    1. 步骤1:应启用到引脚的比较器输出并使用示波器进行观察。 当您使比较器按预期工作后、...
    2. 第二步:您可以测试 PWM 功能。
    3. 步骤3:在所有部分正常工作后、您应该尝试通过将比较器的输出连接到 PWM 模块来将它们组合在一起。

    请尝试上述步骤、并在此处回复您的结果!

    此致、
    Cody  

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

    萨加尔

    我怀疑 CMPSS 锁存器在初始化期间跳闸、这会干扰您所需的行为。

    TRM 中有一个 CMPSS 数字滤波器初始化序列 、您需要遵循该序列以获得最佳结果。

    Tommy

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

    感谢您的回复。

    我将遵循相同的示例代码。(cmpss_async_cpu01 ).I 将使用相同的功能和输出 Xbar 引脚作为我的应用程序,但它不起作用。 但如果我运行它正在运行的示例、 我已禁用除 cmpss Init 之外的所有其他外设。 但我没有获得输出。
    如何检查 Cmpss 是否已初始化。

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

    我已经相应地完成了您的步骤、它正在工作。但我想处理更多的 cmpss 输入。
    例如、我想降低 CMpss1p 和 cmpss1N 的 PWM。
    CMPss1P 用于电压读取、CMPss1N 用于电流读取。 如果两个输入都高于 DAC 值、我想降低 PWM。
    PWM 仅对于 cmpss1P 为低电平、但对于 cmpss1N 不起作用。
    请为我提供相同的指导。

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

    该软件在 cmpss1P 上运行正常。 但对于 cmpss1n PWM、不会跳闸。
    我是否可以知道使用 cmps1n 触发 PWM 的过程。

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

    萨加尔

    我假设您是指 CMPSS1.CTRIPH 和 CMPSS1.CTRIPL?

    您是否重新配置了 ePWM X-BAR 以通过这两个信号?  您可以使用两个 CTRIP 信号的 OR'd 信号或配置来自 CTRIPL 的第二个 ePWM 跳闸信号。

    来自 TRM

    Tommy

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

    Tommy、

     是的、我希望或选择 CMPSS.CTRPH 和 CTRPL 信号。我重新配置信号、但信号不起作用。

    我想介绍如何为两个 CTRIP 信号配置 ePWM x-bar。

    此致、

    Sagar   

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

    萨加尔

    如果您再看一下 cmpss_async_cpu01 示例、您将看到 ePWM 和输出 x 条正在配置:

    //
    //配置 CTRIPOUTH 输出引脚
    //将 OUTPUTXBAR3配置为 CTRIPOUT1H
    //
    OutputXbarRegs.OUTPUT3MUX0TO15CFG.bit.MUX0 = 0;

    //
    //为输出启用 OUTPUTXBAR3多路复用器
    //
    OutputXbarRegs.OUTPUT3MUXENABLE.bit.MUX0 = 1;

    //
    //将 TRIP4配置为 CTRIP1H
    //
    EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX0 = 0;

    //
    //为输出启用 TRIP4多路复用器
    //
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX0 = 1;

    您只需更改程序的多路复用器选择即可。

    Tommy