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

本应用笔记介绍如何设置和使用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:tbcr00b,则 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:tbcr00b 的值会将定时器 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 匹配 无变化
图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
图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)或在tbc = tbr和tbc = 0的特殊情况下,set和reset功能允许定时器清除或设置tbb引脚。请参阅表 2 和图 3。
待定:tbcr 功能 初始状态(如果 tbr = 0)
00 无(比较禁用) 无变化
01(重置) 在待定匹配时重置,设置为 0000h 低
10 (套) 在待定匹配时设置,在tbr匹配时重置 高
11(切换) 打开待定匹配(tbr 或 0 除外) 无变化
图3.
tbc > tbr:设置或清除相应复位和设置模式的 tbb 引脚。切换模式已禁用。
tbc = tbr 或 tbc = 0:请参阅注释1,2和3在下面的示例 8 之后。
tbr 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%,不受待定 tbr:设置或清除相应复位和设置模式的 tbb 引脚。切换模式已禁用。
tbc = tbr 或 tbc = 0:请参阅注释1,2和3在实施例8之后。
tbc 待定 = 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周期和占空比。


NASA和美国森林管理部门正在使用图像传感器来获取野火图像
串联谐振电路的工作原理及案例分析
百度大脑5.0实现史上最大升级 发布远场语音交互芯片“鸿鹄”
卷土重来的UWB胜算几何?
2023工业互联网展会“5G+工业互联网”赋能数字经济高质量发展
如何使用MAXQ微控制器上的定时器B生成PWM波形
华为云企业交换机ESW,助力企业成功上云
什么是柔性电池,折叠手机的现世与他有关
途胜将成为首款提供两种可选轴距的紧凑型跨界车
浪潮与寒武纪签署元脑战略合作协议
机器人(300024)2018年财报公布,净利4.49亿元 同比增长3.93%
嵌入式时钟管理器应该怎样来设计并且实现
程序员应该如何学编程
光纤收发器怎么分ab端 光纤收发器ab端的区别 光纤收发器ab端放哪里
MISRA C在安全可靠的编程中的地位
如何选择合适的三相稳压器?
发光二极管的识别,发光二极管的应用
丰田与NTT达成合作,将携手打造智慧城市平台
索尼PS5国行版发布时间曝光
IR2304的工作原理