广东湘恒智能科技有限公司
主营产品: 西门子PLC代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
SIEMENS云南省昭通市(授权)西门子代理商——西门子西南总代理

2定时器输出PWM原理

如下图是PWM输出的原理示意图:

假设定时器工作模式设置为向上计数 PWM模式,且当 CNT<CCRx 时,输出 1,当 CNT>=CCRx 时输出 0,则:

当 CNT 值小于 CCRx 的时候, IO 输出高电平 (1)

当 CNT 值大于等于 CCRx 的时候,IO 输出低电平 (0)

当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。

因此,改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的周期(频率),这就是利用定时器输出PWM 的基本原理。


3
定时器常用的寄存器

使用定时器来输出PWM时,需要对其寄存器进行相应的设置。定时器的寄存器有好多个,这里先介绍几个与输出PWM相关的几个寄存器,其它是寄存器以后用到时再介绍。

3.1 控制寄存器CR1

控制寄存器,就是来设置定时的工作模式:

位 15:10 保留,必须保持复位值。

位 9:8 CKD:时钟分频 (Clock division)此位域指示定时器时钟 (CK_INT) 频率与数字滤波器所使用的采样时钟(ETR、TIx)之间的分频比,

位 7 ARPE:自动重载预装载使能 (Auto-reload preload enable)

0:TIMx_ARR 寄存器不进行缓冲

1:TIMx_ARR 寄存器进行缓冲

位 6:5 CMS:中心对齐模式选择 (Center-aligned mode selection),包括1种边沿对齐模式与3种中心对齐模式

位 4 DIR:计数器方向 (Direction),0为递增计数,1为递减计数。

注:当定时器配置为中心对齐模式或编码器模式时,该位为只读状态。

位 3 OPM:单脉冲模式 (One-pulse mode)

位 2 URS:更新请求源 (Update request source)

此位由软件置 1 和清零,用以选择 UEV 事件源。

位 1 UDIS:更新禁止 (Update disable)此位由软件置 1 和清零,用以使能/禁止 UEV 事件生成。

位 0 CEN:计数器使能 (Counter enable),0为禁止计数器,1为使能计数器

只有事先通过软件将 CEN 位置 1,才可以使用外部时钟、门控模式和编码器模式。而触发模式可通过硬件自动将 CEN 位置 1。在单脉冲模式下,当发生更新事件时会自动将 CEN 位清零。

3.2 捕获/比较模式寄存器CCMR1

这些通道可用于输入(捕获模式)或输出(比较模式)模式。通道方向通过配置相应的 CCxS 位进行定义。此寄存器的所有其它位在输入模式和输出模式下的功能均不同。对于任一给定位

OCxx 用于说明通道配置为输出时该位对应的功能

ICxx 则用于说明通道配置为输入时 该位对应的功能

因此,必须注意同一个位在输入阶段和输出阶段具有不同的含义。

这里仅先介绍输出模式下的功能:

位 15 OC2CE:输出比较 2 清零使能 (Output compare 3 clear enable)

位 14:12 OC2M[2:0]:输出比较 2 模式 (Output compare 2 mode)

位 11 OC2PE:输出比较 2 预装载使能 (Output compare 2 preload enable)

位 10 OC2FE:输出比较 2 快速使能 (Output compare 2 fast enable)

位 9:8 CC2S[1:0]:捕获/比较 2 选择 (Capture/Compare 2 selection)参考下面的CC1S通道1

位 7 OC1CE:输出比较 1 清零使能 (Output compare 3 clear enable)

OC1CE:输出比较 1 清零使能 (Output Compare 1 Clear Enable)

0:OC1Ref 不受 ETRF 输入影响

1:ETRF 输入上检测到高电平时, OC1Ref 立即清零。

位 6:4 OC1M:输出比较 1 模式 (Output compare 1 mode)一共可配置位7种模式,这里仅介绍2种:

110:PWM 模式 1––在递增计数模式下,只要 TIMx_CNT<TIMx_CCR1,通道 1 便为有效状态,否则为无效状态。在递减计数模式下,只要 TIMx_CNT>TIMx_CCR1,通道 1 便为无效状态 (OC1REF=0),否则为有效状态 (OC1REF=1)。

