第27章
GPT——通用PWM定时器
27.1
PWM简介
PWM的全称是脉冲宽度调制(Pulse Width Modulation),简称脉宽调制,通俗的讲就是调节脉冲的宽度。其原理是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率,根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效地获得所需要合成的相应幅值和频率的波形。PWM 有着非常广泛的应用,比如直流电机控制、开关电源、逆变器等等。
PWM波形的基本信息如下图所示。
点击可查看大图
脉冲周期(T):单位是时间,如纳秒(ns)、微秒(us)、毫秒(ms)等。
脉冲频率(f):单位是赫兹(Hz)、千赫兹(KHz)等。频率与脉冲周期成倒数关系,f=1/T。
脉冲宽度(W):简称“脉宽”,一般指脉冲中高电平持续的时间。单位是时间。
占空比(D):脉宽除以脉冲周期的值。
以上各信息之间的关系满足下列公式:

点击可查看大图
27.2
GPT简介
通用PWM定时器(GPT,General PWM Timer)是瑞萨RA MCU的其中一种32/16位的定时器外设。在GPT当中,可分为GPT32和GPT16,它们最主要的区别是计数器的不同。GPT32是32位的定时器,包含的计数器是32位的,所能计数的范围为:0~0xFFFF_FFFF;而GPT16是16位的定时器,包含的计数器是16位的,所能计数的范围为:0~0xFFFF。
定时器(Timer)最基本的功能就是定时,比如定时发送串口数据、定时采集AD数据、定时触发中断处理其它事务等等。如果把定时器与GPIO引脚结合起来使用的话可以实现更加丰富的功能,可以对输入信号进行计数,可以测量输入信号的脉冲宽度,可以输出单个脉冲、PWM等波形,等等。通过定时器生成PWM波形信号来控制电机状态是工业控制的普遍方法。
GPT模块可用于计数事件、测量外部输入信号、作为通用计时器并产生周期性中断、以及输出周期性或PWM信号到GTIOC引脚。GPT也可用于输出单个脉冲,但是注意这是通过软件来实现的,GPT硬件本身不支持输出单个脉冲(One-Shot)功能。当使用单个脉冲(One-Shot)模式时,必须要开启中断,计时器需要在脉冲周期结束后在ISR中断服务函数中被停止。
瑞萨RA MCU的不同型号之间可能拥有不同数量的GPT定时器,例如:
野火启明6M5开发板板载的RA6M5芯片拥有共10个GPT定时器(即10个通道),其中包括4个32位GPT定时器(GPT32n (n=0~3))和6个16位GPT定时器(GPT16m (m=4~9))。
野火启明4M2开发板板载的RA4M2芯片拥有共8个GPT定时器(即8个通道),其中包括4个32位GPT定时器(GPT32n (n=0~3))和4个16位GPT定时器(GPT16m (m=4~7))。
野火启明2L1开发板板载的RA2L1芯片拥有共10个GPT定时器(即10个通道),其中包括4个32位GPT定时器(GPT32n (n=0~3))和6个16位GPT定时器(GPT16m (m=4~9))。
RA6M5/RA2L1的GPT定时器通道与模块名如下图所示:

点击可查看大图
RA4M2的GPT定时器通道与模块名如下图所示:

点击可查看大图
以 RA6M5 为例,GPT 定时器的详细功能参数如下表所示:
GPT 定时器的功能参数| 参数 | 描述 |
|---|---|
| 功能 |
每个计数器的递增计数或递减计数(锯齿波)或递增递减计数(三角波) 每个通道可独立选择时钟源 每个通道两个输入/输出引脚 每个通道两个输出比较/输入捕获寄存器 每个通道的两个输出比较/输入捕获寄存器,提供四个寄存器作为缓冲寄存器,在不使用缓冲时可以作为比较寄存器工作 在输出比较操作中,缓冲器切换可以处于波峰或波谷,从而能够生成横向不对称的PWM波形 用于在每个通道中设置帧周期的寄存器,能够在上溢或下溢时产生中断 在 PWM 操作中产生死区时间 任意通道同步启动、停止和清除计数器 响应最多8个ELC事件的计数开始、计数停止、计数清除、递增计数、递减计数或输入捕获操作 根据两个输入引脚的状态进行计数开始、计数停止、计数清除、递增计数、递减计数或输入捕捉操作 可响应最多4个外部触发器以进行计数开始、计数停止、计数清除、递增计数、递减计数或输入捕捉操作 通过检测输出引脚之间的短路,从而禁用输出引脚的功能 可以产生控制无刷直流电机的 PWM 波形 比较匹配 A 到 F 事件、上溢下溢事件和输入 UVW 边缘事件可以输出到 ELC 可为输入捕获和输入 UVW 启用噪声滤波器 周期计数功能 通道输出之间的逻辑运算 总线时钟:PCLKA,核心时钟:PCLKD 频率比:PCLKA:PCLKD = 1:N(N = 1/2/4/8/16/32/64) |
| 计数时钟源 |
PCLKD/n(n = 1/2/4/8/16/32/64/256/1024) GTETRGn(n = A, B, C, D) |
| 中断源(9个源) |
GTCCRA 比较匹配/输入捕获(GPTn_CCMPA) GTCCRB 比较匹配/输入捕获(GPTn_CCMPB) GTCCRC 比较匹配(GPTn_CMPC) GTCCRD 比较匹配(GPTn_CMPD) GTCCRE 比较匹配(GPTn_CMPE) GTCCRF 比较匹配(GPTn_CMPF) GTCNT 上溢(GPTn_OVF) GTCNT 下溢(GPTn_UDF) GTPC 计数停止(GPTx_PC,x = 0,1,4-6) |
以RA6M5为例,GPT的I/O引脚及其功能用途如下表所示:

