0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【EK-RA6E2开发指南】PWM输出

嵌入式大杂烩 来源:嵌入式大杂烩 2025-09-23 18:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 PWM简介

脉冲宽度调制(PWM) ,是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。

瑞萨RA6E2系列 MCU 中有两种定时器,一种是通用 PWM 定时器 GPT,另外一种是异步通用定时器 AGT,在这里我们使用通用定时器GPT进行PWM输出。

1.png

[]()[]()Figure ‑ GPT 外设模块的结构框图

RA6E2系列共有共 6 个GPT定时器(即6个通道)。GPT 的计数器支持递增计数,递减计数和递增/递减计数。详细的通道名称如下表所示。

2.png

[]()[]()Figure ‑ GPT各个通道详情

PWM 输出就是对外输出脉宽(即占空比)可调的方波信号, 信号频率由周期设定寄存器 GTPR 的值决定,占空比由比较寄存器 GTCCR 的值决定。

2 RT-Thread 的PWM简介

PWM(Pulse Width Modulation , 脉冲宽度调制) 是一种对模拟信号电平进行数字编码的方法,通过不同频率的脉冲使用方波的占空比用来对一个具体模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替所需要波形的设备。

在开启 PWM 设备框架以及 PWM驱动之后,应用程序通过 RT-Thread 提供的 PWM设备管理接口来访问 PWM设备,相关接口如下所示:

函数描述
rt_device_find()根据PWM设备名称查找设备获取设备句柄
rt_pwm_set()设置PWM周期和脉冲宽度
rt_pwm_enable()使能PWM设备
rt_pwm_disable()关闭PWM设备

关于PWM的更多资料请参看RT-Thread官方手册:

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm

3 PWM实例

3.1 RA6E2 PWM配置

接下来配置PWM,只需要简单配置就可使用。

  • FSP配置PWM

打开RA Smart Configurator,在配置界面里面依次打开“Pins->Peripherals->Timers:GPT”配置GPT模块,将GPT3 的 GTIOC3A 信号输出连接到 P111引脚。

3.png

[]()[]()Figure ‑ 打开GPT输出引脚

接下来就是添加PWM stack。

4.png

[]()[]()Figure ‑ 添加PWM stack

接下来需要配置PWM的参数。

5.png

[]()[]()Figure ‑ 配置PWM的参数

核心参数如下:

  • Pin Output Support :使能PWM输出
  • Name :设置 GPT 模块名字,这里使用是GPT3,名字就为g_timer3
  • Channel :配置GPT通道,这里使用的第3个通道
  • Mode :配置 GPT 的工作模式为 PWM 输出模式。
  • Period :配置GPT的周期为10 KHz,需要和Period Unit配合使用
  • Period Unit :周期的单位,这里设置为KHz
  • Duty Cycle Percent :设置PWM的占空比,当然也可通过代码修改,这里就设置为50
  • GTIOCA Output Enabled :使能 GTIOCA 输出
  • GTIOCA Stop Level :设置定时器停止时 GTIOCA 输出的电平为低电平
  • GTIOC3A :选择连接到 P111引脚,打开GPT的Pin之后,会默认关联

最后生成过程即可。

  • 配置组件

然后打开对应的通道。

6.png

3.2 PWM输出代码实现

核心代码如下:

#define PWM_DEV_NAME     "pwm3"
#define PWM_DEV_CHANNEL  0

void open_pwm_output(void)
{
    struct rt_device_pwm *pwm_dev;
    /* turn on the LCD backlight */

    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);

    /* pwm frequency:100K = 10000ns */
    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, 10000, 5000);
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
}

3.3 测试验证

编译下载,调试信息如下:

7.png

接下来就看看PWM的输出,PWM 信号可以通过示波器看到,下面笔者就是用逻辑分析仪查看波形。

首先笔者使用的逻辑分析仪是Kingst LA5016,当然啦,其他的也可以,关于逻辑分析仪的相关使用笔者这里就不介绍了,可以查看官方资料。

首先将P111引脚接到逻辑分析仪的CH0,然后下载程序到板子中,打开Kingst VIS,然后进行采样。

8.png

[]()[]()Figure ‑ PWM输出实现现象

从上图可以看到,实际测量的频率和占空比与理论是相符的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19116

    浏览量

    403516
  • 瑞萨
    +关注

    关注

    38

    文章

    22517

    浏览量

    91167
  • 计数器
    +关注

    关注

    32

    文章

    2321

    浏览量

    98534
  • 定时器
    +关注

    关注

    23

    文章

    3372

    浏览量

    124473
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    EK-RA6E2开发指南】ADC获取电压值

    RA6E22个ADC单元,每个ADC单元有12位、10位、8位读取数据的格式可以选择,在单元0上有13个ADC通道,而在单元1上有16个ADC通道。 ADC单元具有三种扫描方式分别为:单次描模式、连续扫描模式和分组扫描模式,
    的头像 发表于 09-23 18:15 2174次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】ADC获取电压值

    EK-RA6E2开发指南】DAC设置电压值

    RA6E2有片上DAC外设,总共有两路DAC输出通道,每路的分辨率可配置为12位, 这两个通道之间互不影响,每个通道都可以使用ELC功能可外部触发或者进行与ADC单元1的同步转换。
    的头像 发表于 09-23 18:16 2209次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】DAC设置电压值

    EK-RA2E2-快速入门指南

    EK-RA2E2-快速入门指南
    发表于 01-30 18:47 0次下载
    <b class='flag-5'>EK-RA2E2</b>-快速入门<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入门指南

    EK-RA2E1 – 快速入门指南
    发表于 02-03 19:08 0次下载
    <b class='flag-5'>EK-RA2E</b>1 – 快速入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 03-13 19:36 0次下载
    <b class='flag-5'>EK-RA6M2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用户手册

    EK-RA6E2 v1 – 用户手册
    发表于 05-12 19:18 0次下载
    <b class='flag-5'>EK-RA6E2</b>v1 – 用户手册

    EK-RA6E2– 快速入门指南

    EK-RA6E2 – 快速入门指南
    发表于 05-12 19:20 1次下载
    <b class='flag-5'>EK-RA6E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入门指南

    EK-RA4E2 – 快速入门指南
    发表于 05-12 19:23 0次下载
    <b class='flag-5'>EK-RA4E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用户手册

    EK-RA6E2 v1 – 用户手册
    发表于 06-29 19:10 1次下载
    <b class='flag-5'>EK-RA6E2</b>v1 – 用户手册

    EK-RA6E2– 快速入门指南

    EK-RA6E2 – 快速入门指南
    发表于 06-29 19:11 1次下载
    <b class='flag-5'>EK-RA6E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入门指南

    EK-RA4E2 – 快速入门指南
    发表于 06-29 19:14 0次下载
    <b class='flag-5'>EK-RA4E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA2E2-快速入门指南

    EK-RA2E2-快速入门指南
    发表于 07-03 20:12 0次下载
    <b class='flag-5'>EK-RA2E2</b>-快速入门<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入门指南

    EK-RA2E1 – 快速入门指南
    发表于 07-04 19:40 0次下载
    <b class='flag-5'>EK-RA2E</b>1 – 快速入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 07-04 20:54 0次下载
    <b class='flag-5'>EK-RA6M2</b>– 快速入门<b class='flag-5'>指南</b>

    Renesas EK - RA8D2评估套件快速上手与定制开发指南

    Renesas EK - RA8D2评估套件快速上手与定制开发指南 在嵌入式开发领域,一款好的评估套件能极大地加速开发进程,帮助
    的头像 发表于 12-26 15:50 630次阅读