作者:Warren Miller
定时器和计数器可能是 MCU 设计中最普遍的外设。几乎任何应用程序都可以使用定时器或计数器来提高性能、降低功耗或简化设计,方法是用简单的定时器或计数器中断代替重复或循环的 CPU 操作。但是,您可能没有使用过一些较新的定时器/计数器单元,而现在可用的一些高级功能可以进一步改进您的设计。本文将通过来自流行 MCU 系列的说明性示例快速回顾一些可用于改进设计的新定时器/计数器功能,特别强调自主操作和电机控制的功能。
定时器和计数器模式:从简单到高级
定时器和计数器从一些非常简单的操作模式开始,以取代用于计算外部事件、计时内部和外部操作以及收集关键 MCU 操作的各种统计数据的通用程序循环。Maxim MAXQ612中的特性说明了一些最熟悉的计数模式MCU 和一些示例如下图 1 所示。该图底部的表格显示了定时器B、MAXQ612定时器/计数器模块的三种常见自主操作模式:自动重载、捕获和pp/递减计数。右上图显示了自动重载模式的框图。TImer B 的时钟输入可以来自一个时钟预分频器,它可以用八种不同的设置对系统时钟进行分频,或者来自一个外部引脚。控制位 TRB 启用或禁用定时器 B 操作。定时器值寄存器 (TVB)在计时并达到定时器 B 重载寄存器 (TBR) 中存储的值并产生中断并将 TVB 复位为零时向上计数。这提供了一种简单的方法来创建延迟,而无需使用宝贵的 CPU 周期来创建延迟。
图 1:Maxim MAXQ612 MCU 示例计数器/定时器模式。(由马克西姆提供)
图 1 右上角的框图说明了捕获模式的操作。在这种模式下,时钟预分频器和启用/禁用功能与自动重载模式相同。TBV 寄存器在溢出并产生可选中断时向上计数并复位为零。在外部引脚 TBB 的下降沿,TBV 寄存器中的值被加载到捕捉寄存器 TBR 中,并且可以产生中断 EXFB。此模式可用于计算外部信号上升沿之间的时钟数以确定信号频率或信号延迟。因此,计时器将 CPU 从执行周期密集型计数操作中解放出来,因此它可以更有效地完成真正需要的任务。
MAXQ612支持其他几种常见的定时器/计数器操作,例如向上/向下自动重载,外部引脚控制计数器的方向。此模式有助于解码各种脉宽调制信号,例如用于机电传感器的信号。时钟输出模式可用于使用系统时钟、预分频器和定时器 B 的终端计数来创建简单的输出时钟。最后,脉冲宽度调制 (PWM) 输出模式可以生成边沿对齐信号用于常见的 PWM 应用,例如用于电机控制的应用。
用于电机控制的 PWM 计数器/定时器功能
一些最先进的定时器/计数器功能用于电机控制的 PWM 应用。这些计数器使用专用硬件尽可能多地实现与电机相关的 PWM 功能,以释放处理器以执行更高级别的功能。电机控制 PWM 计数器/定时器的基本操作在大多数制造商实现中都很常见,而NXP LPC 17xx PWM 定时器中的那些实现提供了一个很好的示例,该定时器针对三相交流和直流电机控制应用进行了优化。如图 2 所示,电机控制 PWM 模块的功能可能看起来相当复杂,直到您意识到基本 PWM 定时器通道存在三个副本;一个在左边,一个在中间,一个在右边。拥有三个通道可以使用单个定时器/计数器来控制三相电机,从而实现非常有效的实施。每个通道控制一对输出,而这些输出又可以控制芯片外的某些东西,例如电机中的一组线圈。每个通道都包含一个定时器/计数器 (TC) 寄存器,该寄存器由处理器时钟(定时器模式)或输入引脚(计数器模式)递增。
图 2:NXP LPC 17xx PWM 定时器/计数器。(恩智浦提供)
每个通道都有一个与 TC 值进行比较的限制寄存器,当发生匹配时,TC 会以两种方式之一“复位”。在边沿对齐模式下,TC 复位为 0,而在中心模式下,匹配将 TC 切换为在每个处理器时钟或输入引脚转换时递减,直到达到 0,此时它再次开始向上计数。
每个通道还包括一个匹配寄存器,其保存的值小于限制寄存器。在边缘对齐模式下,只要 TC 与匹配或限制寄存器匹配,通道的输出就会切换,而在中心对齐模式下,它们仅在匹配匹配寄存器时才会切换。因此,限制寄存器控制输出的周期,而匹配寄存器控制输出在每个状态中花费的每个周期的多少。如果将输出集成到电压中,则限制寄存器中的值较小可以最大限度地减少纹波,并允许电机控制 PWM 定时器控制高速运行的设备。
所有这些通道硬件元件共同控制两个输出,A 和 B,它们可以驱动一对晶体管在两个电源轨之间切换控制点。大多数情况下,两个输出具有相反的极性,但可以启用死区功能(基于每个通道)以延迟两个信号从无源状态到有源状态的转换,从而使晶体管永远不会同时开启。每个输出对的状态可以被认为是高、低和浮动或向上、向下和中心关闭。每个通道从有源和无源到高低的映射都是可编程的,并且每个通道都可以执行边缘对齐和中心对齐的脉宽调制。图 3 显示了输出配置的两个示例。左边的那个是中心对齐的,没有任何死区时间。
图 3:NXP LPC17xx 电机控制 PWM 定时器/计数器示例输出配置。(恩智浦提供)
电机控制 PWM 定时器还包括多个中断源,以便于通知处理器需要更高级别的电机控制功能。这些中断是按通道组织的,可以指示 TC 何时与匹配寄存器匹配、TC 何时与限制寄存器匹配、通道何时将 TC 的值捕获到其捕获寄存器或中止输入何时有效。LPC17xx 还具有多个支持外设,可简化高级控制功能,包括正交编码器接口、附加 PWM 模块、中断定时器和看门狗定时器。这种种类繁多的专用时序功能表明时序功能对于基于 MCU 的设计变得多么重要。
其他专门的计时功能
在许多现代 MCU 上,随着制造商针对特定应用领域,计时和计数功能变得越来越专业化。例如,飞思卡尔KineTIs K10 系列(如MK10DN512ZVLQ10)具有多种具有专门功能的计时和计数外设。这些外设包括: 可编程延迟块,用于控制 ADC 和 DAC 操作,使处理器免于管理这些低级进程;灵活的定时模块,提供多个定时、计数、输入捕捉和输出比较通道,以支持照明和电动机的电源管理和控制;可以自主管理外设中断和 DMA 传输的周期性中断定时器;一个非常低功耗的定时器,即使在 MCU 处于最低功耗状态时也可以运行,以提供简单的周期性“唤醒”事件;实时时钟,保持准确时间,甚至在MCU完全断电时也可以使用电池供电,方便获取系统运行和寿命数据。
K10 系列还提供专用于特定模块的专用时钟和计时功能,因此不会消耗其他计时资源。例如,用于创建各种信号编码方案(如红外线通信中的协议)中使用的协议的载波调制器发射器模块具有自己的专用定时和计数功能,很像脉宽调制计数器,管理与频移键编码方案相关的脉冲宽度变化。随着 MCU 变得更加特定于应用和细分市场,这种专用计时和计数功能的趋势预计将继续下去。
开发套件加快上市时间
随着 MCU 变得更加特定于应用,制造商正在创建更多面向应用的开发套件和参考设计。电机控制应用可能是特定应用套件最常见的示例之一。举个例子,瑞萨电子提供了一套完整的电机控制开发套件,YMCRPRX62T如图 4 所示,其中甚至包括一个示例电机。该套件随附您在多个电机控制设计中评估瑞萨电子 RX62T MCU 所需的所有软件和示例设计。由 PC 托管的演示图形用户界面显示电机速度、电压和电流,同时允许用户调整参数和算法以直接查看各种结果,以帮助调整电机运行,从而在特定设计中获得最佳结果。许多其他制造商也提供具有与瑞萨 RX62T 类似功能的电机控制评估套件。寻找与您的目标应用和开发环境最匹配的套件,以利用制造商“捆绑”的大量工作来帮助您加速下一个电机控制设计。
定时器和计数器是 MCU 最熟悉的外设,但充分利用它们可以确保您节省功耗、提高性能并简化您的设计。本文讨论了一些新的和高级的特性,这些特性使得以不常见的方式利用这些常见元素成为可能。