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.

[参考译文] TMS570LS3137:中心对齐 PWM ADC 触发器-重新加载

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/634756/tms570ls3137-center-aligned-pwm-adc-trigger---reloaded

器件型号:TMS570LS3137

大家好(希望大家好、Anthony)、

这是 https://e2e.ti.com/support/microcontrollers/c2000/f/902/t/477694?tisearch=e2e-sitesearch&keymatch=hercules%20Center%20align 的后续操作
我从给定的 pwm3ph 示例开始、设法更改极性(我有一个低电平有效的 HW 驱动器接口)、并通过主 CPU 在"正常"程序流程中设置所有所需的值。

但是、我遇到了一个直到现在我才能够解决的问题:

HET 程序在 START 标签上启动,它启用了所有功能:定时器、PWM 输出、ADC 触发...
我需要的是 一个永久运行的计时器、用于随时执行 ADC 转换和中断触发等操作、但 PWM 输出需要单独启用。
我想使用 HET 的引脚输出寄存器来实现这一点、但它不同步。

或者、使用第二条 CNT 指令是一种方法吗? 但如何同步两个计时器?

有什么好的想法或解决方案可以解决这个问题(我认为什么可能是"标准"问题)?

谢谢、
Ralph

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

    您好 Ralph、

    该代码包含多条指令(mov32) 、用于更新远程位置的数据字段值和选定的 ALU 寄存器。 MOV32不修改远程地址的控制字段。 但 MOV64可以修改已归档的数据和已归档的控制数据。 请将 MOV32替换为 MOV64、以了解以下更新说明:

    ;从 PERCLR 跳转
    HPUPDATES:
              MOV64{type=IMTOREG&REM、reg=none、remote=AHIOFFPIN、data=0、hr_data=0}
    NXTALOON  MOV64{type=IMTOREG&REM、reg=none、remote=AOONPIN、data=0、hr_data=0}
    NXTBHIOFF  MOV64{type=IMTOREG&REM、reg=none、remote=BHIOFFPIN、data=0、hr_data=0}
    NXTBLOON  MOV64{type=IMTOREG&REM、reg=none、remote=BLOONPIN、data=0、hr_data=0}
    NXTCHIOFF  MOV64{type=IMTOREG&REM、reg=none、remote=CHIOFFPIN、data=0、hr_data=0}
    NXTCLOON  MOV64{type=IMTOREG&REM、reg=none、remote=CLONPIN、data=0、hr_data=0、 NEX=PWMPINS}

    并使用此类命令禁用 A 相的 PWM 输出

    hetRAM-> Instruction [Phet_NXTAHIOFF_0].Control &=~(uint32) 0x00400000U;

    其中、Phet_NXTAHIOFF_0是在 pwm3ph.h 中定义的指令78

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

    您好、QJ Wang、

    感谢您的输入、这指向正确的方向。
    但是、仍然存在一些问题:与 MOV32相比、MOV64的语法稍有不同。
    类似的东西
    nxtAHIOFF  MOV64{en_pin_action=on、comp_mode=ecmp、reg=T、pin=PHAHI_SH、action=set、 COND_addr=AHIOFFCLR、REMOVE_=AHIOFFPIN、DATA=0、hr_data=0}
    将是语法正确的、但不能按预期工作。
    我不确定如何实现我希望实现的目标:MOV64将修改远程地址的控制位、好的。
    但是、我只想将 en_pin_action 更改为 off、而是"永久"、直到主 CPU 再次将其更改为 on。

    仍在为 HET 而挣扎...

    谢谢、
    Ralph

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

    我的理解是、您需要通过 CPU 命令手动打开/关闭 PWM 输出。 MOV64复制整个控制字段和数据字段、而不是特定的位字段。

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

    您好、QJ Wang、

    MOV64不能按预期工作: 我可以     将远程地址的 ENABLE_PIN_ACTION 位从0更改为1并返回、但该引脚将不再切换。 因此、我怀疑其他一些控制位是错误的。 还有其他源使用相同的远程地址、因此可能会发生冲突...

    此致、

    Ralph