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.

[参考译文] C2000WARE:针对变频应用同时写入 CMPA 和 TBPRD 寄存器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/998804/c2000ware-simultaneous-writes-to-cmpa-and-tbprd-registers-for-variable-frequency-applications

器件型号:C2000WARE

大家好、F2837xD 器件技术手册中的一段话是:  

"对于变频应用、ePWM 模块之间需要同时写入 TBPRD 和 CMPx 寄存器。 这可防止 CTR = 0或 CTR = PRD 脉冲在 ePWM 模块之间更新所有寄存器之前强制影子到活动加载这些寄存器的情况(导致一些寄存器从新影子值加载、而其他寄存器从旧影子值加载)。 为了支持这一点、在 PWM 模块之间添加了一个针对 TBPRD:TBPRDHR、CMPA:CMPAHR、CMPB:CMPBHR、CMPC 和 CMPD 寄存器的 ePWM 寄存器链接方案。 对于特定的 ePWM 模块# A,用户代码将“B+1”写入 EPWMXLINK 中链接的寄存器位域。 “B”是链接到的 ePWM 模块#(即,对 ePWM 模块“B”TBPRD:TBPRDHR、CMPA:CMPAHR、CMPB:CMPBHR 或 CMPC 的写入将同时写入 ePWM 模块“A”中的相应寄存器)。 例如、如果 ePWM3 EPWMXLINK 寄存器配置为 CMPA:CMPAHR 链接到 ePWM1、则写入 ePWM 1中的 CMPA:CMPAHR 将同时向 ePWM3中的 CMPA:CMPAHR 写入相同的值。 如果 ePWM4还将其 CMPA:CMPAHR 寄存器链接到 ePWM1、那么写入 ePWM 1将向 ePWM3和 ePWM4中的 CMPA:CMPAHR 寄存器写入相同的值。 EPWMXLINK 的寄存器说明明确解释了相应 ePWM 的链接寄存器位域值。"

首先、这是否意味着我们需要仅为了同时加载这两个寄存器而初始化新的 PWM 模块?

C2000Ware 中是否有任何示例、最好使用直接寄存器访问方法、其中显示了如何同时执行此操作?  

如果 CPU 从顶部到底部执行指令、那么同时更新这些寄存器的唯一方法是使用 CLA、还是使用与 CPU 并行运行的东西?

这里是我在 ISR 中的一些代码、它接收来自远程 CPU 的调制信号、远程 CPU 执行它的 CLA、它使用 DF22控制律并将信息传回 CPU1。 然后、我绑定误差信号并以非常简单的方式调制寄存器:

"

中断空 ipc0_ISR (空)

//从远程 CPU 读取 IPC 响应并写入变量
collectorMod =(uint16) IpcRegs.IPCREMOTEREPLY;//读取 IPC ADDR 寄存器上的数据

//将返回的控制值绑定到1到2.1之间
//给出最小和最大频率范围
if (collectorMod < 1)

collectorMod = 1;

if (collectorMod > 2.1)

collectorMod = 2.1;

//根据最小开关频率调整调制输出
collectorMod = collectorMod* RES_PERIOD_MAX;

//调制 谐振转换器的 TBPRD 寄存器
//我们需要使用 PDF 文档中概述的 PWM 链接器方法同时编写 CMPA 和 TBPRD。。。 未在此处完成
RES_PERIOD =集合 Mod;
EPwm4Regs.CMPA.bit.CMPA = RES_PERIODE/2;// CMPA 设置占空比

//从中断返回
IpcRegs.IPCACK.bit.IPC0 = 1;//清除 IPC0位
PieCtrlRegs.PIEACK.all = PIEACK_Group1;//确认 PIE 组1以启用进一步的中断

"

我需要在这项工作中添加哪些内容来同时写入两个寄存器、而不是我现在所采用的方式?

提前感谢!
Joel

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

    您好、Joel、

    摘录中的第一句非常重要、"在 ePWM 模块之间同时写入 TBPRD 和 CMPx 寄存器"。 这句话的意思是、您希望 TBPRD 和 CMPx 同时在不同模块之间更新、而不一定在同一 ePWM 模块内更新 TBPRD 和 CMPx。

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/998804/c2000ware-simultaneous-writes-to-cmpa-and-tbprd-registers-for-variable-frequency-applications "]首先,这是否意味着我们需要仅为了同时加载这两个寄存器而初始化新的 PWM 模块?

    对于您想要链接的任何模块(用于同时进行 TBPRD 和 CMPx 更新)、您必须进行初始化、是的。

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/998804/c2000ware-simultaneous-writes-to-cmpa-and-tbprd-registers-for-variable-frequency-applications 中是否有任何示例、最好是使用直接寄存器访问方法、其中显示了如何同时执行此操作?  [/报价]

    目前没有使用此链接功能的示例、但可以通过为  要链接的每个模块配置 EPWMXLINK 来实现。 例如、您计划将新值写入 EPWM1、同时更新 EPWM2、EPWM3和 EPWM4。 在这种情况 下、您可以将 EPWM2的 EPWMXLINK 配置为连接到 EPWM1、而 EPWM3和 EPWM4的连接也是如此。

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/998804/c2000ware-simultaneous-writes-to-cmpa-and-tbprd-registers-for-variable-frequency-applications ]\n 要使两个寄存器同时写入数据而不是按照我现在的方式写入数据、我需要添加哪些内容?

    如果在初始化过程中配置了链接、那么只需更新主模块的 TBPRD 和 CMPx 值即可。 当影子到活动加载发生时、所有其他模块将获得更新的 TBPRD 和 CMPx 值、如果您启用了影子加载、如果不启用、则会立即发生这种情况。

    此致、

    Marlyn

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

    您好 Marlyn -  


    非常有趣、感谢您的回答。 在本例中、我有两个并行运行的转换器-一个以1MHz 运行、另一个以200-400kHz 运行、但无需同步它们... 即使 ePWM 时钟在很大的不同频率下运行、我是否仍然需要在这些模块之间"同步"它们、如果需要、我是否需要使用此链接功能?

    这两个并联转换器的 PWM 应该独立运行、并且实际上不需要了解彼此的输出/输入。

    祝你一切顺利、

    Joel

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

    您好、Joel、

    [引用 userid="420268" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/998804/c2000ware-simultaneous-writes-to-cmpa-and-tbprd-registers-for-variable-frequency-applications/3690958 #3690958"]这两个并行转换器的 PWM 应该独立运行,并且不需要真正了解彼此的输出/输入。[/引用]

    如果两个 PWM 模块打算独立运行、则不必同步它们。 通常、我们建议您使用 TBCLKSYNC 同时启动时基计数器。 相关信息可在技术参考手册的"时基时钟同步"部分找到。 我们的软件示例实现了这一点、因此您也可以在示例中参考如何实现这一点。

    如果您确实希望在某个时间点同步它们、则应使用 技术参考手册中"时基计数器同步"部分中的时基计数器同步方案。 这将允许您在模块之间添加相移、因为您提到它们以不同的频率运行。

    此致、

    Marlyn

x 出现错误。请重试或与管理员联系。