27.4
GPT比较匹配功能详解
比较匹配主要是用来实现输出PWM波形功能的一种机制。其原理简单来讲就是通过比较GTCNT计数器的值与GTCCRA或GTCCRB的值,当比较匹配发生时,会生成相应的比较匹配事件信号,同时,GPT可以切换GTIOCnA或GTIOCnB输出引脚的输出信号,可以选择输出低电平、高电平或翻转输出。在GTCNT完成一个周期的计数时,也可以切换GTIOCnA或GTIOCnB输出引脚的输出信号。
PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由周期设定寄存器GTPR的值决定,占空比由比较寄存器GTCCR的值决定。
GPT的输出模式有:
锯齿波PWM模式(Saw-wave PWMmode)(该模式下单缓冲或双缓冲都可使用)
锯齿波单脉冲模式(Saw-waveone-shotpulsemode)(该模式下使用固定的缓冲操作)
三角波PWM模式1(Triangle-wave PWMmode1)(波谷32位传输)(该模式下单缓冲或双缓冲都可使用)
三角波PWM模式2(Triangle-wave PWMmode2)(波峰和波谷32位传输)(该模式下单缓冲或双缓冲都可使用)
三角波PWM模式3(Triangle-wavePWMmode3)(波谷64位传输)(该模式下使用固定的缓冲操作)
我们在前面有提到过每个GPT定时器模块内部都有6个GTCCRx寄存器(x=A,B,C,D,E,F),下面就先来了解一下有关GTCCRx的缓冲操作。
单缓冲操作:
以GTIOCA输出为例,若需要修改占空比,则需要在GTCCRC写入要修改的比较值,GTCNT计数完成后则会将GTCCRC的值写入GTCCRA,如下图所示。

点击可查看大图
双缓冲操作:
在三角波PWM输出模式下,GTCCRA/GTCCRB各有两个缓存,缓存传输的顺序分别为:
GTCCRD->GTCCRC->GTCCRA
GTCCRF->GTCCRE->GTCCRB
以GTIOCA为例,如下图所示。

点击可查看大图
27.4.1
锯齿波PWM模式(普通PWM模式)
这里的锯齿波PWM模式即我们通常一般所说的PWM输出模式,该模式的效果是输出一个普通的PWM波形。其原理是:GTCNT进行递增计数,当GTCNT与GTCCRA/GTCCRB比较相等时,输出到GTIOCn A/GTIOCnB引脚的PWM波形发生变化(一般是翻转电平),然后当GTCNT计数到GTPR周期设置寄存器的值相等后,在下一个时钟计数是计数器清零,此时输出到GTIOCnA/GTIOCnB引脚的PWM波形也发生变化。在这整个过程中,GTCNT计数器的计数值以锯齿波的方式变化(计数器递增计数或递减计数)。
注
这里的锯齿波指的是,GTCNT计数器的值以锯齿波的方式变化,也就是GTCNT向上递增计数或向下递减计数,并不是指GTIOCnA和GTIOCnB这两个IO引脚输出锯齿波,记住无论在哪个PWM模式下,IO引脚输出的都是逻辑值为0或1的高低电平。
当GTCNT与GTCCRA/GTCCRB相等,以及GTCNT完成一个周期的计数时,IO引脚切换为高电平、低电平、翻转电平或者维持电平不变。具体可以由寄存器GTIOR的位段GTIOB/GTIOA控制,这个位段的控制逻辑如下表所示。b4为1时,初始化电平为高电平,其他与下表相同,为节省篇幅,省略这一部分。

点击可查看大图
在锯齿波PWM模式下可使用单缓冲操作或者双缓冲操作。在单缓冲操作模式下,GTCCRC作为GTCCRA的缓存,GTCCRE作为GTCCRB的缓存。如下图所示的示例是在GTCNT向上计数,发生比较匹配时输出高电平,计数周期结束时输出低电平,即GTIOA/GTIOB的b3~b0依次为0110时,GTIOCx A/GTIOCx B引脚的输出时序。
锯齿波PWM模式的输出波形时序图如下图所示。

点击可查看大图
27.4.2
三角波PWM模式1(波谷32位传输)
这里的三角波同样指的是,GTCNT内的值以三角波的方式变化,也就是GTCNT向上递增计数接着向下计数递减计数。其他地方与锯齿波PWM模式基本相同。如下图所示的示例是在初始化时GTIOCn A输出低电平,GTIOCnB输出高电平,当GTCCRA/GTCCRB发生比较匹配时,GTIOCxA/GTIOCxB反转电平,GTIOCxA/GTIOCxB的输出时序。
三角波PWM模式1的输出波形时序图如下图所示。

点击可查看大图
27.4.3
三角波PWM模式2(波峰和波谷32位传输)
该模式与三角波PWM模式1的区别在于在波峰和波谷都会传输缓冲。也属于单缓冲操作。
三角波PWM模式2的输出波形时序图如下图所示。

27.4.4
三角波PWM模式3(波谷64位传输)
该模式与三角波PWM模式1一样都是在波谷传输缓冲,区别在于该模式属于双缓冲操作。
三角波PWM模式3的输出波形时序图如下图所示。

点击可查看大图
27.4.5
设置死区时间
死区时间可通过设置GTCCRA/GTCCRB来配置。自动死区时间设置功能可用于锯齿波单脉冲模式和所有三角波PWM模式。
27.5
GPT输入捕获功能详解
输入捕获是定时器的一项非常重要的功能。通过输入捕获功能,我们可以测量高低电平脉冲的脉宽、信号的周期、频率和PWM占空比等。
在检测到在GTICASR和GTICBSR中设置的硬件源时,可以将GTCNT计数器值传输到GTCCRA或GTCCRB,这便是GPT的输入捕获功能。“输入捕获”根据“输入”来触发“捕获”GTCNT计数器的值,更加具体地说:硬件在检测到我们所设置的硬件源时,“捕获”GTCNT计数器的值并转存到GTCCRA或GTCCRB寄存器。
我们可以设置如下硬件源来触发执行输入捕获:
在GTETRGA引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGA引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGB引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGB引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGC引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGC引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGD引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
在GTETRGD引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnB输入为0时,在GTIOCnA引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnB输入为1时,在GTIOCnA引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnB输入为0时,在GTIOCnA引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnB输入为1时,在GTIOCnA引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnA输入为0时,在GTIOCnB引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnA输入为1时,在GTIOCnB引脚输入的上升沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnA输入为0时,在GTIOCnB引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
当GTIOCnA输入为1时,在GTIOCnB引脚输入的下降沿启用或禁用GTCCRA/GTCCRB的输入捕捉。
下图所示的示例清晰地展示了输入捕获的功能。在该示例中,GTCNT计数器通过计数时钟进行递增计数,并且设置为在GTIOCn A输入引脚的两个边沿执行GTCCRA的输入捕捉,在GTIOCn B输入引脚的上升沿执行GTCCRB的输入捕捉。

点击可查看大图
未完待续
全部0条评论
快来发表一下你的评论吧 !