0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用MAXQ微控制器上的定时器B生成PWM波形

星星科技指导员 来源:ADI 作者:ADI 2023-06-13 16:30 次阅读

本应用笔记介绍如何设置和使用MAXQ®系列微控制器中的定时器B来生成所需的PWM波形。该操作将要求启用比较功能。该说明包括供参考的源代码。

介绍

MAXQ微控制器有三种类型的定时器:定时器0、定时器1和定时器2。定时器B是定时器1的增强版本,经过修改以支持不同的输入时钟预缩放和设置/复位/比较输出功能。本应用笔记详细介绍了如何设置和使用定时器B生成所需波形。包括源代码示例以供参考。

定时器B寄存器及其使用

MAXQ内核通过一组特殊功能寄存器(SFR)配置定时器B:

TBCN—定时器B控制寄存器

TBV — 定时器 B 值寄存器

TBR — 定时器 B 重新加载/捕获寄存器

待定—定时器B比较寄存器

定时器B控制寄存器:待定

定时器B控制寄存器为16位宽,读写不受限制。在所有形式的重置中,它被清除到 0000h。以下是寄存器位配置的简要说明。

位 0:CP/RLD 位用于设置定时器 B 的捕获或重新加载模式。当此位设置为 1 时,计时器 B 处于捕获模式。当此位清除为 0 时,计时器 B 处于重新加载模式。

位 1:ETB 位用于启用定时器 B 中断。将此位设置为 1 将启用来自计时器 B TFB 和 EXFB 标志的中断。

位 2:TRB 位用于启用定时器 B 操作。

位 3:EXENB 位用于启用负事务的 TBB 引脚上的捕获/重新加载功能。在启用输出比较功能的情况下,在自动重新加载模式 (CP/RLD = 0) 下工作时(此模式稍后会很重要),启用 TBB 输入功能 (EXENB = 1) 将允许比较输出负转换以设置 EXFB 标志。但是,由于外部负边缘检测,不会发生重新加载。

位 4:DCEN 位用于启用定时器 B 的倒计时选项。与TBB引脚配合使用,该位控制定时器B计数的方向。将此位设置为 1 会导致定时器 B 在引脚 TBB 为 1 时向上计数,如果引脚 TBB 为 0,则计数。当此位为 0 时,计时器 B 始终计数。启用定时器 B 的比较模式功能后,定时器 B 的上/下计数控制将根据比较模式设置在内部进行控制。在比较模式下,DCEN 位控制定时器是斜坡上升和复位 (DCEN = 0),还是上升和下降 (DCEN = 1)。

位5:TBOE位用于使能TBA引脚上的时钟输出功能。

位 6:EXFB 位用于标记 TBB 引脚上发生负事务的时间。如果 CP/RLD = 0、DCEN = 0 和 TBCS:TBCR = 00b,则每当计时器 B 溢出或下溢时,此位也会切换。

位 7:TFB 位用于在计时器 B 溢出或下溢时设置标志。

第 8-10 位:TBPS2:0用作应用于定时器B时钟的系统时钟输入的预分频器:

定时器 B 时钟 = 系统时钟/(2**(2*TBPS2:0))

TBPS2:0 = 11xb 的值是保留的。

位 11-12:如果 TBCS:TBCR<>00b,则 TBCS:TBCR 位用于在比较模式下配置计时器 B。这些比较模式位定义了几个条件:TBB引脚上是否使能PWM/比较模式输出功能;初始输出起始状态是什么;以及比较模式输出功能是否有效。

位 14-13:保留位

位 15:C/TB 位用于确定定时器 B 是用作定时器还是计数器。

定时器B值寄存器:TBV

定时器B值寄存器是一个16位寄存器,在所有形式的复位时被清除到0000h。此寄存器是不受限制的读/写,用于加载和读取 16 位定时器 B 值。

定时器B捕获/重新加载寄存器:TBR

定时器B捕获/重新加载寄存器是一个16位寄存器,在所有形式的复位时都清除到0000h。此寄存器是无限制的读/写,用于在定时器B配置为捕获模式时捕获TBV值。当定时器B配置为自动重装模式时,此寄存器也用作16位重装值。

