输出比较和脉宽调制功能之间有什么区别?

mbm*_*voy 5 microcontroller stm32

我正在使用 STM32 系列复习微控制器。(特别是使用 STM32F072BDISCOVERY 板)。

我在理解计时器的使用及其各种模式时遇到了一些麻烦。具体来说,“输出比较”(OC)模式有很多选项,“PWM”模式有其他选项。RM0091 参考手册的编写好像它们是两种不同的交替操作模式。我也在使用新的 HAL 驱动程序,并且有不同的 API 可以使用 OC 与 PWM。

但是,在我看来,PWM 基本上是输出比较功能的子集/用例,其中定时器通道配置为直接驱动硬件输出。

我缺少的 OC 和 PWM 模式之间是否有明确的区别?PWM 波形生成以何种方式不是输出比较功能?

小智 6

这个问题很老,但我想知道同样的问题并开始深入研究这个话题。

在 STM32 微控制器中,并非所有定时器都实现了所有功能。我的帖子基于 STM32F030 Timer 1,我相信这是功能最丰富的 4 通道实现(或者至少是几年前)。

计时器基本上充当计数器,具有多种选项,可用于设置计数器时钟的来源、重置方式、周期和计数器方向。这是它实现的所有额外功能的基础,HAL 驱动程序将其称为时基。计数器功能本身与定时器通道无关。

在 STM32 定时器中实现了 1-6 个通道。这些通道可以独立配置,也可以在某些情况下成对配置(用于正交编码器模式等功能)。通道可以配置为输入捕捉或输出比较。输入捕获“侦听”某个事件并将时基计数器保存在 CCRx 寄存器中。输出比较将计数器寄存器与 CCRx 寄存器中给定的设置值进行比较。

所有简单的 I2C/OC 模式和额外功能,如 PWM 输入、输出、霍尔效应传感器接口,都建立在这两种模式之上,它们各自的选项位作用于各种输入/输出多路复用器,关于 OC 模式基本上告诉硬件根据比较器输出(CNT = CCRx,CNT > CCRx)采取什么行动。在这种情况下,PWM 模式让输出模式控制器在计数器寄存器复位(更具体地说,更新事件)时返回到 CNT <= CCRx 状态,而在其他 OC 模式中,输出模式控制器忽略该信号并且可以手动复位,或通过外部信号复位。输出信号是 OCxREF 信号,然后在到达输出引脚之前通过更多的硬件。如果它根本没有输出,因为您可以不将计时器连接到输出引脚。

STM32 定时器很复杂。他们有很多逻辑块和大量的配置寄存器/位,所以我可能错过了一些东西或者完全误读了一些东西。请随时纠正我。


小智 0

输出比较只能产生 50% 的占空比(如果处于切换模式) PWM 可以产生不同的占空比,因为它是定时器中断和输出比较的组合