RA6M3定时器配置详解:GPT2与GPT6对比

以下依据 configuration_rtduino.xml 里两段模块配置,对 g_timer2g_timer6 做结构化说明(数据以当前磁盘文件为准)。


共性:驱动与硬件单元

两者都属于 Renesas FSP 的 General PWM Timer 驱动(r_gpt ,挂在同一 GPT 全局配置 下:参数检查随 BSP、支持引脚输出、写保护关闭,GPT 内核时钟为 PCLK (见 config.driver.gpt)。在代码里一般通过 g_timer2 / g_timer6 控制块配合 R_GPT_* API 使用(具体类型名以 FSP 生成代码为准)。


g_timer2(GPT 通道 2)

在 XML 中的位置: module.driver.timer_on_gpt.1304889876

基本定时参数

属性 说明
名称 g_timer2 实例名,与生成符号一致
通道 2 硬件 GPT2
模式 PWM 用于脉宽调制波形
周期 0x100000000 单位为 Raw counts,由 FSP 换算为寄存器装载值
占空比 50% 仅在 PWM 下生效

对应片段:

317:336:D:\code\rt-thread\5.2.2_260513\5.2.2\bsp\renesas\ra6m3-hmi-board\rt-studio-project\configuration_rtduino.xml 复制代码
    <module id="module.driver.timer_on_gpt.1304889876">
      <property id="module.driver.timer.name" value="g_timer2"/>
      <property id="module.driver.timer.channel" value="2"/>
      <property id="module.driver.timer.mode" value="module.driver.timer.mode.mode_pwm"/>
      <property id="module.driver.timer.period" value="0x100000000"/>
      <property id="module.driver.timer.unit" value="module.driver.timer.unit.unit_period_raw_counts"/>
      ...
      <property id="module.driver.timer.duty_cycle" value="50"/>
      <property id="module.driver.timer.gtioca_output_enabled" value="module.driver.timer.gtioca_output_enabled.false"/>
      ...
      <property id="module.driver.timer.gtiocb_output_enabled" value="module.driver.timer.gtiocb_output_enabled.true"/>

引脚与输出使能

  • GTIOCA: 输出 关闭(不在此脚出 GPT 波形);停止电平配置为低(对"未使用的一路"仍保留默认安全电平)。
  • GTIOCB: 输出 开启 ,停止电平
  • 引脚配置(Pin 表): GPT2 的 GTIOCB → P712 ;GPT2 模式为 gtiocaorgtiocb.free(与"单路或另一路空闲"类复用一致)。

因此 g_timer2 的 PWM 实际只从 P712(GTIOCB)引出;GTIOCA 不参与输出。

波形与 GTIOR

  • Custom waveform: 关闭。
  • GTIOR: A/B 两路初始为低;周期结束与比较匹配时多为 retain(保持);计数停止时不做 retain。这是 FSP 对 GTIO 行为的基础设定,与 PWM 边沿一起由硬件解释。

输入 / 事件 / 安全

  • Count up/down、start/stop/clear、capture A/B 源: 均为空,表示未接 ELC/外部硬件事件链。
  • 输入滤波: A/B 均为 none。
  • POEG: 链接到 POEG0(过流关断等若启用会与此组关联;当前未展开其它关断源)。
  • 死区、ADC 触发、ADC 比较匹配: 均为 0 或未配置。
  • Interrupt skip: 关闭。

中断与回调

  • 回调: NULL
  • Overflow/Crest、Capture A/B、Underflow/Trough: 优先级均为 _disabled

含义:没有周期到点中断,应用不能靠该定时器中断做调度,除非后来在 FSP 里打开中断并注册回调;或在上层用别的定时源。


g_timer6(GPT 通道 6)

在 XML 中的位置: module.driver.timer_on_gpt.1221002445

基本定时参数

属性 说明
名称 g_timer6 实例名
通道 6 硬件 GPT6
模式 Periodic 周期定时/计数模式,不是以占空比为主参数的 PWM 应用方式
周期 78 单位为 Kilohertz ,即 FSP 按时钟换算成约 78 kHz 的周期频率
占空比 50(XML 仍有该字段) Periodic 下 通常不按 PWM 占空比使用;界面也会提示仅 PWM 适用,可视为未参与周期定时的残留显示值
461:480:D:\code\rt-thread\5.2.2_260513\5.2.2\bsp\renesas\ra6m3-hmi-board\rt-studio-project\configuration_rtduino.xml 复制代码
    <module id="module.driver.timer_on_gpt.1221002445">
      <property id="module.driver.timer.name" value="g_timer6"/>
      <property id="module.driver.timer.channel" value="6"/>
      <property id="module.driver.timer.mode" value="module.driver.timer.mode.mode_periodic"/>
      <property id="module.driver.timer.period" value="78"/>
      <property id="module.driver.timer.unit" value="module.driver.timer.unit.unit_frequency_khz"/>
      ...
      <property id="module.driver.timer.duty_cycle" value="50"/>
      <property id="module.driver.timer.gtioca_output_enabled" value="module.driver.timer.gtioca_output_enabled.true"/>
      ...
      <property id="module.driver.timer.gtiocb_output_enabled" value="module.driver.timer.gtiocb_output_enabled.true"/>

引脚与输出使能

  • GTIOCA / GTIOCB: 两路输出 均开启 ,停止电平均为
  • 引脚配置: GTIOCA → P702GTIOCB → P703 ;GPT6 模式为 gtiocaandgtiocb.free(A、B 两路相关复用模式与双路输出一致)。

因此 g_timer6 在 Periodic 下仍可在 P702、P703 上产生与周期相关的 GTIO 行为(具体波形形状由 Periodic + GTIOR 决定,与 PWM 的"固定占空比方波"语义不同)。

波形与 GTIOR

g_timer2 同类:Custom waveform 关;A/B 初始低、周期末/比较匹配多为 retain、停止时不 retain。Periodic 更强调"周期长度",两路 GTIO 可同时参与硬件定义的翻转逻辑。

输入 / 事件 / 安全

g_timer2 相同一类默认值:无 ELC 源、无滤波、POEG0、死区/ADC 相关为 0 或未配、interrupt skip 关。

中断与回调

g_timer2 相同:无回调、无各通道定时器中断

含义:若需要 78 kHz 的软件节拍 ,当前配置不能 依赖溢出中断,需改 FSP 打开 crest/overflow 中断,或改用 SysTick/其它定时器;若仅需要 P702/P703 上的周期波形,则依赖硬件自动行为即可(仍建议对照 RA 手册中 Periodic 下 GTIO 的时序图确认是否符合板级需求)。


两者对照小结

对比项 g_timer2 g_timer6
硬件通道 GPT 2 GPT 6
模式 PWM Periodic
周期表达方式 Raw counts,0x100000000 78 kHz(由 FSP 换算)
占空比 50%,有效 字段为 50,Periodic 下通常无效
GTIOCA 开 → P702
GTIOCB 开 → P712 开 → P703
引脚模式(Pin 表) gpt2 单路 B 等 gpt6 A+B 双路
中断 全关 全关

在工程里怎么理解用途(推断)

  • g_timer2 典型 单引脚 PWM (如电机、背光、蜂鸣器方波等),当前为 50% 占空比 ;精确频率需结合 PCLK 与 FSP 对 0x100000000 的换算 核对,若要固定某 Hz,建议在 FSP 改为 kHz/µs 或明确 raw 值后重新生成。
  • g_timer6 典型 固定频率周期基准 (约 78 kHz ),双引脚 可做同步方波或互补时序(仍须对照手册与 GTIOR);无中断 时更适合"纯硬件波形"或与其它外设联动,不适合当前配置下的"每周期进一次 ISR"。

若你接下来要对接 RT-Thread / RTduino 的 analogWritetone ,通常会更关心 g_timer2 的 PWM 频率与 P712g_timer6 则需确认板卡原理图上 P702/P703 实际接到了什么负载再决定是否改模式或关某一路输出。

如需把 0x100000000 在你当前 BSP 时钟下换算成具体 Hz ,可以说一下 PCLKD/PCLKB 与 GPT 时钟源 (或贴 clock/bsp 里相关配置),我可以按文档公式帮你推一版数字。

相关推荐
xzl048 天前
LVGL显示移植:lv_port_disp.c 详情介绍
rt-thread·lvgl·ra6m3-hmi-board
xzl0411 天前
LVGL输入移植:lv_port_indev.c 详情介绍
lvgl·ra6m3-hmi-board
xzl0420 天前
GLCDC参数全解析:从配置到亮屏的完整指南
renesas·ra6m3-hmi-board