1 PWM简介
脉冲宽度调制(PWM) ,是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。
在瑞萨RA6E2系列 MCU 中有两种定时器,一种是通用 PWM 定时器 GPT,另外一种是异步通用定时器 AGT,在这里我们使用通用定时器GPT进行PWM输出。

[]()[]()Figure ‑ GPT 外设模块的结构框图
RA6E2系列共有共 6 个GPT定时器(即6个通道)。GPT 的计数器支持递增计数,递减计数和递增/递减计数。详细的通道名称如下表所示。

[]()[]()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引脚。

[]()[]()Figure ‑ 打开GPT输出引脚
接下来就是添加PWM stack。

[]()[]()Figure ‑ 添加PWM stack
接下来需要配置PWM的参数。

[]()[]()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之后,会默认关联
最后生成过程即可。
- 配置组件
然后打开对应的通道。

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 测试验证
编译下载,调试信息如下:

接下来就看看PWM的输出,PWM 信号可以通过示波器看到,下面笔者就是用逻辑分析仪查看波形。
首先笔者使用的逻辑分析仪是Kingst LA5016,当然啦,其他的也可以,关于逻辑分析仪的相关使用笔者这里就不介绍了,可以查看官方资料。
首先将P111引脚接到逻辑分析仪的CH0,然后下载程序到板子中,打开Kingst VIS,然后进行采样。

[]()[]()Figure ‑ PWM输出实现现象
从上图可以看到,实际测量的频率和占空比与理论是相符的。
-
mcu
+关注
关注
147文章
19116浏览量
403516 -
瑞萨
+关注
关注
38文章
22517浏览量
91167 -
计数器
+关注
关注
32文章
2321浏览量
98534 -
定时器
+关注
关注
23文章
3372浏览量
124473
发布评论请先 登录
【EK-RA6E2开发指南】PWM输出
评论