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.

[参考译文] TM4C123GH6ZXR:PWM 频率控制和加载寄存器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1353021/tm4c123gh6zxr-pwm-frequency-control-and-load-register

器件型号:TM4C123GH6ZXR

我们目前正在使用 TM4C123GH6ZXR 微控制器来调节步进电机通过 PWM 信号的运动、从而控制电机步进的时序和持续时间。 不过、当我们尝试调整时序来调整一个电机转速时、我们会遇到一个难题。 改变 PWM 信号的时序以减慢一个电机的速度会无意中干扰其移动精度。 例如、如果我们的目标是通过缩短信号"开启"状态的持续时间来降低速度、则电机可能会因时序突变而跳过阶跃或超过目标速度。 我们使用基于 PWM0的第1代及其两个通道 M0PWM2和 M0PWM3、因此加载寄存器通用为"LOAD1"。 我们要求将 LOAD 寄存器值更改为控制步进电机的总时间。 我们必须在向上/向下计数模式下使用 PWM、因为步进驱动器会检测步进电机微动运动的上升沿。 所以、有没有办法为负载寄存器生成单独的加载值、以便为步进电机生成单独的时序。 我们的问题与 PWM 中发生器的加载寄存器有关。 例如、PWM0 Gen0有 LOAD0寄存器、而这个 Gen0有两个通道 OUT0和 OUT1、因此数据表中提到我们无法更改通道的或时序输出。 假设我已将800值加载到 LOAD0寄存器中、因此该值将同时应用于两个通道。 我们不能控制同一发生器上每个通道的 LOAD0寄存器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="603582" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1353021/tm4c123gh6zxr-pwm-frequency-control-and-load-register "]如果我们的目的是通过缩短信号"开启"状态的持续时间来降低速度,则由于时序突变,电机会跳过步进或超过目标[/报价]

    您好!

     我想您正在更改 PWM 的比较器值以控制 PWM 的占空比、对吗?

    Unknown 说:
    我们使用的是基于 PWM0的 Gen1及其双通道 M0PWM2和 M0PWM3、因此 load 寄存器通用为"load1"。 我们要求将 LOAD 寄存器值更改为控制步进电机的总时间。 [/报价]

    我有点困惑。 您在这里说您要更改加载值。 装载值控制 PWM 的周期、而不是占空比。 是否要更改 PWM 的占空比和/或周期?

    Unknown 说:
    假设我已经将800个值加载到 LOAD0寄存器中、这样该值将同时应用于两个通道。 是否确实无法控制同一发生器上每个通道的 LOAD0寄存器。

    没错。 加载寄存器是两个通道共用的。 如果您看一下每个发生器的方框图、会发现只有一个加载寄存器和两个 CMPx 寄存器。  

    更改 PWM 信号的时序以减慢一个电机的速度意外地破坏其移动精度。 [/报价]

    无论您是动态更改占空比还是周期、都应应用同步(本地同步或全局同步、具体取决于您使用的是一个 PWM 发生器还是多个发生器) 以便在 PWM 周期完成之前、加载或 CMPx 寄存器的更新不会生效。

    [/quote]