定时器B比较寄存器:待定

定时器B比较寄存器是一个16位寄存器,在所有复位形式时都清除到0000h。此寄存器是不受限制的读/写,用于在定时器B在比较模式下运行时将TBC与TBV值进行比较。

定时器B的操作模式

定时器B可通过在定时器B控制寄存器中设置CP/RLD位配置为捕获或重新加载模式。TBCS:TBCR<>00b 的值会将定时器 B 设置为比较模式。没有必要同时配置定时器B捕获模式(CP/RLD=1)和PWM比较输出模式,但是,这不是预期的定时器B操作模式。定时器B也可以配置为比较模式,其中有三种不同的比较功能:复位,设置和切换。

以下部分回顾了在这些不同操作模式下配置计时器 B 的方法。

拍摄模式

定时器B控制寄存器的位0 CP/RLD确定定时器B是使用捕获模式还是重新加载模式。如果控制寄存器的位1 EXENB为3,则将此位设置为1会导致在TBB定时器引脚上检测到下降沿时发生定时器B捕获。将位 3 EXENB 设置为 0 会导致定时器 B 忽略 TBB 引脚上的所有外部事件。捕获的值将加载到重新加载寄存器 TBR 中。

重新加载模式

如果 EXENB 为 0,则清除 CP/RLD 位为 1 会导致在定时器 B 溢出或在 TBB 上检测到下降沿时发生自动重新加载。如果启用了比较功能,则可以通过更改重载(TBR)和比较(TBC)寄存器中的值来修改输出波形的频率和占空比。这样,MAXQ处理器就可以产生脉宽调制(PWM)波形。

比较模式

仅当比较模式位的值不同于 0 时,并且建议计时器 B 处于重新加载模式时,才会启用比较模式。PWM输出可以有选择地使能,起始极性可以反转,具体取决于这些位的值。频率和占空比的限制由选择作为源的时钟(即系统或备用时钟)的频率和所选的时钟除数决定。如上所述,有三种比较模式(SET、RESET和TOGGLE),具有TBB引脚的预定义初始状态。

当 CP/RLD = 0(重新加载模式)和 TBCS:TBCR 的值分别为 01 时,选择比较复位模式。在此模式下,TBB 将在 TBC 匹配时重置并设置为 0000h。根据TBR和TBC寄存器之间的相对值以及上/下计数,定时器将生成不同的PWM波形。如果计时器 B 未实现 TBC,则它只会设置为 0000h。在这种模式下,TBB引脚的初始值为低电平。

当 CP/RLD = 0(重载模式)和 TBCS:TBCR 的值分别为 10 时,选择比较 SET 模式。在此模式下,TBB 将设置在 TBC 匹配并设置为 TBR。根据TBR和TBC寄存器之间的相对值以及上/下计数,定时器将生成不同的PWM波形。如果计时器 B 未实现 TBC,则它只会在 TBR 上重置。在这种模式下,TBB引脚的初始值为高电平。

当 CP/RLD = 0(重新加载模式)和 TBCS:TBCR 的值分别为 11 时,选择比较切换模式。在此模式下,TBB 将打开 TBC 匹配(TBR 或 0000h 除外)。根据TBR和TBC寄存器之间的相对值以及上/下计数,定时器将生成不同的PWM波形。如果计时器 B 未实现 TBC,则它只会打开 TBR 匹配。在这种模式下,TBB引脚的初始值保持不变。

切换模式的初始状态取决于之前的 SET 或 RESET 模式。这意味着要建立特定的启动状态,TBCS:TBCR 位应在从比较禁用更改为比较切换模式时暂时配置为设置或重置。

如上所述,我们对这种用于在定时器B的TBB引脚上产生PWM的比较模式特别感兴趣。PWM波形在很大程度上取决于TBR和TBC之间的相对值(有或没有TBC寄存器)以及DCEN位的值(表1)。

比较模式下定时器B的PWM波形

不带待定寄存器的定时器 B

