
1. 前言 客户想要使用 STM32L031 产生两个特定的 PWM 波,这两个波形频率相同,占空比相同,但相位不同。经过验证,使用定时器的输出比较模式可以产生这种带相移的 PWM 波形。 下面以 STM32L031 的 TIM2 为例来介绍使用产生相移信号的方法。 2. 概述 在未使能预装载寄存器时(OCxPE=0),使用输出比较模式,可以随时通过软件更新TIM_CCRx 寄存器的值,以控制输出波形。 DMA 的循环模式,可以在最后一次数据传输完成后,自动重新加载初始编程值,内部地址寄存器会重新加载基址值,进入下一个循环。 使用输出比较模式配合 DMA 的循环模式可以不断更新 TIMx_CCR 寄存器的值,从而输出可控的波形。 下面以 NUCLEO-L031 为例介绍产生相移信号的方法。 3. 目标波形 为了便于观察,令 PWM 波的周期为 100ms,占空比为 20%。以 TIM2_CH1 输出的波形的为基准,其为 0 度相移。 ➢ TIM2_CH1: 相移 0 度,占空比为 20% ➢ TIM2_CH2: 相移 90 度,占空比为 20% ➢ TIM2_CH3: 相移 180 度,占空比为 20% ➢ TIM2_CH4: 相移 270 度,占空比为 20% 4. 使用 STM32CubeMX 进行配置 使用 STM32CubeMX 进行基础参数的配置。这里配置时钟为 32MHz,如图 1 所示。 ![]() 配置时钟源为内部时钟,因为 TIM2_CH1 为基准信号,直接配置为 PWM 输出即可。TIM2_CH2、TIM2_CH3 和 TIM2_CH4 配置为输出比较模式,如图 2 所示。 ![]() 配置 TIM2 的预分频值与计数周期,配置计数周期为 100,计数模式配置为"Up"。配置channel1 的模式为"PWM mode 1",因为占空比为 20%,计数周期为 100,所以 CCR1 寄存器配置为 20(也即 Channel1 的 Pulse 配置为"20"),极性配置为"High"。Channel2、 Channel3 和 Channel4 的模式都配置为"Toggle on match"(匹配时翻转电平),极性配置为"low",CCR 不需要配置,因为会通过 DMA 自动写入。具体配置如图 3 所示。 ![]() 添加 TIM2_CH2、TIM2_CH3 和 TIM2_CH4 的 DMA,并进行配置,配置的内容都相同,配置如下: ➢ Direction: Memory To Peripheral ➢ Mode: Circular ➢ Data Width: Word 具体配置如图 4 所示 ![]() 完整版请查看:附件 |
LAT1155_使用输出比较模式产生相移信号_v1.0.pdf
下载428.95 KB, 下载次数: 0
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32定时器同步启动示例及应用提醒
经验分享 | STM32 TIMER+DMA输出PWM异常二案例
经验分享 | 更改STM32定时器周期后的输出疑问分析
基于定时器捕获测量脉宽的应用示例
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法