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:何时 AQCTLA 寄存器上的 SW 更新值处于活动状态?

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1208789/tms320f28335-when-is-sw-updated-value-is-active-on-a-aqctla-register

器件型号:TMS320F28335

尊敬的专家:

我对 AQCTLA 寄存器有疑问。

AQCTLA 寄存器的 SW 更新值何时有效?

例如、我们的软件会更新 AQCTLA 寄存器中的值、以及新的计时值(ZRO、PRD、CAD、CAU、...) ?   

EPwm1Regs.AQCTLA.All= 0x0090U

它是否立即激活? 或 CTR=0或 CTR=PRD

您能告诉我们更新 AQ 子模块活动设置的时间吗?

此致、

秀彦

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

    尊敬的 Hidehiko-San、

    根据我们的 TRM、有一个表、其中显示了取决于您的计数模式配置的优先级。 执行软件强制事件将具有最高优先级、并会严重影响活动设置。

    此致!

    Ryan Ma

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

    您好、Ryan-San、

    感谢您的信息。

    我们的设置是向上向下双向计数模式。

    和"软件强制事件"使用 AQSFRC 寄存器进行配置。

    我的问题是关于"AQCTLA"寄存器。

    当我的软件更改时,CAU 和 CAD (BITS 字段)是否 会立即更新?

    EPwm1Regs.AQCTLA.All= 0x0090U

    换句话说、当时基计数器当前正在递增计数时、软件会更新 CAD 位字段。

    它会 立即影响事件(CMPA=TBCTR)?

    或者它会影响定时发生的事件(CTR=ZERO)?

    此致、

    秀彦

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

    尊敬的 Hidehiko-San、

    我还不能在我结束时测试这一点 但是、有一篇文章讲述了您所面临的相同器件和情况。

    根据这个用户: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/861218/ccs-tms320f28335-how-to-make-aqctla-take-effect-at-point-c

    它是在 TBCTR = 0时发生的。 您在测试时能否在最终验证? 如果你能够确认这一点、那么很高兴知道这一点。

    此致!

    Ryan Ma

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

    您好、Ryan-San、

    感谢您的信息。

    我的问题与 ePWM 子模块设计规格有关

    因为我没有在技术参考手册中找到说明。

    我需要有关活动计时的详细设计规格。

    大家都知道、ePWM 支持 CMPA 的影子寄存器、并且用户可以配置加载计时。

    然而,没有有关 AQCTLA 的相关描述。

    实际上静态配置不需要这些信息

    但提供了 spraai1.pdf (使用 ePWM 模块实现0%- 100%占空比控制)。 AQCTLA.bit.CAU 和 AQCTLA.bit.CAD 在中断函数中动态更改。

    到目前为止、我认为 AQCTLA  寄存器似乎立即更新了。

    我的实施避免了在计数递减中更改 CAD 和在计数递增中更改 CAU

    因为 CMPA=CTR 事件与 CAU/CAD 发生变化之间无法调整时序。

    在计数递增中、CAU=(无变化)、CAD=(可能的变化)

    在计数递减中、CAU=(可能的变化)、CAD=(无变化)

    此致、

    秀彦

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

    尊敬的 Hidehiko:  

    正如您所知、用于计数器比较的影子寄存器将在发生特定事件时更新。  由于该器件不对像 CMPA 这样的 AQCTLA 使用影子寄存器、因此我假设更新立即发生。 让我在最后对此进行测试、以便进行验证、并使用一些示波器波形返回给您。

    此致!

    Ryan Ma

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

    尊敬的 Hidehiko:  

    正如您所知、用于计数器比较的影子寄存器将在发生特定事件时更新。  由于该器件不对像 CMPA 这样的 AQCTLA 使用影子寄存器、因此我假设更新立即发生。 让我在最后对此进行测试、以便进行验证、并使用一些示波器波形返回给您。

    下面是我的发现

    跳闸中断之前的 ePWM1输出、该中断会更改 AQCTLA

    • 原始设置
    • AQCTLA = 0x0060

    跳闸中断后的 ePWM1输出

    • 更新了、在 CMPA 事件时将输出设置为低电平
    • AQCTLA = 0x0050

    这是 GPIO13连接到 GND 时发生的中断。

    __interrupt void 
    epwm1_tzint_isr(void)
    {
        EPwm1TZIntCount++;
    
        //
        // Leave these flags set so we only take this
        // interrupt once
        //
        // 	EALLOW;
        // 	EPwm1Regs.TZCLR.bit.OST = 1;
        // 	EPwm1Regs.TZCLR.bit.INT = 1;
        //	EDIS;
        EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;             // Set PWM1A on CAU
        EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;           // Clear PWM1A on CAD
        //
        // Acknowledge this interrupt to receive more interrupts from group 2
        //
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
    }

    AQCTLA 寄存器看起来会立即更新。 您是否希望此次"即时"更新的大致时间安排?

    此致!

    Ryan Ma

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

    您好、Ryan-San、

    感谢您的支持。

    但是你的实验条件对我来说并不清楚。

    哪个 ePWM1A 源为低电平、 触发区事件(ISR 源)或 CAU=AQ_CLEAR?

    什么是 CMPA 设置值?

    我相信、您打算进行的实验可能在下面。

    CAU 在 CTR=CMPA 时序之前更新。

    >您是否希望此"即时"更新的时间接近?

    我认为、当软件在 CAU/CAD 寄存器中设置值时、CAU/CAD 激活设置会立即更新。
    我需要 F28335的寄存器规格。 它由 TI 硬件工程师设计。

     

    如果未向用户提供其规格,您能否关闭此问题?

     

    此致、

    秀彦

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

    尊敬的 Hidehiko-San、

    当 GPIO13变为低电平时、当发生跳闸区事件(ISR 源)时、ePWM1a 的源为低电平。 我将该 GPIO 设置为 GND、以触发跳闸 ISR。

    CMPA 设置值设置为3000、TBPRD 为6000。

    没有向用户提供规格、我可以结束此问题。

    谢谢!

    Ryan Ma

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

    您好、Ryan-San、

    感谢您的信息。

    我们将使用"立即更新"规格执行我们的项目。

    此致、

    秀彦