对于 SET 和 RESET 模式,TBC 比较匹配可能导致的引脚设置/复位永远不会发生。用户只能定义在启用定时器时生效的起始引脚状态。仍然会发生相应 RESET 和 SET 模式的引脚设置或清除操作。对于切换模式,TBR 将用于产生 50% 占空比 PWM。请参阅表 1 和图 1。

待定:TBCR 功能 初始状态(如果 TBR = 0)
00 无(比较禁用) 无变化
01(重置) 设定在 0000h
10 (套) 在TBR匹配时重置
11(切换) 打开 TBR 匹配 无变化

wKgaomSIKSiAdeMfAAAQuvG4UCA979.gif

图1.

设置或清除TBB引脚,分别定时为TBR+1和TBR,用于复位和设置操作。

在周期 50*TBR + 2 处为切换模式生成 2% 占空比。

示例 1:自定时器开启后 1 秒后设置 TBB 引脚(使用 RESET 比较模式)。

定时器B的频率:根据12MHz系统时钟计算定时器B频率。

使用DCEN = 0的复位比较模式来设置TBB引脚。

使用以下公式计算TBR的值以延迟1秒:

示例代码:

   move   TB2CN,#000H      ; Reset Timer B 
   move   TB2CN,#0C00H     ; Timer B clock = system clock/256
                           ; and in compare RESET mode 
   move   TB2R, #46874     ; Set reload value of Timer 2 TBR = 46874            
   move	  TB2V, #0001H     ; Reset TBV=0x01 just to avoid set
                           ; operation on 0000h
   move   TB2CN.2,#1       ; Start Timer B to generate PWM

