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.

[参考译文] TMS320F28335:TMS320F28335

Guru**** 2392735 points
Other Parts Discussed in Thread: TMS320F28335, C2000WARE, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1339191/tms320f28335-tms320f28335

器件型号:TMS320F28335
主题中讨论的其他器件: C2000WARESysConfig

您好:

我在使用 TMS320F28335系列芯片配置 HRPWM 时遇到了此类问题。 配置代码如下:


HRPWM6_Config (周期)
{
//
//使用 HRPWM 配置 ePWM6寄存器
// ePWM6A 通过在下降沿进行 MEP 控制来切换高/低电平
//
EPwm6Regs.TBCTL.bit.PRDLD = TB_immediate;//设置立即加载
EPwm6Regs.TBPRD =周期-1;
EPwm6Regs.CMPA.half.CMPA = 0;//仅通过 CMPAHR 设置占空比控制
EPwm6Regs.CMPA.half.CMPAHR =(255<< 8);//初始化 HRPWM 扩展
EPwm6Regs.TBPHS.all = 0;
EPwm6Regs.TBCTR = 0;

EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_DOWN;//向下计数模式
EPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE;// ePWM6是主控方
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;

EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_影子;
EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_影子;

EPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR;// PWM 切换高电平/低电平
EPwm6Regs.AQCTLA.bit.CAD = AQ_SET;
//EPwm6Regs.AQCTLB.bit.PRD = AQ_CLEAR;
//EPwm6Regs.AQCTLB.bit.CBU = AQ_CLEAR;

EALLOW;
EPwm6Regs.HRCNFG.all = 0x0;
EPwm6Regs.HRCNFG.bit.EDGMODE = HR_REP;//上升沿上的 MEP 控制
EPwm6Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm6Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
EDIS;

在主函数中、我配置 SYSCLKOUT=PWM 150MHz 和150MHz、并且将100作为周期参数传递到 HRPWM6_Config (PERIOD)函数中、所以生成的 PWM 频率为1.5MHz。 现在、要求占空比为30.2%。 如果高分辨率边沿被设定为下降边沿、PWM 输出在 CNT=ZRO 时设定、CMPA 和 CMPAHR 的值按照公式:计算

假定 MEP 阶跃为150ps、它对应于150MHz 的 SYSCLK 频率、且相应的 MEPScaleFactor=44.44

CMPA=integer (100*30.2%)=30;

CMPAHR=(Fract(100*30.2%)*(MEPScaleFactor)+0.5(舍入))<<8=(0.2*44.44+0.5)<<8=2403;

最后、根据获取的 CMPA 和 CMPAHR 值、可以得到占空比约为30.2%的 PWM 波形。

然而、当配置为高分辨率上升沿调节时、当 CNT 达到根据上述公式计算出的 CMPA 值时、在 MEP 边沿控制调节后、PWM 波形被设置、当 CNT=PRD 时、波形被清除为零、 然后、得到的 PWM 波形占空比仍为所需的30.2%?

根据上面的结果、我认为获得的 PWM 波形占空比应为1-30.2=69.8%、而不是所需的30.2%、如果您想获得所需的30.2%占空比、则应根据60.8% CMPA 和 CMPAHR 值计算上升沿控制。 或者硬件是否会帮助自动切换? 或者、我们是否应该根据我说过的内容切换占空比的值、然后根据上面的公式重新计算 CMPA 和 CMPAHR 所需的值?

此致、

润浩

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

    您好、Runhao、

    您是否在此应用中使用了任何 C2000ware 示例?

    此外、您是否使用 SFO 库来计算 MEP 步长? 如果是、您是否正在使用自动转换? 这将根据 MEP 步骤计算自动计算人力资源所需的内容并为您简化。

    此致、

    艾里森

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

    您好 Allison,ñ a

    尽管我在 C2000中使用了示例并使用了 SFO 库的 MEP_ScaleFactor 自动计算并开启了自动转换、但我目前的问题是:在调整上升沿和下降沿时是否需要单独处理30.2占空比?

    例如、我首先在向上计数模式下使用下降沿调整设置和清除 CNT=ZRO 和 CNT=CAU:我获得的波形显示在第一行,然而、如果我不改变 CAU 的值、只改变上升沿调整的使用、 在 CNT=CAU 时对其进行设置、并在 CNT=PRD 时将其清除、然后我得到的波形应该是占空比为69.8%的 PWM 波、如下图第二行所示。

    因此、如果我想获得30.2%的 PWM 波形、在调整上升沿时是否应该将 CMPA 和 CMPAHR 值修改为69.8%的相应值、并获得占空比为30.2%的 PWM 波形、如下图第三行所示? 或者、如果启用了 SFO 和自动转换、您是否不必考虑这种情况?

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

    您好 Allison,ñ a

    我还专门使用了示波器来验证上述行为、如下图所示:

    当我使用下降沿调整并设置和清除 CNT=ZRO 和 CNT=CAU、并将占空比设置为30.9%时、生成的波形如下所示:

    如果我不修改 CMPA 和 CMPAHR 设置的值、仍会将 AQ 修改为30.9%、在 CNT=CAU 时将其设置、在 CNT=ZRO 时将其清除、并使用上升沿对其进行调整。 生成的 PWM 波形如下图所示。

    从示波器的测量结果可以看出、虽然我按照30.9%的比例设置了 CMPA 和 CMPAHR、但实际输出波形的占空比却是69.1%。

    如果我根据69.1%的占空比配置 CMPA 和 CMPAHR 的值、在上升沿调整下获得的波形如下图所示。

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

    您好、Runhao、

    感谢提供图和示波器图像。  

    如果启用了 HRPWM 模块的自动转换功能、则可以直接一次性对 CMPA 寄存器的所有32位(CMPA 和 CMPAHR)进行编程。  设置该 HRCNF[AUTOCONV]位后、还应能将0写入 CMPAHR 寄存器的值从0xFFFF、并能看到整个范围内的线性响应。

    关于 CMPAHR 寄存器、只有高8位包含高分辨率部分(最高 有效8位) 、如器件 TRM 中的寄存器描述所示。 如果像我提到过的那样启用自动转换模式、则 CMPAHR 只需填充小数占空比、硬件将在基于 SFO 的校准的帮助下自动将其转换为多个 MEP 步长。  

    关于您最新的示波器捕获结果、前2个案例与我预期的情况相同、即如果您要将动作限定符从{set on zero、clear on CMPA}更改为{set on CMPA、clear on PRD}、而不更改任何其他参数、 我希望占空比为反向值(一种配置为30.9、另一种配置为69.1)。 请记住、HR 始终是延迟元件、CMPAHR 会根据您所拥有的 MEP 边沿控制专门将延迟应用于通道 A。

    您能详细说明第3个示波器捕捉的意义吗? 如果我误解了这个问题、请表示歉意。

    此致、

    艾里森

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

    您好 Allison,ñ a

    感谢您的详细解释,关于第三种情况、还是根据{SET CMPA、RESET PRD}、我想利用上升沿调整占空比为30.9%的 PWM 波形、 但是、如果我的 CMPA:CMPAHR 寄存器中的值仍然是按照30.9%计算的、我将得到一个与第二种情况类似的 PWM 波形。 即使我开启自动转换、我也会将 CMPAHR 寄存器的值配置为(0.9)<<8、这样得到的 PWM 波形就与第二种情况中的相同。

    因此、在第三种情况下、不仅使用{SET CMPA、RESET CMPAHR}、而且还会根据(1-30.9%)=69.1%的值计算{CMPA:CMPAHR}的值、这样 PWM 波形与第三种情况类似。 通过调整上升沿可获得占空比为30.9%的 PWM 波形。

    您还可以注意最右侧的第一张图片和第三张图片、其中有一个▲x 参数、表示高电平所占用的时间、两者基本上都约为200ns;对于1.5MHz PWM 波形、占空比可以达到29.999999%(测量产生的误差)、 这两张图片之间的视觉差异是由示波器缩放造成的。

    此致、

    润浩

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

    您好 Allison,ñ a

    现在我有一个关于高精度周期调节的新问题。 根据以下文档突出显示部分的说明、可以看出当选择高精度周期寄存器 TBPRDHR 来调节 MEP 时、可以单独调整占空比和相位、但 EDGMMODE 只能选择 RE、 FE 对应于占空比调整。 对应于相位调整、如何同时调整周期、占空比和相位?

    也就是说、可以同时调整高分辨率的周期、占空比和相位吗?

    或者可以同时调整高分辨率周期和分辨率吗?

    如果有可能、例如、如果我选择 RE 作为高分辨率周期、也就是说、EDGMODE 寄存器位已确定、那么在 CNT=PRD 时我的 AQ 应该置位、然后我的占空比只能通过下降沿进行调整、 但在 RE 中选择了我的 EDGMODE。

    我对这些问题感到困惑、请尽快答复我

    此致、

    润浩

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

    您好、Runhao、

    感谢您的讲解。 让我首先尝试理解/解决最初的困惑问题:

    情形1:

    • 上升沿的 MEP 边沿控制
    • 行动限定符:  
      • CMPA-UP 设为高电平
      • PRD 上的低电平清除
    • 结果:
      • 如果您使用 CMPAHR、延迟元素将应用于滤波器的
        • 因此、这将延迟 CMPA 上的边沿、
      • 根据您的计算和图表、我的理解是 占空比为69.8%、
      • 如果您改用30.2%的占空比、则应更改 AQS 或相应地调整 CMPA 值

    情形2:

    • 下降沿的 MEP 边沿控制:
    • 行动限定符:  
      • 在 零时设置为高电平
      •  CMPA-UP 上的低电平清除
    • 结果:
      • 如果您使用 CMPAHR、延迟元素将应用于下降沿
        • 因此、这将延迟 CMPA 上的边沿、
      • 根据您的计算和图表、我的理解是、此时的占空比应为30.2%、  

    关于您的第二个帖子:  

    您可以同时以高分辨率控制占空比和相位。 请注意、由于您只是以高分辨率调整 PWM 周期的长度、因此 HR 周期控制只会实现占空比控制。  可以 分别使用 CMPxHR 和 TBPRDHR 或将它们一起使用。 但是、您不能将中的任何一个选项与 TBPHSHR 一起使用。 因此、在确定要控制 PWM 通道 A 和 B 的 MEP 边沿的参数时、您基本上有两种选择:

    1. CMPAHR/CMPBHR 或 TBPRDHR
    2. TBPHSHR

    请注意、存在一些限制、具体取决于您选择的上面哪一种以及您选择的计数模式。  建议形式的 HRPWM 信号使用上-下计数模式、且 PWM 信号以 PRD 为中心(这意味着、您可以启用操作限定符、以便在 CMPAU 上设置高电平、在 CMPAD 上清除低电平)。

    如果计数器模式为向上计数模式并且启用了 HR 模式:

    • 动作限定器设置需要为:
      • PRD 置为高电平
      • CMPAU 上清除低电平

    如果您使用高分辨率周期模式(TBPRDHR):

    • MEP 应控制双边沿
      • (在向上计数模式中不支持双边沿控制、因此应使用向上向下双向计数)
    • 在高分辨率周期模式下必须始终启用自动转换(自动转换也称为 自动 HRMSTEP 调节)
    • CMPA 必须启用影子加载并配置为:
      • 上数的 TBCTR=PRD 上的影子加载 CMPA
      • TBCTR=0或 PRD 上的影子加载 CMPA、用于向上向下计数
    • CMPAHR 必须启用影子加载、并配置为:
      • 在 CMPAHR 上显示 TBCTR=0 PRD 上的负载  

    如果您需要进一步说明、请告诉我。 请注意、使用 SysConfig GUI 也会捕获大多数错误/不兼容的 HRPWM 设置-这对您的开发非常有帮助。

    此致、

    艾里森

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

    您好 Allison,ñ a

    首先、感谢您的耐心和详细的回答,但我仍然有关于高分辨率周期和占空比的调整的一些问题,以下面文档中描述的 HRCFG 寄存器位为例,

    如果我配置 HRCFG、 CTLMODE = 0、这意味着 MEP 边沿调整由 CMPAHR 寄存器或 TBPRDHR 寄存器控制、那么我需要配置 HRCFG。 如果我配置 HRCFG、则会启用 EDGMODE。 EDGMODE= 01或10、这意味着 MEP 边沿由 CMPAHR 寄存器控制、但如果我配置 HRCFG。 EDGMODE= 11表示 MEP 边沿受 TBPRDHR 寄存器控制、根据上面描述的内容、高分辨率周期和占空比可以同时调整。

    IF HRCFG。 CTLMODE= 0和 HRCFG。 EDGMODE= 11分别进行配置、我将首先选择一个稳定的高分辨率周期 TBPRDHR。 所以我想使用 CMPAHR 寄存器根据这个高分辨率周期调整占空比、如何配置 HRCFG 寄存器的 EDGMODE 的位? 需要修改 HRCFG。 是否会在每个 PWM 周期都采用 EDGMODE?

    此致、

    润浩

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

    您好、Runhao、

    抱歉、根据您所处的边沿模式、您对哪些参数控制 HR 是正确的、我看到 TRM 的措辞也可能具有误导性。  让我在明天我们回到办公室时与另一位 HRPWM 专家讨论 TRM 描述、我将修改之前发表的此主题、以便也进行澄清。

    此致、

    艾里森

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

    您好、Runhao、

    我 仍在努力澄清这一信息措辞,并将尽快更新。

    我还想问一下上面的屏幕截图来自什么文档? 它们看起来与我目前在 F2833x TRM (https://www.ti.com/lit/pdf/sprui07)中看到的不同。  

    此致、

    艾里森

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

    尊敬的  Allison:

    很抱歉、我错误地说出了 TRM 的名称。 我上面的屏幕截图中的 TRM 是 TMS320F2802x 的 TRM、其中包含 TBPRDHR 的相关描述、这正是我对高分辨率周期和高分辨率占空比的调整感到困惑的地方

    我对我的疏忽所引起的疑虑深表歉意,但请详细回答我的问题。

    此致、

    润浩

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

    您好、Runhao、

    完全不用担心! 我只是在检查一下、以确保我们看到的是同一份文档。 只是为了更新一下、我一直在内部对 TRM 措辞进行一些讨论、并同意这令人困惑。 我仍在努力获得明确的答案、并在尝试提供详细解释之前联系设计以确保正确无误。 对于这种困惑、我们深表歉意、同时感谢您的耐心等待。 请随时在 E2E 上向我发送朋友申请并发送给 PM。

    此致、

    艾里森