点击可查看大图
27.3
GPT的框图分析
如下图所示,为RA6M5芯片GPT外设模块的结构框图:

点击可查看大图
27.3.1
计数器
见图中标注①处。
GTCNT是GPT定时器模块内部的计数器,实际上,计数器是实现定时器外设的各种功能的基础。因此,了解计数器的规格和功能非常重要。
对于RA6M5,共有10个GPT定时器(GPT0~9),而GPT又分为GPT32和GPT16。GPT32有4个(GPT0~3),计数器为32bit,在上图中用GPT320~GPT323来表示;而GPT16有6个(GPT4~9),计数器为16bit,在上图中用GPT164~GPT169来表示。
GPT的计数器支持递增计数,递减计数和递增/递减计数(即递增与递减计数轮流进行)。
27.3.2
时钟输入
见图中标注②处。
GPT定时器的时钟输入可以选择内部的PCLKD分频后输入或者选择通过GTETRGn引脚输入外部时钟。这两类中只能选择一个,若选择外部时钟输入则定时器不能对内部时钟输入进行计数。
PCLKD/n(n=1/2/4/8/16/32/64/256/1024)
GTETRGA,GTETRGB,GTETRGC, GTETRGD(通过POEG)
注
PCLKD/1表示的是不分频。
27.3.3
周期设置和周期设置缓冲寄存器
见图中标注③处。
GTPR周期设置寄存器是一个可读写的寄存器,用户可通过该寄存器设置计数器GTCNT的最大计数值,计数超过该值就会溢出,因此该值决定了计数器的计数周期。GTPR的有效大小与GTCNT(16位或32 位)相同。如果GTPR的有效大小为16位,则用户读取其高16位始终为0,并且其高16位的写入作会被忽略。
GTPBR周期设置缓冲寄存器同样也是一个可读写的寄存器,用作GTPR的缓冲寄存器,GPT计数器每计数溢出一次,就会将GTPBR的值写入GTPR。GTPBR的有效大小也与GTCNT(16位或32位)相同。如果GTPBR的有效大小为16位,则用户读取其高16位始终为0,并且其高16位的写入作会被忽略。
27.3.4
控制寄存器
见图中标注④处。
这部分的寄存器较多、也较复杂,它们都属于用于控制定时器功能的寄存器。
27.3.5
比较器和比较/输入捕获寄存器
见图中标注⑤处。
这部分包含一个比较器和6个GTCCRx寄存器(x= A,B,C,D,E,F)。这6个GTCCRx寄存器的功能并不完全相同:
GTCCRA和GTCCRB是用于输出比较和输入捕捉的寄存器。
GTCCRC和GTCCRE可用作比较匹配寄存器,也可以分别作为GTCCRA和GTCCRB 的缓冲寄存器(构成GTCCRA和GTCCRB 的单缓冲寄存器)。
GTCCRD和GTCCRF可用作比较匹配寄存器,也可以分别作为GTCCRC和GTCCRE 的缓冲寄存器(构成GTCCRA和GTCCRB 的双缓冲寄存器:即GTCCRC和GTCCRD 作为GTCCRA的双缓冲,GTCCRE和GTCCRF作为GTCCRB的双缓冲)。
比如,在普通的PWM输出模式下,比较器将计数器GTCNT与GTCCRA和GTCCRB进行比较,若匹配(比较结果相等),则根据GTIOR(General PWM Timer I/O Control Register)寄存器的GTIOA[4:0] 和GTIOB[4:0]的配置来切换GTIOCA和GTIOCB的输出电平。可以将GTIOCA和GTIOCB切换为低电平、高电平、或者反转电平。
27.3.6
中断请求信号
见图中标注⑥处。
图中显示的是GPT0的中断请求信号,中断请求信号用于产生中断、或者通过ELC链接到其他模块。
GPT提供以下中断源:
GTCCR输入捕捉/比较匹配
GTCNT计数器上溢(超出GTPR设置的值)/下溢
周期计数功能完成
每个中断源都有自己的状态标志。当一个中断源信号产生时,相关的状态标志会被硬件自动设置为1。状态标志可以通过写入0来清除。需要注意的是,如果标志设置和标志清除同时发生,标志清除优先于标志设置。
27.3.7
IO输入输出引脚
见图中标注⑦处。
GTIOCnA和GTIOCnB是GPT的IO输入输出引脚,用于信号输出和输入捕获。它们还配备了噪声滤波器(Noise Filter),噪声滤波器以采样时钟对输入信号进行采样,并去除长度小于3个采样周期的脉冲。用户可设置是否启用噪声滤波器。
噪声滤波器功能的时序图如下所示:

27.3.8
ELC事件输入
见图中标注⑧处。
GPT可以执行以下操作以响应最多8个来自ELC的事件信号输入:
开始计数,停止计数,清除计数
递增计数,递减计数
进行一次输入捕获
27.3.9
输出相位切换
见图中标注⑨处。
输出相位切换(GPT_OPS)功能通过输出相位切换控制寄存器(OPSCR)进行控制,用于实现轻松控制无刷直流电机运行的功能。图中的三相PWM波形生成器接收来自比较器的GPT320.GTIOC0A的PWM 信号输入后,输出三相PWM用于驱动直流无刷电机。
注:
GPT_OPS功能在RA6M5中只有一个,并不是每个GPT定时器都对应有一个,也就是说通过该功能只能轻松控制一个直流无刷电机。
未完待续
全部0条评论
快来发表一下你的评论吧 !