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:TMS570LS3137 (HALCoGen 生成)中对 N2HET 的澄清

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1504167/tms570ls3137-clarification-on-n2het-in-tms570ls3137-halcogen-generated

器件型号:TMS570LS3137

工具/软件:

大家好:

我目前正在使用 TMS570LS3137微控制器上的 N2HET 外设。 在查看技术参考手册以了解 N2HET 模块的功能后、我探讨了 HALCoGen 生成的代码、以了解如何实现 PWM 和其他时序功能。 但是、我遇到了一个无法理解的部分。

具体而言、pwmStart该函数中使用了以下代码:

void pwmStart (hetRAMBASE-t * hetRAM、Uint32 PWM)

hetRAM->Instruction[(PWM << 1U)+ 41U].Control |= 0x00400000U;
}

我试图理解表达式背后的逻辑[(pwm << 1U) + 41U]。 我假设pwm参数指的是特定的 PWM 通道、但我找不到明确的文档来解释为什么索引计算是以这种方式完成的、或者它如何映射到用于控制 N2HET RAM 中 PWM 行为的实际指令。

此外、我想详细了解如何确定用于启动/停止 PWM 或读取边沿计数器等操作的 HET 指令索引。 本参考手册提供了说明详情、但似乎没有说明如何组织或访问这些信息。

有人能解释一下:

  1. 如何(pwm << 1U) + 41U确定指令索引(例如)?

  2. PWM 通道和指令 RAM 位置之间的这种映射是在哪里定义的?

  3. 如何与 N2HET 指令集正确连接、以执行启动/停止 PWM 或读取计数器等操作?

非常希望对文档/示例作出任何澄清或指出。

提前感谢!

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

    尊敬的 Berat:

    实际上、从指令41开始、将有一个 MOV64指令、这将有助于修改 PWM 的控制和数据值。

    每个 PWM 都将有两条指令、一条用于占空比 更新、另一条用于周期更新。

    如果我们看到 指令41的远程指令值为1、类似地、对于指令43、该值为3、以此类推

    因此、这意味着我们正在升级到此 MOV64指令的值实际上将修改远程位置中的指令。 这用于平滑更新占空比和周期值、我指的是双缓冲。

    例如、如果我们为 pwm0调用以下 API、则意味着我们间接激活指令1中的第22位。

    这意味着我们在 PWCNT 指令的控制字段中设置第22位。

    即"使能引脚操作"。

    默认情况下、该引脚值为零、表示引脚操作处于禁用状态。 这意味着、即使计数器正在运行、也不会有任何引脚操作、这意味着我们在输出引脚上看不到任何 PWM 信号。 因此、当我们为相应的 PWM 调用此"pwmStart"API 时、它将启用引脚操作以在引脚上生成实际 PWM。

    --
    此致、
    Jagadish。