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.

[参考译文] TMS570LS1224:N2HET + HTU:如何在不同的正弦频率之间实现切换?

Guru**** 2553260 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/995191/tms570ls1224-n2het-htu-how-to-implement-switching-between-different-sine-frequencies

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

您好!

根据应用手册 https://www.ti.com/lit/an/spna217/spna217.pdf 、我们成功地在其中一个 HET 引脚上生成了一个正弦波。
我们还成功地使用自动切换功能在具有全幅值的正弦波和具有半幅值的类似正弦波的周期之间进行了切换。 (通过 HTU 缓冲器 A 和 B 分配的缓冲器)。

我们要实现的目标是能够在 CPU 控制的过零时在不同的正弦波(略微不同的频率)之间切换。

在尝试这种方法时、我们遇到了一些挑战:

-为了获得频率稍有不同的正弦波,我们创建了具有不同采样量的表。 然而、似乎不可能使用具有不同表长度的 HTU? (例如、缓冲器 A 具有128个样本、缓冲器 B 具有120个样本)。 是否有办法实现这一点?

如何使用 CPU 信号在过零时在正弦波之间切换? 是否有可用的中断(例如、在自动切换可能发生的位置)? 该速度是否足够快、能够在两个正弦之间无缝切换?

我们参考 TMS570 techref 手册以及应用手册217和485。
如果有其他有用的相关资源、我们很乐意查看它们。

谢谢。

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

    Geert、您好!

    您可以通过以下方式调整正弦波的频率:

    1、改变 PWM 频率:这可以通过改变 CNT_MAX_PERIOD 来实现。 CNT_MAX_PERIOD 由 CNT 指令使用、这是本应用手册中 NHET 代码的第一条指令。

    2.更改样本数。

    两者都可以动态更改。  

    可调用 configiNHET1()函数以更改 CNT 指令的最大数量:

    hetRAM1->Instruction [Phet_L00_0].Control =(uint32)(CNT_MAX_PERIOD - 1)|

    如果增加或减少采样数、则需要重新初始化 HTU (帧计数和 DMA 传输的源地址)。

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

    您好 QJ、

    我们在 CNT_MAX_PERIOD 上尝试了您的建议。 我们看到频率发生变化、但由于随机时刻更改频率、我们不会从一个波到另一个波的清晰转换。

    如果我们正确理解《TechRefManual》、 当 CP A 和 CP B 完成读取时、应该可以触发 HTU BFINTS 寄存器的中断。我们可以使用该中断来切换 CNT_MAX_PERIOD、也可以将 CP A 和 B 置入自动切换状态、并替换两个缓冲区1的内容 一次使用中断来获得新的频率正弦波。

    但是、我们看不到在哪里可以找到用于此 HTU BFINTS 功能的中断处理程序? 可以通过某种方式创建它吗?

    或者是否有更好的方法来处理此问题?

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

    您好!

    当计数器达到 PWM_PERIOD 值时、由 CNT (NHET 代码的第一条指令)的请求触发 HTU 传输。 您可以启用 HTU 缓冲区满中断并在此中断处理程序中更改 PWM 频率。

    我没有处理 HTU 中断的示例。

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

    您好!

    我们尝试从汇编器代码触发 N2HET 中断、以查看这是否有用。

    在汇编器代码中、我们在指令1 (第二行)上设置 IRQ_ON。

    在 HET2标签页上的 Halcogen 中、我们为 Address1启用了中断。 (未使用 HET1)
    我们还启用了 VIM 通道10和24 (HET HI 和 LO)。
    HET2是否正确?

    因为在编译时、我们会得到"未解析符号 het1HighLevelInterrupt、首先在./source/sys_vim.obj 中引用"、而 LowLevelInterrupt 也是如此

    中断处理程序被引用、但尚未创建。
    我们如何解决这个问题?
    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="341958" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/995191/tms570ls1224-n2het-htu-how-to-implement-switching-between-different-sine-frequencies/3684387 #3684387"]HET2的选项卡页面上的 Halcogen 中、我们为 Address1启用了中断。 (未使用 HET1)
    我们还启用了 VIM 通道10和24 (HET HI 和 LO)。
    对于 HET2、这是正确的吗?[/quot]

    否 VIM 通道63和通道73用于 NHET2

    [引用 userid="341958" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/995191/tms570ls1224-n2het-htu-how-to-implement-switching-between-different-sine-frequencies/3684387 #3684387"]"未解析符号 het1HighLevelInterrupt、首次在./source/sys_vim.obj 中引用"[/quot]

    由于未启用 NHET1,HAL 不会为 NHET1生成代码,包括 针对 NHET1的 ISR het1HighLevelInterrupt()  

    请取消选中 VIM 通道10和24、并选中 VIM 63和73、因此 HAL 将生成  het2HighLevelInterrupt (0和 het2LowLevelInterrupt ()。