示例 2:生成一个 1MHz 波形,占空比为 50%,低电平(使用切换比较模式)。(请参阅图 2。

定时器B的频率:根据12MHz系统时钟计算定时器B频率。

使用DCEN = 0的切换比较模式来设置TBB引脚。

使用以下公式计算所需PWM频率为1MHz的TBR值:

示例代码:

   move   TB3CN,#000H      ; Reset Timer B              
   move   TB3CN,#0800H     ; Configure Timer B clock in RESET 
                           ; Compare mode to start LOW
   move   TB3CN,#1800H     ; Timer B clock = system clock
                           ; and in compare TOGGLE mode with DCEN =0 
   move   TB3R, #5         ; Set reload value of Timer 3 TB3R = 5            
   move	  TB3V, #000H      ; Reset TBV=0x00 
   move   TB3CN.2,#1       ; Start Timer B to generate PWM

wKgZomSIKSqAUyUQAAAQPtpq3AM490.gif

图2.

设置或清除TBB引脚,定时分别为2 × TBR和TBR,用于复位和设置操作。

在周期 50 TBR ×为 TOGGLE 模式生成 4% 占空比。

示例3:在1μs延迟后复位TBB引脚(使用SET比较模式)。

定时器B的频率:根据12MHz系统时钟计算定时器B频率。

使用DCEN = 1的设置比较模式来设置TBB引脚。

使用以下公式计算TBR的值以延迟1μs:

示例代码:

   move   TB3CN,#000H      ; Reset Timer B 
   move   TB3CN,#1010H     ; Timer B clock = system clock
                           ; and in compare SET mode with DCEN = 1 
   move   TB3R, #12        ; Set reload value of Timer 3 TB3R = 12            
   move	  TB3V, #000H      ; Reset TBV = 0x00 
   move   TB3CN.2,#1       ; Start Timer B to generate PWM

示例 4:生成一个 1MHz 波形,占空比为 50%,高电平(使用切换比较模式)。

定时器B的频率:根据12MHz系统时钟计算定时器B频率。

使用DCEN = 1的切换比较模式来设置TBB引脚。

使用以下公式计算所需PWM频率为1Mhz的TBR值:

示例代码:

  move   TB2CN,#000H       ; Reset Timer B 
   move   TB2CN,#01000H     ; Configure Timer B clock in SET 
                            ; Compare mode to start HIGH
   move   TB2CN,#1810H      ; Timer B clock = system clock
                            ; and in compare TOGGLE mode with DCEN=1 
   move   TB2R, #3          ; Set reload value of Timer 2 TB2R = 3            
   move	  TB2V, #000H       ; Reset TBV = 0x00 
   move   TB2CN.2,#1        ; Start Timer B to generate PWM

带待定寄存器的定时器 B

当TBC寄存器在计数范围(TBC< TBR)内时,SET和RESET比较功能通过使用TBR重载值来改变频率,基本上提供了相同的功能。切换比较模式允许 50% 占空比 PWM 波形。当TBC寄存器超出范围(TBC> TBR)或在TBC = TBR和TBC = 0的特殊情况下,SET和RESET功能允许定时器清除或设置TBB引脚。请参阅表 2 和图 3。

待定:TBCR 功能 初始状态(如果 TBR = 0)
00 无(比较禁用) 无变化
01(重置) 在待定匹配时重置,设置为 0000h
10 (套) 在待定匹配时设置,在TBR匹配时重置
11(切换) 打开待定匹配(TBR 或 0 除外) 无变化

wKgZomSIMUSAMdXSAADOE1evZeM163.png

图3.

TBC > TBR:设置或清除相应复位和设置模式的 TBB 引脚。切换模式已禁用。

TBC = TBR 或 TBC = 0:请参阅注释1,2和3在下面的示例 8 之后。

TBR <待定:PWM 产生的占空比和周期如下所示:

设置模式 = (TBR - 待定)/(TBR + 1),周期为 TBR + 1

复位模式 = 待定/(TBR + 1),周期为 TBR + 1

切换模式 = 50%,周期为 2 × TBR + 2

示例 5:生成一个 32kHz 波形,占空比为 50%,从高电平开始(使用 SET 比较模式)。

定时器B的频率:这与12MHz系统时钟相同。

使用 DCEN = 0 的 SET 比较模式生成此波形。

使用以下公式计算所需PWM频率为32kHz的TBR和TBC值:

占空比 = (TBR - TBC)/(TBR + 1) = 50% => TBC = 186

示例代码:

 move   TB0CN,#1000H     ; Configure Timer B clock as same as
                          ; system clock and in compare SET mode
  move   TB0C, #00186     ; set compare value of Timer 0 TBC = 186 
  move   TB0R, #00372     ; Set reload value of Timer 0 TBR=372            
  move   TB0V, #0000H     ; Reset TBV=0x00
  move   TB0CN.2,#1       ; Start Timer B to generate PWM

示例 6:生成 512Hz 波形,占空比为 50%,起始为低电平(使用切换模式)。(请参阅图 4。

定时器B的频率:这与12MHz系统时钟相同。

使用DCEN = 0的切换比较模式生成此波形。

使用以下公式计算PWM频率为512Hz的TBR和TBC的值:

占空比 = 50%,不受待定 < 11717 的影响

示例代码:

 move   TB1CN,#0800H     ; Configure Timer B clock in RESET 
                          ; Compare mode to start LOW
  move   TB1CN,#1800H     ; Configure Timer B clock as same as
                          ; system clock and in compare TOGGLE mode
  move   TB1C, #005000    ; Set compare value of Timer 1 TBC = 5000 
  move   TB1R, #011717    ; Set reload value of Timer 1 TBR = 11717            
  move	 TB1V, #0000H     ; Reset TBV=0x00
  move   TB1CN.2,#1       ; Start Timer B to generate PWM

wKgZomSIKTCAPZipAADBLn_gsFI682.gif

图4.

TBC > TBR:设置或清除相应复位和设置模式的 TBB 引脚。切换模式已禁用。

TBC = TBR 或 TBC = 0:请参阅注释1,2和3在实施例8之后。

TBC < TBR:PWM 的周期为 2 × TBR,占空比定义如下:

设置模式 = (TBR - 待定)/(2 × TBR)

复位模式 = 待定/(2 × TBR)

切换模式 = 待定/TBR(高启动)或(TBR - 待定)/TBR(低启动)4

示例7:生成一个32kHz波形,占空比为30%,从低电平开始(使用复位比较模式)。

定时器B的频率:3MHz或系统时钟/4。

使用DCEN = 1的RESET比较模式生成此波形。

使用以下公式计算PWM波形的频率:

占空比 = 待定/(2 × TBR) = 30% => 待定 = 29

示例代码:

  move   TB0CN,#0910H     ; Configure Timer B clock in system
                          ; clock/4, in compare RESET mode, and 
                          ; DCEN = 1
  move   TB0C, #00029     ; Set compare value of Timer 0 TBC = 29 
  move   TB0R, #00049     ; Set reload value of Timer 0 TBR = 49            
  move	 TB0V, #0000H     ; Reset TBV = 0x00
  move   TB0CN.2,#1       ; Start Timer B to generate PWM

示例 8:生成 512Hz 波形,占空比为 40%,从高电平开始(使用切换模式)。

定时器B的频率:这与12MHz系统时钟相同

使用DCEN = 1的切换比较模式生成此波形。

使用以下公式计算PWM频率为512Hz的TBR和TBC的值:

占空比 = 40% 或 TBC/TBR = 0.4 => TBC = 4687

示例代码:

 move   TB1CN,#01000H    ; Configure Timer B clock in SET 
                          ; compare mode to start HIGH
  move   TB1CN,#1810H     ; Configure Timer B clock as same as
                          ; system clock in compare TOGGLE mode
                          ; and DCEN = 1
  move   TB1C, #004687    ; Set compare value of Timer 1 TBC = 4687 
  move   TB1R, #011718    ; Set reload value of Timer 1 TBR=11718            
  move   TB1V, #0000H     ; Reset TBV = 0x00
  move   TB1CN.2,#1       ; Start Timer B to generate PWM

笔记:

1当输出比较功能配置为 SET 模式时,配置 TBC = TBR 将禁用 TBC 比较匹配操作。当TBC = TBR时,计时器不会设置。

2当输出比较功能配置为复位模式时,配置 TBC = 0 将禁用 TBC 比较复位操作。当 TBC = 0 时,计时器不会重置。

3当输出比较功能配置为切换模式时,配置 TBC = 0 或 TBC = TBR 将禁用切换功能。输出PWM将为低电平或高电平,具体取决于TBB引脚的初始启动状态。

4切换模式的初始状态取决于之前的 SET 或 RESET 模式。这意味着当从“比较禁用”更改为“比较切换模式”以建立特定的启动状态时,TBCS:TBCR 位应暂时配置为设置(启动高电平)或重置(启动低电平)。

例子

以上所有示例均在带有定时器B的MAXQ微控制器上执行。该器件有四个定时器 B,其中定时器 0 和 1 具有 TBC 寄存器,定时器 2 和 3 没有。时钟运行在大约12Mhz。

附加说明

当处于DCEN = 1的比较模式下时,无论TBB引脚的当前值如何,定时器始终计数。计时器之所以这样工作,是因为计数方向是在内部控制的。

正常的计数范围将在 0000h 到 TBR 之间进行计数,从 TBR 到 0000h 进行倒计时。注意:与其他计时器一样,此计数从TBR到0FFFFh和从0FFFFh到TBR不同。

三个源时钟预分频器位 (TBPS2:0) 将预标度值设置为 2**(N × 2),其中 N = 0、1、2、3、4 和 5,应用于定时器B 源时钟。

结论

MAXQ微控制器中的定时器B可以提供不同的PWM波形,这取决于TBC和TBR寄存器的相对值以及DCEN位的状态。定时器 B 将在有或没有比较寄存器待定的情况下工作。表1和表2分别总结了不带TBC比较寄存器和带TBC比较寄存器的定时器B输出功能。图1至图4显示了每种特定配置下定时器B引脚TBB上的典型PWM波形。对于所有情况,用户都可以使用定义的公式确定PWM周期和占空比。

审核编辑:郭婷


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117721
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4900

    浏览量

    209906
收藏 人收藏

    评论

    相关推荐

    关于定时器检测PWM波形的问题

    用STM32F103的定时器监测一个PWM波形,用的是TIM3CH2,监测PWM上升沿,监测一次定时器就中断一次.为什么有的时候监测的次数不
    发表于 05-25 10:45

    一个定时器生成多路PWM波形的原理和方法

    `在很多工程应用中,需要使用到PWM波(脉宽调制),例如电机调速、温度控制调整功率等。本文讲述怎么利用单片机的一个定时器生成多路PWM
    发表于 03-30 21:03

    微控制器如何增加PWM模拟通道

    的。设计人员在采用PWM资源时,经常被迫要牺牲一个捕捉/比较通道或定时器通道,因为PWM通道要共用相同的片资源。很多基于微控制器的独立电气
    发表于 07-19 07:22

    16位RISC微控制器MAXQ613资料推荐

    16位RISC微控制器MAXQ613资料下载内容主要介绍了:MAXQ613引脚功能MAXQ613内部方框图
    发表于 03-29 06:45

    带红外模块的16位微控制器MAXQ61C电子资料

    概述:MAXQ61C是一款低功耗、16位MAXQ 微控制器 ,设计用于通用遥控 、消费类电子和白色家电等低功耗产品。器件结合了功能强大的16位RISC
    发表于 04-13 07:16

    16位微控制器MAXQ61H电子资料

    概述:MAXQ61H采用四面QFN32脚封装。是一款低功耗、16位MAXQ 微控制器 ,设计用于通用 遥控 、消费类 电子 和白色家电等低功耗产品。
    发表于 04-13 07:06

    16位微控制器MAXQ613电子资料

    概述:MAXQ613是一款低功耗、16位MAXQ 微控制器 ,设计用于通用 遥控 、消费类 电子 和白色家电等低功耗产品。器件结合了强大的16位RISC
    发表于 04-13 07:35

    16位微控制器具有红外模块MAXQ610电子资料

    概述:MAXQ610是MAXIM公司生产的一款低功耗、16位MAXQ®微控制器,设计用于通用遥控、消费类电子和白色家电等低功耗产品。 MAXQ
    发表于 04-21 07:47

    MAXQ2000微控制器与MAX4397是如何连接的?

    MAX4397是什么?MAXQ2000微控制器与MAX4397是如何连接的?
    发表于 06-04 06:15

    如何使用STM32微控制器的DAC生成音频和波形

    如何使用STM32微控制器的DAC生成音频和波形
    发表于 11-19 06:06

    利用定时器B的比较功能输出PWM波形

    思路:利用定时器B的比较功能输出PWM波形;一、定时器B定时
    发表于 11-29 06:52

    利用MAXQ1103微控制器产生RSA密钥

    利用MAXQ1103微控制器产生RSA密钥 摘要:Maxim的RSA密钥生成库提供了一个简单易用的接口,利用MAXQ1103微控制器
    发表于 04-27 16:12 926次阅读
    利用<b class='flag-5'>MAXQ</b>1103<b class='flag-5'>微控制器</b>产生RSA密钥

    如何使用555定时器来产生PWM

    PWM(脉宽调制) 是当今每个微控制器的重要特性,因为它几乎需要控制电子各个领域的许多设备。PWM广泛用于电机控制,照明
    的头像 发表于 01-25 15:09 5108次阅读
    如何使用555<b class='flag-5'>定时器</b>来产生<b class='flag-5'>PWM</b>

    如何使用MAXQ微控制器上的定时器B生成PWM波形

    MAXQ微控制器有三种类型的定时器定时器0、定时器1和定时器2。
    的头像 发表于 02-20 13:44 545次阅读
    如何使用<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>上的<b class='flag-5'>定时器</b>B<b class='flag-5'>生成</b><b class='flag-5'>PWM</b><b class='flag-5'>波形</b>

    使用MAXQ系列微控制器中的定时器

    MAXQ定时器0型是仿照许多0微型控制器上常见的定时器8051型。MAXQ定时器1类型仿照805
    的头像 发表于 03-02 13:56 593次阅读
    使用<b class='flag-5'>MAXQ</b>系列<b class='flag-5'>微控制器</b>中的<b class='flag-5'>定时器</b>