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.

[参考译文] MSPM0G3507:读取 PWM GPIO 引脚的状态?

Guru**** 2461030 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1480505/mspm0g3507-reading-the-state-of-a-pwm-gpio-pin

器件型号:MSPM0G3507

工具与软件:

嗨、
我需要找到一种方法来确定为 PWM 设置的 GPIO 引脚的状态。
我想我可以读取 GPIOx->DOUT31_0寄存器、但在针对 PWM 进行设置时、这似乎并不反映引脚状态。

此致
安德斯

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

    您需要读取输入寄存器、而不是输出寄存器。

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

    据我所知、你不能这样做。 GPIO 是它自己的引脚功能(PF = 1)、因此当 PF 连接到计时器时、它的状态是断开的。 我在 MSP430计时器中找不到与 SCCI 位等效的 TIMA/TIMG。

    我怀疑您可以使用 ADC 或比较器来感测引脚的状态、因为"到模拟外设"路径独立于 PF [参考 TRM (SLAU846B)图10-1]。 我想会有一些延迟。 [我还没有试过。]

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

    是的、Bruce、您是对的。 IOMux 反向会断开与 IN 寄存器的连接。

    另一个选项是将 PWM 端口馈入另一个 GPIO、并按此方式读取。

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

    我尝试做的实际上有点复杂...
    我已经设置了四个计时器来生成 PWM 信号、但它们之间存在90度相移。
    我正在使用中心对齐 PWM、因为这使我能够使用第一个计时器上的第二个通道来生成零、CCU1、LOAD 和 CCD1上的事件。
    这些事件对应于四个 PWM 各自占空比的中间、并将触发 ADC 以重复对四个通道进行采样、并在四个采样后生成中断。
    但是、我想找到一种确保同步的方法、这样我就不会意外地在 ADC 采样发生移位的情况下结束、因此它会在错误的时间进行采样-这可能是在 PWM 关闭期间...
    因此、我需要设法找到一种快速有效的方法来确定最后触发这四个事件中的哪一个。 另一种选择是比较两个计时器的引脚、以查看它们在 ISR 期间是否具有预期状态、但如果占空比较大、则可能无法实现。
    有什么建议吗?

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

    我不确定我是否了解您的信号看起来是什么样子的、或者您要检查的内容、但是:

    特别是对于 PWM (输出)、一项相当简单的检查就是将 CTR 值与 CC0值进行比较、实际上用作定时器比较器。 这不会检查实际引脚、因此不会考虑故障或其他输出特性。 它缺乏优雅,它弥补了低成本。