111:PPWM 模式 2––在递增计数模式下,只要 TIMx_CNT<TIMx_CCR1,通道 1 便为无效状态,否则为有效状态。在递减计数模式下,只要 TIMx_CNT>TIMx_CCR1,通道 1 便为有效状态,否则为无效状态。

位 3 OC1PE:输出比较 1 预装载使能 (Output compare 1 preload enable)

0:禁止与 TIMx_CCR1 相关的预装载寄存器。可随时向 TIMx_CCR1 写入数据,写入后将立即使用新值。

1:使能与 TIMx_CCR1 相关的预装载寄存器。可读/写访问预装载寄存器。TIMx_CCR1 预装载值在每次生成更新事件时都会装载到活动寄存器中。

位 2 OC1FE:输出比较 1 快速使能 (Output compare 1 fast enable)

此位用于加快触发输入事件对 CC 输出的影响(仅当通道配置为 PWM1 或 PWM2 模式时,OCFE 才会起作用)。

0:即使触发开启,CC1 也将根据计数器和 CCR1 值正常工作。触发输入出现边沿时,激活CC1 输出的最短延迟时间为 5 个时钟周期。

1:触发输入上出现有效边沿相当于 CC1 输出上的比较匹配。随后,无论比较结果如何,OC 都设置为比较电平。采样触发输入和激活 CC1 输出的延迟时间缩短为 3 个时钟周期。

位 1:0 CC1S[1:0]:捕获/比较 1 选择 (Capture/Compare 1 selection)

此位域定义通道方向(输入/输出)以及所使用的输入。

00:CC1 通道配置为输出。

01:CC1 通道配置为输入,IC1 映射到 TI1 上。

10:CC1 通道配置为输入,IC1 映射到 TI2 上。

11:CC1 通道配置为输入,IC1 映射到 TRC 上。此模式仅在通过 TS 位(TIMx_SMCR 寄存器)选择内部触发输入时有效

注:仅当通道关闭时(TIMx_CCER 中的 CC1E = 0),才可向 CC1S 位写入数据。

3.3 计数器CNT

计数器的功能很单一,就是计数:

位 15:0 CNT[15:0]:计数器值 (Counter value)

3.4 预分频器PSC

预分频器的功能也很单一,就是分频:

位 15:0 PSC[15:0]:预分频器值 (Prescaler value)

计数器时钟频率 CK_CNT 等于 fCK_PSC / (PSC[15:0] + 1)。

PSC 包含在每次发生更新事件时要装载到实际预分频器寄存器的值。

3.5 自动重装载寄存器ARR

自动重装载寄存器的功能也很单一,就是保存一个数,在计数满的时候,重新开始计数

位 15:0 ARR[15:0]:自动重载值 (Auto-reload value)

ARR 为要装载到实际自动重载寄存器的值。

当自动重载值为空时,计数器不工作。

3.6 捕获/比较寄存器CCR

自动重装载寄存器的功能也很单一,也是保存一个数,用于与当前的CNT进行比较,注意 TIM2 和 TIM5是32位计数。

以CCR1寄存器(一共有CCR1~CCR4这4个通道)为例:

位31:16 CCR1[31:16]:捕获/比较 1 的高 16 位(对于 TIM2 和 TIM5)。

位15:0 CCR1[15:0]:捕获/比较 1 的低 16 位 (Low Capture/Compare 1 value)

如果通道 CC1 配置为输出:CCR1 是捕获/比较寄存器 1 的预装载值。如果没有通过 TIMx_CCMR寄存器中的OC1PE 位来使能预装载功能,写入的数值会被直接传输至当前寄存器中。否则只在发生更新事件时生效(拷贝到实际起作用的捕获/ 比较寄存器1)。实际捕获/比较寄存器中包含要与计数器 TIMx_CNT进行比较并在 OC1 输出上发出信号的值。

如果通道 CC1 配置为输入:CCR1 为上一个输入捕获 1 事件 (IC1) 发生时的计数器值。



展开全文
相关产品
拨打电话 微信咨询 发送询价