【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM

【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM

本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计。

项目介绍

介绍了 PWM 和 RA2E1 的 PWM 资源。

PWM

脉冲宽度调制(Pulse Width Modulation, PWM)是一种对模拟信号电平进行数字编码的方法。

在这里插入图片描述

PWM 的工作原理是通过调节脉冲信号的占空比(即高电平持续时间与整个周期的比值)来控制输出信号的平均电压或平均功率。

特点
  • 高效性:在调节功率时,PWM方式避免了传统线性调节方式中电阻发热造成的能量损耗,能将大部分能量有效地传递到负载,效率通常可达80% - 90%以上。
  • 精确控制:可以通过微处理器或专用的PWM控制器,精确地控制脉冲的宽度和频率,实现对电机转速、灯光亮度等物理量的精确调节。
  • 抗干扰能力强:数字信号相比模拟信号具有更强的抗干扰能力,PWM信号在传输过程中不易受到噪声干扰,能够保证控制信号的准确性。
应用领域
  • 电机控制:广泛应用于直流电机和步进电机的调速控制。通过改变PWM信号的占空比,可以轻松地调节电机两端的平均电压,从而控制电机的转速。
  • 电源管理:在开关电源中,PWM技术用于控制功率开关管的导通和关断,实现对输出电压的稳定调节。此外,还可用于电池充电管理,根据电池的充电状态调整充电电流和电压。
  • 音频处理:在音频功率放大器中,利用PWM技术将音频信号调制为高频脉冲信号,通过低通滤波器还原出音频信号,可提高音频放大器的效率和音质。
  • LED照明:用于调节LED灯的亮度。通过改变PWM信号的占空比,可以精确地控制LED灯的发光强度,实现节能和调光的目的。

RA2E1的PWM资源

瑞萨RA2E1的PWM资源主要与定时器相关,具体如下:

  • 32位通用PWM定时器(GPT32):1个,GPT 模块是一个高精度定时器,可用于计数事件、测量外部输入信号、生成周期性中断,或输出周期性信号/PWM 信号到 GTIOC 引脚。它使用PCLKD(外设时钟D)作为主时钟源,该时钟可以通过可配置的分频器进行调整,最大分频因子为1024;
  • 16位通用PWM定时器(GPT16):6个,可用于多种定时和 PWM 相关的应用。每个计数器支持递增计数或递减计数(锯齿波)或递增/递减计数(三角波),每个通道可选择独立时钟源,可控制两个I/O引脚,还可以在每个输入路径上设置噪声滤波器,每个通道有两个输出比较/输入捕捉寄存器及四个缓冲寄存器;
  • 低功耗异步通用定时器(AGT):2个,AGT 模块也提供灵活的计时和事件捕获功能,支持16位和32位定时器,并具有多种工作模式,适用于需要高精度时间控制和事件捕获的应用。

本文介绍了瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板使用内置时钟和 GPT 定时器实现 PWM 输出以及呼吸灯的项目设计流程。

新建工程

在安装 e2 studio 软件和 FSP 软件包的基础上,新建项目工程

打开 e2 studio 软件,依次点击 文件 - 新建 - 瑞萨 C/C++ 项目 - Renesas RA

依次进行工程命名,路径设置,FSP版本,目标开发板选择,Device 选择 R7FA2E1A72DFL ,工具链选择 GNU ARM Embedded

点击 Generate 完成工程创建。

定时器

根据原理图可知,2 个板载 LED 控制引脚为 P103 和 P104(这里选择 P104 作为 PWM 输出引脚进行配置)

在这里插入图片描述

引脚配置

进入 FSP 配置 界面,依次选择 Pins 标签 - GPIO-P104 - 可视化引脚界面;

进入 FSP 芯片视角,右键目标 PWM 输出引脚 P104,选择 GTIOCB 输出;

依次进入 Pin Selection - Timers:GPT - GPT4 - Pin Configuration - Input/Output - 使能定时器对应的引脚输出;

在这里插入图片描述

时钟配置

在这里插入图片描述

PWM堆栈

FSP Configuration - Stacks - 新建堆栈(New Stacks) - 定时器(Timer) - 通用 PWM

在这里插入图片描述

选中新建的 PWM 堆栈,在属性标签中设置参数,开启引脚输出、PWM频道、周期、占空比、使能 GTIOCA 或 GTIOCB 引脚输出等。

生成工程

配置完成后,点击 Generate Project Content 输出相应的工程代码。

代码

打开左侧的工程文件 src/hal_entry.c ,在主函数中添加如下代码

void hal_entry(void)
{
    /* TODO: add your own code here */
    fsp_err_t err = FSP_SUCCESS;
    /* Initializes the module. */
    err = R_GPT_Open(&g_timer4_ctrl, &g_timer4_cfg);
    /* Handle any errors. This function should be defined by the user. */
    assert(FSP_SUCCESS == err);

    /* Start the timer. */
    (void) R_GPT_Start(&g_timer4_ctrl);
    R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
    /* Setting PWM period, clock frequency 48MHz, then pwm frequency is 48MHz/4800 = 10kHz*/
    err = R_GPT_PeriodSet(&g_timer4_ctrl, 4800);//频率
    /* Check period setting*/
    assert(FSP_SUCCESS == err);
    R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功

    /* breath LED */
    uint16_t duty_cycle = 0; // 占空比初始值
    int8_t direction = 1; //

    while(1)
    {
            /* 设置PWM占空比 */
            err = R_GPT_DutyCycleSet(&g_timer4_ctrl, duty_cycle, GPT_IO_PIN_GTIOCB);
            assert(FSP_SUCCESS == err);
            R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
            /* 更新占空比 */
            duty_cycle += (uint16_t) (direction * 400); // 需要强制类型转换

            if (duty_cycle >= 4800)
                    {
                        duty_cycle = 4800;
                        direction = -1;
                    }
            else if (duty_cycle <= 0)
                    {
                        duty_cycle = 0;
                        direction = 1;
                    }
            R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS); //20ms变化一次
        }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

保存并构建工程 - 调试工程。

效果

修改代码中的 duty_cycle += (uint16_t) (direction * 400) 占空比增量,即可实现呼吸灯的速度控制。

在这里插入图片描述

使用示波器查看输出的 PWM 波形

在这里插入图片描述

可知 PWM 频率为 10kHz,占空比随时间在 0 到 1 之间连续变化。

示波器项目详见:基于地阔星STM32F103C8T6的示波器扩展板 - 立创开源硬件平台

总结

本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计,包括方案介绍、项目工程创建、定时器配置、PWM配置、代码解析、效果展示等,为相关项目的开发和应用设计提供了参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值